From 923914edaedd9f49bcfb069417b9c134c9427704 Mon Sep 17 00:00:00 2001 From: ant <13826173658@163.com> Date: Wed, 14 Sep 2016 21:10:35 +0800 Subject: [PATCH] motify arm-none-eabi-gcc motify arm-none-eabi-gcc --- .../arm-none-eabi/bin/ar | Bin 0 -> 734544 bytes .../arm-none-eabi/bin/as | Bin 0 -> 1222168 bytes .../arm-none-eabi/bin/g++ | Bin 0 -> 679412 bytes .../arm-none-eabi/bin/gcc | Bin 0 -> 676532 bytes .../arm-none-eabi/bin/ld.bfd | Bin 0 -> 1010892 bytes .../arm-none-eabi/bin/nm | Bin 0 -> 718268 bytes .../arm-none-eabi/bin/objcopy | Bin 0 -> 885348 bytes .../arm-none-eabi/bin/objdump | Bin 0 -> 1066044 bytes .../arm-none-eabi/bin/ranlib | Bin 0 -> 734544 bytes .../arm-none-eabi/bin/strip | Bin 0 -> 885348 bytes .../arm-none-eabi/include/_ansi.h | 144 + .../arm-none-eabi/include/_syslist.h | 40 + .../arm-none-eabi/include/alloca.h | 21 + .../arm-none-eabi/include/ar.h | 69 + .../arm-none-eabi/include/argz.h | 33 + .../arm-none-eabi/include/assert.h | 50 + .../arm-none-eabi/include/c++/4.8.3/algorithm | 68 + .../arm-none-eabi/armv6-m/bits/atomic_word.h | 47 + .../arm-none-eabi/armv6-m/bits/basic_file.h | 110 + .../arm-none-eabi/armv6-m/bits/c++allocator.h | 55 + .../arm-none-eabi/armv6-m/bits/c++config.h | 1666 +++++ .../4.8.3/arm-none-eabi/armv6-m/bits/c++io.h | 50 + .../arm-none-eabi/armv6-m/bits/c++locale.h | 92 + .../arm-none-eabi/armv6-m/bits/cpu_defines.h | 33 + .../arm-none-eabi/armv6-m/bits/ctype_base.h | 60 + .../arm-none-eabi/armv6-m/bits/ctype_inline.h | 74 + .../armv6-m/bits/cxxabi_tweaks.h | 82 + .../armv6-m/bits/error_constants.h | 178 + .../4.8.3/arm-none-eabi/armv6-m/bits/extc++.h | 71 + .../arm-none-eabi/armv6-m/bits/gthr-default.h | 298 + .../arm-none-eabi/armv6-m/bits/gthr-posix.h | 889 +++ .../arm-none-eabi/armv6-m/bits/gthr-single.h | 298 + .../4.8.3/arm-none-eabi/armv6-m/bits/gthr.h | 154 + .../armv6-m/bits/messages_members.h | 92 + .../arm-none-eabi/armv6-m/bits/opt_random.h | 38 + .../arm-none-eabi/armv6-m/bits/os_defines.h | 52 + .../4.8.3/arm-none-eabi/armv6-m/bits/stdc++.h | 117 + .../arm-none-eabi/armv6-m/bits/stdtr1c++.h | 53 + .../arm-none-eabi/armv6-m/bits/time_members.h | 92 + .../arm-none-eabi/armv6-m/ext/opt_random.h | 38 + .../armv7-ar/thumb/bits/atomic_word.h | 47 + .../armv7-ar/thumb/bits/basic_file.h | 110 + .../armv7-ar/thumb/bits/c++allocator.h | 55 + .../armv7-ar/thumb/bits/c++config.h | 1666 +++++ .../arm-none-eabi/armv7-ar/thumb/bits/c++io.h | 50 + .../armv7-ar/thumb/bits/c++locale.h | 92 + .../armv7-ar/thumb/bits/cpu_defines.h | 33 + .../armv7-ar/thumb/bits/ctype_base.h | 60 + .../armv7-ar/thumb/bits/ctype_inline.h | 74 + .../armv7-ar/thumb/bits/cxxabi_tweaks.h | 82 + .../armv7-ar/thumb/bits/error_constants.h | 178 + .../armv7-ar/thumb/bits/extc++.h | 71 + .../armv7-ar/thumb/bits/gthr-default.h | 298 + .../armv7-ar/thumb/bits/gthr-posix.h | 889 +++ .../armv7-ar/thumb/bits/gthr-single.h | 298 + .../arm-none-eabi/armv7-ar/thumb/bits/gthr.h | 154 + .../armv7-ar/thumb/bits/messages_members.h | 92 + .../armv7-ar/thumb/bits/opt_random.h | 38 + .../armv7-ar/thumb/bits/os_defines.h | 52 + .../armv7-ar/thumb/bits/stdc++.h | 117 + .../armv7-ar/thumb/bits/stdtr1c++.h | 53 + .../armv7-ar/thumb/bits/time_members.h | 92 + .../armv7-ar/thumb/ext/opt_random.h | 38 + .../armv7-ar/thumb/fpu/bits/atomic_word.h | 47 + .../armv7-ar/thumb/fpu/bits/basic_file.h | 110 + .../armv7-ar/thumb/fpu/bits/c++allocator.h | 55 + .../armv7-ar/thumb/fpu/bits/c++config.h | 1666 +++++ .../armv7-ar/thumb/fpu/bits/c++io.h | 50 + .../armv7-ar/thumb/fpu/bits/c++locale.h | 92 + .../armv7-ar/thumb/fpu/bits/cpu_defines.h | 33 + .../armv7-ar/thumb/fpu/bits/ctype_base.h | 60 + .../armv7-ar/thumb/fpu/bits/ctype_inline.h | 74 + .../armv7-ar/thumb/fpu/bits/cxxabi_tweaks.h | 82 + .../armv7-ar/thumb/fpu/bits/error_constants.h | 178 + .../armv7-ar/thumb/fpu/bits/extc++.h | 71 + .../armv7-ar/thumb/fpu/bits/gthr-default.h | 298 + .../armv7-ar/thumb/fpu/bits/gthr-posix.h | 889 +++ .../armv7-ar/thumb/fpu/bits/gthr-single.h | 298 + .../armv7-ar/thumb/fpu/bits/gthr.h | 154 + .../thumb/fpu/bits/messages_members.h | 92 + .../armv7-ar/thumb/fpu/bits/opt_random.h | 38 + .../armv7-ar/thumb/fpu/bits/os_defines.h | 52 + .../armv7-ar/thumb/fpu/bits/stdc++.h | 117 + .../armv7-ar/thumb/fpu/bits/stdtr1c++.h | 53 + .../armv7-ar/thumb/fpu/bits/time_members.h | 92 + .../armv7-ar/thumb/fpu/ext/opt_random.h | 38 + .../armv7-ar/thumb/softfp/bits/atomic_word.h | 47 + .../armv7-ar/thumb/softfp/bits/basic_file.h | 110 + .../armv7-ar/thumb/softfp/bits/c++allocator.h | 55 + .../armv7-ar/thumb/softfp/bits/c++config.h | 1666 +++++ .../armv7-ar/thumb/softfp/bits/c++io.h | 50 + .../armv7-ar/thumb/softfp/bits/c++locale.h | 92 + .../armv7-ar/thumb/softfp/bits/cpu_defines.h | 33 + .../armv7-ar/thumb/softfp/bits/ctype_base.h | 60 + .../armv7-ar/thumb/softfp/bits/ctype_inline.h | 74 + .../thumb/softfp/bits/cxxabi_tweaks.h | 82 + .../thumb/softfp/bits/error_constants.h | 178 + .../armv7-ar/thumb/softfp/bits/extc++.h | 71 + .../armv7-ar/thumb/softfp/bits/gthr-default.h | 298 + .../armv7-ar/thumb/softfp/bits/gthr-posix.h | 889 +++ .../armv7-ar/thumb/softfp/bits/gthr-single.h | 298 + .../armv7-ar/thumb/softfp/bits/gthr.h | 154 + .../thumb/softfp/bits/messages_members.h | 92 + .../armv7-ar/thumb/softfp/bits/opt_random.h | 38 + .../armv7-ar/thumb/softfp/bits/os_defines.h | 52 + .../armv7-ar/thumb/softfp/bits/stdc++.h | 117 + .../armv7-ar/thumb/softfp/bits/stdtr1c++.h | 53 + .../armv7-ar/thumb/softfp/bits/time_members.h | 92 + .../armv7-ar/thumb/softfp/ext/opt_random.h | 38 + .../arm-none-eabi/armv7-m/bits/atomic_word.h | 47 + .../arm-none-eabi/armv7-m/bits/basic_file.h | 110 + .../arm-none-eabi/armv7-m/bits/c++allocator.h | 55 + .../arm-none-eabi/armv7-m/bits/c++config.h | 1666 +++++ .../4.8.3/arm-none-eabi/armv7-m/bits/c++io.h | 50 + .../arm-none-eabi/armv7-m/bits/c++locale.h | 92 + .../arm-none-eabi/armv7-m/bits/cpu_defines.h | 33 + .../arm-none-eabi/armv7-m/bits/ctype_base.h | 60 + .../arm-none-eabi/armv7-m/bits/ctype_inline.h | 74 + .../armv7-m/bits/cxxabi_tweaks.h | 82 + .../armv7-m/bits/error_constants.h | 178 + .../4.8.3/arm-none-eabi/armv7-m/bits/extc++.h | 71 + .../arm-none-eabi/armv7-m/bits/gthr-default.h | 298 + .../arm-none-eabi/armv7-m/bits/gthr-posix.h | 889 +++ .../arm-none-eabi/armv7-m/bits/gthr-single.h | 298 + .../4.8.3/arm-none-eabi/armv7-m/bits/gthr.h | 154 + .../armv7-m/bits/messages_members.h | 92 + .../arm-none-eabi/armv7-m/bits/opt_random.h | 38 + .../arm-none-eabi/armv7-m/bits/os_defines.h | 52 + .../4.8.3/arm-none-eabi/armv7-m/bits/stdc++.h | 117 + .../arm-none-eabi/armv7-m/bits/stdtr1c++.h | 53 + .../arm-none-eabi/armv7-m/bits/time_members.h | 92 + .../arm-none-eabi/armv7-m/ext/opt_random.h | 38 + .../arm-none-eabi/armv7e-m/bits/atomic_word.h | 47 + .../arm-none-eabi/armv7e-m/bits/basic_file.h | 110 + .../armv7e-m/bits/c++allocator.h | 55 + .../arm-none-eabi/armv7e-m/bits/c++config.h | 1666 +++++ .../4.8.3/arm-none-eabi/armv7e-m/bits/c++io.h | 50 + .../arm-none-eabi/armv7e-m/bits/c++locale.h | 92 + .../arm-none-eabi/armv7e-m/bits/cpu_defines.h | 33 + .../arm-none-eabi/armv7e-m/bits/ctype_base.h | 60 + .../armv7e-m/bits/ctype_inline.h | 74 + .../armv7e-m/bits/cxxabi_tweaks.h | 82 + .../armv7e-m/bits/error_constants.h | 178 + .../arm-none-eabi/armv7e-m/bits/extc++.h | 71 + .../armv7e-m/bits/gthr-default.h | 298 + .../arm-none-eabi/armv7e-m/bits/gthr-posix.h | 889 +++ .../arm-none-eabi/armv7e-m/bits/gthr-single.h | 298 + .../4.8.3/arm-none-eabi/armv7e-m/bits/gthr.h | 154 + .../armv7e-m/bits/messages_members.h | 92 + .../arm-none-eabi/armv7e-m/bits/opt_random.h | 38 + .../arm-none-eabi/armv7e-m/bits/os_defines.h | 52 + .../arm-none-eabi/armv7e-m/bits/stdc++.h | 117 + .../arm-none-eabi/armv7e-m/bits/stdtr1c++.h | 53 + .../armv7e-m/bits/time_members.h | 92 + .../arm-none-eabi/armv7e-m/ext/opt_random.h | 38 + .../armv7e-m/fpu/bits/atomic_word.h | 47 + .../armv7e-m/fpu/bits/basic_file.h | 110 + .../armv7e-m/fpu/bits/c++allocator.h | 55 + .../armv7e-m/fpu/bits/c++config.h | 1666 +++++ .../arm-none-eabi/armv7e-m/fpu/bits/c++io.h | 50 + .../armv7e-m/fpu/bits/c++locale.h | 92 + .../armv7e-m/fpu/bits/cpu_defines.h | 33 + .../armv7e-m/fpu/bits/ctype_base.h | 60 + .../armv7e-m/fpu/bits/ctype_inline.h | 74 + .../armv7e-m/fpu/bits/cxxabi_tweaks.h | 82 + .../armv7e-m/fpu/bits/error_constants.h | 178 + .../arm-none-eabi/armv7e-m/fpu/bits/extc++.h | 71 + .../armv7e-m/fpu/bits/gthr-default.h | 298 + .../armv7e-m/fpu/bits/gthr-posix.h | 889 +++ .../armv7e-m/fpu/bits/gthr-single.h | 298 + .../arm-none-eabi/armv7e-m/fpu/bits/gthr.h | 154 + .../armv7e-m/fpu/bits/messages_members.h | 92 + .../armv7e-m/fpu/bits/opt_random.h | 38 + .../armv7e-m/fpu/bits/os_defines.h | 52 + .../arm-none-eabi/armv7e-m/fpu/bits/stdc++.h | 117 + .../armv7e-m/fpu/bits/stdtr1c++.h | 53 + .../armv7e-m/fpu/bits/time_members.h | 92 + .../armv7e-m/fpu/ext/opt_random.h | 38 + .../armv7e-m/softfp/bits/atomic_word.h | 47 + .../armv7e-m/softfp/bits/basic_file.h | 110 + .../armv7e-m/softfp/bits/c++allocator.h | 55 + .../armv7e-m/softfp/bits/c++config.h | 1666 +++++ .../armv7e-m/softfp/bits/c++io.h | 50 + .../armv7e-m/softfp/bits/c++locale.h | 92 + .../armv7e-m/softfp/bits/cpu_defines.h | 33 + .../armv7e-m/softfp/bits/ctype_base.h | 60 + .../armv7e-m/softfp/bits/ctype_inline.h | 74 + .../armv7e-m/softfp/bits/cxxabi_tweaks.h | 82 + .../armv7e-m/softfp/bits/error_constants.h | 178 + .../armv7e-m/softfp/bits/extc++.h | 71 + .../armv7e-m/softfp/bits/gthr-default.h | 298 + .../armv7e-m/softfp/bits/gthr-posix.h | 889 +++ .../armv7e-m/softfp/bits/gthr-single.h | 298 + .../arm-none-eabi/armv7e-m/softfp/bits/gthr.h | 154 + .../armv7e-m/softfp/bits/messages_members.h | 92 + .../armv7e-m/softfp/bits/opt_random.h | 38 + .../armv7e-m/softfp/bits/os_defines.h | 52 + .../armv7e-m/softfp/bits/stdc++.h | 117 + .../armv7e-m/softfp/bits/stdtr1c++.h | 53 + .../armv7e-m/softfp/bits/time_members.h | 92 + .../armv7e-m/softfp/ext/opt_random.h | 38 + .../4.8.3/arm-none-eabi/bits/atomic_word.h | 47 + .../c++/4.8.3/arm-none-eabi/bits/basic_file.h | 110 + .../4.8.3/arm-none-eabi/bits/c++allocator.h | 55 + .../c++/4.8.3/arm-none-eabi/bits/c++config.h | 1666 +++++ .../c++/4.8.3/arm-none-eabi/bits/c++io.h | 50 + .../c++/4.8.3/arm-none-eabi/bits/c++locale.h | 92 + .../4.8.3/arm-none-eabi/bits/cpu_defines.h | 33 + .../c++/4.8.3/arm-none-eabi/bits/ctype_base.h | 60 + .../4.8.3/arm-none-eabi/bits/ctype_inline.h | 74 + .../4.8.3/arm-none-eabi/bits/cxxabi_tweaks.h | 82 + .../arm-none-eabi/bits/error_constants.h | 178 + .../c++/4.8.3/arm-none-eabi/bits/extc++.h | 71 + .../4.8.3/arm-none-eabi/bits/gthr-default.h | 298 + .../c++/4.8.3/arm-none-eabi/bits/gthr-posix.h | 889 +++ .../4.8.3/arm-none-eabi/bits/gthr-single.h | 298 + .../c++/4.8.3/arm-none-eabi/bits/gthr.h | 154 + .../arm-none-eabi/bits/messages_members.h | 92 + .../c++/4.8.3/arm-none-eabi/bits/opt_random.h | 38 + .../c++/4.8.3/arm-none-eabi/bits/os_defines.h | 52 + .../c++/4.8.3/arm-none-eabi/bits/stdc++.h | 117 + .../c++/4.8.3/arm-none-eabi/bits/stdtr1c++.h | 53 + .../4.8.3/arm-none-eabi/bits/time_members.h | 92 + .../c++/4.8.3/arm-none-eabi/ext/opt_random.h | 38 + .../arm-none-eabi/fpu/bits/atomic_word.h | 47 + .../4.8.3/arm-none-eabi/fpu/bits/basic_file.h | 110 + .../arm-none-eabi/fpu/bits/c++allocator.h | 55 + .../4.8.3/arm-none-eabi/fpu/bits/c++config.h | 1666 +++++ .../c++/4.8.3/arm-none-eabi/fpu/bits/c++io.h | 50 + .../4.8.3/arm-none-eabi/fpu/bits/c++locale.h | 92 + .../arm-none-eabi/fpu/bits/cpu_defines.h | 33 + .../4.8.3/arm-none-eabi/fpu/bits/ctype_base.h | 60 + .../arm-none-eabi/fpu/bits/ctype_inline.h | 74 + .../arm-none-eabi/fpu/bits/cxxabi_tweaks.h | 82 + .../arm-none-eabi/fpu/bits/error_constants.h | 178 + .../c++/4.8.3/arm-none-eabi/fpu/bits/extc++.h | 71 + .../arm-none-eabi/fpu/bits/gthr-default.h | 298 + .../4.8.3/arm-none-eabi/fpu/bits/gthr-posix.h | 889 +++ .../arm-none-eabi/fpu/bits/gthr-single.h | 298 + .../c++/4.8.3/arm-none-eabi/fpu/bits/gthr.h | 154 + .../arm-none-eabi/fpu/bits/messages_members.h | 92 + .../4.8.3/arm-none-eabi/fpu/bits/opt_random.h | 38 + .../4.8.3/arm-none-eabi/fpu/bits/os_defines.h | 52 + .../c++/4.8.3/arm-none-eabi/fpu/bits/stdc++.h | 117 + .../4.8.3/arm-none-eabi/fpu/bits/stdtr1c++.h | 53 + .../arm-none-eabi/fpu/bits/time_members.h | 92 + .../4.8.3/arm-none-eabi/fpu/ext/opt_random.h | 38 + .../arm-none-eabi/thumb/bits/atomic_word.h | 47 + .../arm-none-eabi/thumb/bits/basic_file.h | 110 + .../arm-none-eabi/thumb/bits/c++allocator.h | 55 + .../arm-none-eabi/thumb/bits/c++config.h | 1666 +++++ .../4.8.3/arm-none-eabi/thumb/bits/c++io.h | 50 + .../arm-none-eabi/thumb/bits/c++locale.h | 92 + .../arm-none-eabi/thumb/bits/cpu_defines.h | 33 + .../arm-none-eabi/thumb/bits/ctype_base.h | 60 + .../arm-none-eabi/thumb/bits/ctype_inline.h | 74 + .../arm-none-eabi/thumb/bits/cxxabi_tweaks.h | 82 + .../thumb/bits/error_constants.h | 178 + .../4.8.3/arm-none-eabi/thumb/bits/extc++.h | 71 + .../arm-none-eabi/thumb/bits/gthr-default.h | 298 + .../arm-none-eabi/thumb/bits/gthr-posix.h | 889 +++ .../arm-none-eabi/thumb/bits/gthr-single.h | 298 + .../c++/4.8.3/arm-none-eabi/thumb/bits/gthr.h | 154 + .../thumb/bits/messages_members.h | 92 + .../arm-none-eabi/thumb/bits/opt_random.h | 38 + .../arm-none-eabi/thumb/bits/os_defines.h | 52 + .../4.8.3/arm-none-eabi/thumb/bits/stdc++.h | 117 + .../arm-none-eabi/thumb/bits/stdtr1c++.h | 53 + .../arm-none-eabi/thumb/bits/time_members.h | 92 + .../arm-none-eabi/thumb/ext/opt_random.h | 38 + .../arm-none-eabi/include/c++/4.8.3/array | 333 + .../arm-none-eabi/include/c++/4.8.3/atomic | 1122 +++ .../include/c++/4.8.3/backward/auto_ptr.h | 329 + .../c++/4.8.3/backward/backward_warning.h | 60 + .../include/c++/4.8.3/backward/binders.h | 176 + .../include/c++/4.8.3/backward/hash_fun.h | 170 + .../include/c++/4.8.3/backward/hash_map | 599 ++ .../include/c++/4.8.3/backward/hash_set | 567 ++ .../include/c++/4.8.3/backward/hashtable.h | 1167 +++ .../include/c++/4.8.3/backward/strstream | 184 + .../include/c++/4.8.3/bits/algorithmfwd.h | 826 +++ .../include/c++/4.8.3/bits/alloc_traits.h | 566 ++ .../include/c++/4.8.3/bits/allocator.h | 221 + .../include/c++/4.8.3/bits/atomic_base.h | 888 +++ .../c++/4.8.3/bits/atomic_lockfree_defines.h | 63 + .../include/c++/4.8.3/bits/basic_ios.h | 477 ++ .../include/c++/4.8.3/bits/basic_ios.tcc | 188 + .../include/c++/4.8.3/bits/basic_string.h | 3111 ++++++++ .../include/c++/4.8.3/bits/basic_string.tcc | 1166 +++ .../c++/4.8.3/bits/boost_concept_check.h | 790 ++ .../include/c++/4.8.3/bits/c++0x_warning.h | 37 + .../include/c++/4.8.3/bits/char_traits.h | 573 ++ .../include/c++/4.8.3/bits/codecvt.h | 507 ++ .../include/c++/4.8.3/bits/concept_check.h | 80 + .../include/c++/4.8.3/bits/cpp_type_traits.h | 424 ++ .../include/c++/4.8.3/bits/cxxabi_forced.h | 60 + .../include/c++/4.8.3/bits/deque.tcc | 1068 +++ .../c++/4.8.3/bits/exception_defines.h | 45 + .../include/c++/4.8.3/bits/exception_ptr.h | 198 + .../include/c++/4.8.3/bits/forward_list.h | 1402 ++++ .../include/c++/4.8.3/bits/forward_list.tcc | 511 ++ .../include/c++/4.8.3/bits/fstream.tcc | 982 +++ .../include/c++/4.8.3/bits/functexcept.h | 106 + .../include/c++/4.8.3/bits/functional_hash.h | 212 + .../include/c++/4.8.3/bits/gslice.h | 185 + .../include/c++/4.8.3/bits/gslice_array.h | 218 + .../include/c++/4.8.3/bits/hash_bytes.h | 59 + .../include/c++/4.8.3/bits/hashtable.h | 1823 +++++ .../include/c++/4.8.3/bits/hashtable_policy.h | 1670 +++++ .../include/c++/4.8.3/bits/indirect_array.h | 212 + .../include/c++/4.8.3/bits/ios_base.h | 975 +++ .../include/c++/4.8.3/bits/istream.tcc | 1092 +++ .../include/c++/4.8.3/bits/list.tcc | 469 ++ .../include/c++/4.8.3/bits/locale_classes.h | 789 ++ .../include/c++/4.8.3/bits/locale_classes.tcc | 298 + .../include/c++/4.8.3/bits/locale_facets.h | 2610 +++++++ .../include/c++/4.8.3/bits/locale_facets.tcc | 1360 ++++ .../c++/4.8.3/bits/locale_facets_nonio.h | 1905 +++++ .../c++/4.8.3/bits/locale_facets_nonio.tcc | 1373 ++++ .../include/c++/4.8.3/bits/localefwd.h | 190 + .../include/c++/4.8.3/bits/mask_array.h | 208 + .../include/c++/4.8.3/bits/memoryfwd.h | 78 + .../include/c++/4.8.3/bits/move.h | 198 + .../include/c++/4.8.3/bits/nested_exception.h | 166 + .../include/c++/4.8.3/bits/ostream.tcc | 407 ++ .../include/c++/4.8.3/bits/ostream_insert.h | 129 + .../include/c++/4.8.3/bits/postypes.h | 242 + .../include/c++/4.8.3/bits/ptr_traits.h | 182 + .../include/c++/4.8.3/bits/random.h | 6069 ++++++++++++++++ .../include/c++/4.8.3/bits/random.tcc | 3486 +++++++++ .../include/c++/4.8.3/bits/range_access.h | 105 + .../include/c++/4.8.3/bits/regex.h | 2485 +++++++ .../include/c++/4.8.3/bits/regex_compiler.h | 1110 +++ .../include/c++/4.8.3/bits/regex_constants.h | 310 + .../include/c++/4.8.3/bits/regex_cursor.h | 100 + .../include/c++/4.8.3/bits/regex_error.h | 167 + .../c++/4.8.3/bits/regex_grep_matcher.h | 138 + .../c++/4.8.3/bits/regex_grep_matcher.tcc | 179 + .../include/c++/4.8.3/bits/regex_nfa.h | 415 ++ .../include/c++/4.8.3/bits/regex_nfa.tcc | 174 + .../include/c++/4.8.3/bits/shared_ptr.h | 632 ++ .../include/c++/4.8.3/bits/shared_ptr_base.h | 1424 ++++ .../include/c++/4.8.3/bits/slice_array.h | 274 + .../include/c++/4.8.3/bits/sstream.tcc | 288 + .../include/c++/4.8.3/bits/stl_algo.h | 6324 +++++++++++++++++ .../include/c++/4.8.3/bits/stl_algobase.h | 1224 ++++ .../include/c++/4.8.3/bits/stl_bvector.h | 1155 +++ .../include/c++/4.8.3/bits/stl_construct.h | 158 + .../include/c++/4.8.3/bits/stl_deque.h | 2019 ++++++ .../include/c++/4.8.3/bits/stl_function.h | 734 ++ .../include/c++/4.8.3/bits/stl_heap.h | 592 ++ .../include/c++/4.8.3/bits/stl_iterator.h | 1148 +++ .../c++/4.8.3/bits/stl_iterator_base_funcs.h | 205 + .../c++/4.8.3/bits/stl_iterator_base_types.h | 236 + .../include/c++/4.8.3/bits/stl_list.h | 1668 +++++ .../include/c++/4.8.3/bits/stl_map.h | 1021 +++ .../include/c++/4.8.3/bits/stl_multimap.h | 923 +++ .../include/c++/4.8.3/bits/stl_multiset.h | 798 +++ .../include/c++/4.8.3/bits/stl_numeric.h | 387 + .../include/c++/4.8.3/bits/stl_pair.h | 295 + .../include/c++/4.8.3/bits/stl_queue.h | 569 ++ .../c++/4.8.3/bits/stl_raw_storage_iter.h | 108 + .../include/c++/4.8.3/bits/stl_relops.h | 134 + .../include/c++/4.8.3/bits/stl_set.h | 811 +++ .../include/c++/4.8.3/bits/stl_stack.h | 303 + .../include/c++/4.8.3/bits/stl_tempbuf.h | 271 + .../include/c++/4.8.3/bits/stl_tree.h | 1867 +++++ .../c++/4.8.3/bits/stl_uninitialized.h | 656 ++ .../include/c++/4.8.3/bits/stl_vector.h | 1457 ++++ .../include/c++/4.8.3/bits/stream_iterator.h | 221 + .../include/c++/4.8.3/bits/streambuf.tcc | 175 + .../c++/4.8.3/bits/streambuf_iterator.h | 412 ++ .../include/c++/4.8.3/bits/stringfwd.h | 89 + .../include/c++/4.8.3/bits/unique_ptr.h | 615 ++ .../include/c++/4.8.3/bits/unordered_map.h | 1413 ++++ .../include/c++/4.8.3/bits/unordered_set.h | 1296 ++++ .../include/c++/4.8.3/bits/uses_allocator.h | 109 + .../include/c++/4.8.3/bits/valarray_after.h | 551 ++ .../include/c++/4.8.3/bits/valarray_array.h | 693 ++ .../include/c++/4.8.3/bits/valarray_array.tcc | 244 + .../include/c++/4.8.3/bits/valarray_before.h | 733 ++ .../include/c++/4.8.3/bits/vector.tcc | 858 +++ .../arm-none-eabi/include/c++/4.8.3/bitset | 1585 +++++ .../arm-none-eabi/include/c++/4.8.3/cassert | 43 + .../arm-none-eabi/include/c++/4.8.3/ccomplex | 40 + .../arm-none-eabi/include/c++/4.8.3/cctype | 94 + .../arm-none-eabi/include/c++/4.8.3/cerrno | 51 + .../arm-none-eabi/include/c++/4.8.3/cfenv | 84 + .../arm-none-eabi/include/c++/4.8.3/cfloat | 55 + .../arm-none-eabi/include/c++/4.8.3/chrono | 789 ++ .../arm-none-eabi/include/c++/4.8.3/cinttypes | 81 + .../arm-none-eabi/include/c++/4.8.3/ciso646 | 33 + .../arm-none-eabi/include/c++/4.8.3/climits | 58 + .../arm-none-eabi/include/c++/4.8.3/clocale | 58 + .../arm-none-eabi/include/c++/4.8.3/cmath | 1685 +++++ .../arm-none-eabi/include/c++/4.8.3/complex | 1933 +++++ .../arm-none-eabi/include/c++/4.8.3/complex.h | 46 + .../include/c++/4.8.3/condition_variable | 286 + .../arm-none-eabi/include/c++/4.8.3/csetjmp | 61 + .../arm-none-eabi/include/c++/4.8.3/csignal | 57 + .../arm-none-eabi/include/c++/4.8.3/cstdalign | 44 + .../arm-none-eabi/include/c++/4.8.3/cstdarg | 57 + .../arm-none-eabi/include/c++/4.8.3/cstdbool | 44 + .../arm-none-eabi/include/c++/4.8.3/cstddef | 42 + .../arm-none-eabi/include/c++/4.8.3/cstdint | 89 + .../arm-none-eabi/include/c++/4.8.3/cstdio | 187 + .../arm-none-eabi/include/c++/4.8.3/cstdlib | 260 + .../arm-none-eabi/include/c++/4.8.3/cstring | 123 + .../arm-none-eabi/include/c++/4.8.3/ctgmath | 41 + .../arm-none-eabi/include/c++/4.8.3/ctime | 75 + .../arm-none-eabi/include/c++/4.8.3/cwchar | 303 + .../arm-none-eabi/include/c++/4.8.3/cwctype | 110 + .../arm-none-eabi/include/c++/4.8.3/cxxabi.h | 700 ++ .../include/c++/4.8.3/debug/array | 305 + .../include/c++/4.8.3/debug/bitset | 426 ++ .../include/c++/4.8.3/debug/debug.h | 131 + .../include/c++/4.8.3/debug/deque | 579 ++ .../include/c++/4.8.3/debug/formatter.h | 462 ++ .../include/c++/4.8.3/debug/forward_list | 801 +++ .../include/c++/4.8.3/debug/functions.h | 450 ++ .../include/c++/4.8.3/debug/list | 757 ++ .../include/c++/4.8.3/debug/macros.h | 353 + .../arm-none-eabi/include/c++/4.8.3/debug/map | 36 + .../include/c++/4.8.3/debug/map.h | 491 ++ .../include/c++/4.8.3/debug/multimap.h | 474 ++ .../include/c++/4.8.3/debug/multiset.h | 460 ++ .../include/c++/4.8.3/debug/safe_base.h | 254 + .../include/c++/4.8.3/debug/safe_iterator.h | 719 ++ .../include/c++/4.8.3/debug/safe_iterator.tcc | 106 + .../c++/4.8.3/debug/safe_local_iterator.h | 369 + .../c++/4.8.3/debug/safe_local_iterator.tcc | 75 + .../include/c++/4.8.3/debug/safe_sequence.h | 134 + .../include/c++/4.8.3/debug/safe_sequence.tcc | 150 + .../c++/4.8.3/debug/safe_unordered_base.h | 175 + .../4.8.3/debug/safe_unordered_container.h | 81 + .../4.8.3/debug/safe_unordered_container.tcc | 100 + .../arm-none-eabi/include/c++/4.8.3/debug/set | 36 + .../include/c++/4.8.3/debug/set.h | 469 ++ .../include/c++/4.8.3/debug/string | 1161 +++ .../include/c++/4.8.3/debug/unordered_map | 903 +++ .../include/c++/4.8.3/debug/unordered_set | 885 +++ .../include/c++/4.8.3/debug/vector | 655 ++ .../include/c++/4.8.3/decimal/decimal | 485 ++ .../include/c++/4.8.3/decimal/decimal.h | 468 ++ .../arm-none-eabi/include/c++/4.8.3/deque | 76 + .../arm-none-eabi/include/c++/4.8.3/exception | 156 + .../include/c++/4.8.3/ext/algorithm | 603 ++ .../include/c++/4.8.3/ext/alloc_traits.h | 242 + .../include/c++/4.8.3/ext/array_allocator.h | 172 + .../include/c++/4.8.3/ext/atomicity.h | 117 + .../include/c++/4.8.3/ext/bitmap_allocator.h | 1119 +++ .../include/c++/4.8.3/ext/cast.h | 121 + .../arm-none-eabi/include/c++/4.8.3/ext/cmath | 152 + .../c++/4.8.3/ext/codecvt_specializations.h | 512 ++ .../include/c++/4.8.3/ext/concurrence.h | 318 + .../include/c++/4.8.3/ext/debug_allocator.h | 126 + .../include/c++/4.8.3/ext/enc_filebuf.h | 65 + .../include/c++/4.8.3/ext/extptr_allocator.h | 197 + .../include/c++/4.8.3/ext/functional | 430 ++ .../include/c++/4.8.3/ext/hash_map | 599 ++ .../include/c++/4.8.3/ext/hash_set | 567 ++ .../include/c++/4.8.3/ext/iterator | 116 + .../include/c++/4.8.3/ext/malloc_allocator.h | 152 + .../include/c++/4.8.3/ext/memory | 197 + .../include/c++/4.8.3/ext/mt_allocator.h | 766 ++ .../include/c++/4.8.3/ext/new_allocator.h | 150 + .../include/c++/4.8.3/ext/numeric | 152 + .../include/c++/4.8.3/ext/numeric_traits.h | 138 + .../c++/4.8.3/ext/pb_ds/assoc_container.hpp | 861 +++ .../bin_search_tree_/bin_search_tree_.hpp | 428 ++ .../constructors_destructor_fn_imps.hpp | 218 + .../detail/bin_search_tree_/debug_fn_imps.hpp | 277 + .../detail/bin_search_tree_/erase_fn_imps.hpp | 103 + .../detail/bin_search_tree_/find_fn_imps.hpp | 171 + .../detail/bin_search_tree_/info_fn_imps.hpp | 64 + .../bin_search_tree_/insert_fn_imps.hpp | 180 + .../bin_search_tree_/iterators_fn_imps.hpp | 136 + .../bin_search_tree_/node_iterators.hpp | 189 + .../bin_search_tree_/point_iterators.hpp | 367 + .../policy_access_fn_imps.hpp | 52 + .../bin_search_tree_/r_erase_fn_imps.hpp | 103 + .../bin_search_tree_/rotate_fn_imps.hpp | 155 + .../bin_search_tree_/split_join_fn_imps.hpp | 150 + .../pb_ds/detail/bin_search_tree_/traits.hpp | 241 + .../detail/binary_heap_/binary_heap_.hpp | 352 + .../detail/binary_heap_/const_iterator.hpp | 139 + .../constructors_destructor_fn_imps.hpp | 139 + .../detail/binary_heap_/debug_fn_imps.hpp | 72 + .../pb_ds/detail/binary_heap_/entry_cmp.hpp | 85 + .../pb_ds/detail/binary_heap_/entry_pred.hpp | 85 + .../detail/binary_heap_/erase_fn_imps.hpp | 208 + .../detail/binary_heap_/find_fn_imps.hpp | 79 + .../detail/binary_heap_/info_fn_imps.hpp | 58 + .../detail/binary_heap_/insert_fn_imps.hpp | 174 + .../detail/binary_heap_/iterators_fn_imps.hpp | 64 + .../binary_heap_/point_const_iterator.hpp | 144 + .../binary_heap_/policy_access_fn_imps.hpp | 56 + .../detail/binary_heap_/resize_policy.hpp | 240 + .../binary_heap_/split_join_fn_imps.hpp | 160 + .../detail/binary_heap_/trace_fn_imps.hpp | 78 + .../detail/binomial_heap_/binomial_heap_.hpp | 112 + .../constructors_destructor_fn_imps.hpp | 60 + .../detail/binomial_heap_/debug_fn_imps.hpp | 49 + .../binomial_heap_base_.hpp | 211 + .../constructors_destructor_fn_imps.hpp | 85 + .../binomial_heap_base_/debug_fn_imps.hpp | 100 + .../binomial_heap_base_/erase_fn_imps.hpp | 161 + .../binomial_heap_base_/find_fn_imps.hpp | 70 + .../binomial_heap_base_/insert_fn_imps.hpp | 178 + .../split_join_fn_imps.hpp | 197 + .../detail/branch_policy/branch_policy.hpp | 119 + .../branch_policy/null_node_metadata.hpp | 66 + .../ext/pb_ds/detail/branch_policy/traits.hpp | 95 + .../detail/cc_hash_table_map_/cc_ht_map_.hpp | 679 ++ .../detail/cc_hash_table_map_/cmp_fn_imps.hpp | 83 + .../cond_key_dtor_entry_dealtor.hpp | 90 + .../constructor_destructor_fn_imps.hpp | 191 + ...uctor_destructor_no_store_hash_fn_imps.hpp | 55 + ...structor_destructor_store_hash_fn_imps.hpp | 56 + .../cc_hash_table_map_/debug_fn_imps.hpp | 76 + .../debug_no_store_hash_fn_imps.hpp | 50 + .../debug_store_hash_fn_imps.hpp | 54 + .../cc_hash_table_map_/entry_list_fn_imps.hpp | 91 + .../cc_hash_table_map_/erase_fn_imps.hpp | 103 + .../erase_no_store_hash_fn_imps.hpp | 100 + .../erase_store_hash_fn_imps.hpp | 94 + .../cc_hash_table_map_/find_fn_imps.hpp | 71 + .../find_store_hash_fn_imps.hpp | 41 + .../cc_hash_table_map_/info_fn_imps.hpp | 100 + .../cc_hash_table_map_/insert_fn_imps.hpp | 43 + .../insert_no_store_hash_fn_imps.hpp | 70 + .../insert_store_hash_fn_imps.hpp | 71 + .../cc_hash_table_map_/iterators_fn_imps.hpp | 83 + .../policy_access_fn_imps.hpp | 88 + .../cc_hash_table_map_/resize_fn_imps.hpp | 134 + .../resize_no_store_hash_fn_imps.hpp | 54 + .../resize_store_hash_fn_imps.hpp | 54 + .../cc_hash_table_map_/size_fn_imps.hpp | 59 + .../cc_hash_table_map_/trace_fn_imps.hpp | 72 + .../4.8.3/ext/pb_ds/detail/cond_dealtor.hpp | 84 + .../pb_ds/detail/container_base_dispatch.hpp | 352 + .../4.8.3/ext/pb_ds/detail/debug_map_base.hpp | 349 + .../ext/pb_ds/detail/eq_fn/eq_by_less.hpp | 69 + .../ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp | 110 + .../constructor_destructor_fn_imps.hpp | 223 + ...uctor_destructor_no_store_hash_fn_imps.hpp | 53 + ...structor_destructor_store_hash_fn_imps.hpp | 54 + .../gp_hash_table_map_/debug_fn_imps.hpp | 56 + .../debug_no_store_hash_fn_imps.hpp | 72 + .../debug_store_hash_fn_imps.hpp | 78 + .../gp_hash_table_map_/erase_fn_imps.hpp | 100 + .../erase_no_store_hash_fn_imps.hpp | 84 + .../erase_store_hash_fn_imps.hpp | 85 + .../gp_hash_table_map_/find_fn_imps.hpp | 70 + .../find_no_store_hash_fn_imps.hpp | 46 + .../find_store_hash_fn_imps.hpp | 40 + .../detail/gp_hash_table_map_/gp_ht_map_.hpp | 713 ++ .../gp_hash_table_map_/info_fn_imps.hpp | 58 + .../gp_hash_table_map_/insert_fn_imps.hpp | 43 + .../insert_no_store_hash_fn_imps.hpp | 111 + .../insert_store_hash_fn_imps.hpp | 118 + .../gp_hash_table_map_/iterator_fn_imps.hpp | 83 + .../policy_access_fn_imps.hpp | 100 + .../gp_hash_table_map_/resize_fn_imps.hpp | 139 + .../resize_no_store_hash_fn_imps.hpp | 72 + .../resize_store_hash_fn_imps.hpp | 74 + .../gp_hash_table_map_/trace_fn_imps.hpp | 74 + .../hash_fn/direct_mask_range_hashing_imp.hpp | 58 + .../hash_fn/direct_mod_range_hashing_imp.hpp | 58 + .../detail/hash_fn/linear_probe_fn_imp.hpp | 53 + .../hash_fn/mask_based_range_hashing.hpp | 101 + .../hash_fn/mod_based_range_hashing.hpp | 74 + .../pb_ds/detail/hash_fn/probe_fn_base.hpp | 60 + .../detail/hash_fn/quadratic_probe_fn_imp.hpp | 53 + .../pb_ds/detail/hash_fn/ranged_hash_fn.hpp | 359 + .../pb_ds/detail/hash_fn/ranged_probe_fn.hpp | 327 + .../pb_ds/detail/hash_fn/sample_probe_fn.hpp | 68 + .../detail/hash_fn/sample_range_hashing.hpp | 74 + .../detail/hash_fn/sample_ranged_hash_fn.hpp | 75 + .../detail/hash_fn/sample_ranged_probe_fn.hpp | 77 + .../const_iterator.hpp | 159 + .../constructors_destructor_fn_imps.hpp | 152 + .../debug_fn_imps.hpp | 137 + .../erase_fn_imps.hpp | 150 + .../info_fn_imps.hpp | 64 + .../insert_fn_imps.hpp | 175 + .../iterators_fn_imps.hpp | 88 + .../left_child_next_sibling_heap_.hpp | 286 + .../left_child_next_sibling_heap_/node.hpp | 90 + .../point_const_iterator.hpp | 149 + .../policy_access_fn_imps.hpp | 52 + .../trace_fn_imps.hpp | 90 + .../constructor_destructor_fn_imps.hpp | 136 + .../detail/list_update_map_/debug_fn_imps.hpp | 57 + .../list_update_map_/entry_metadata_base.hpp | 60 + .../detail/list_update_map_/erase_fn_imps.hpp | 134 + .../detail/list_update_map_/find_fn_imps.hpp | 90 + .../detail/list_update_map_/info_fn_imps.hpp | 57 + .../list_update_map_/insert_fn_imps.hpp | 106 + .../list_update_map_/iterators_fn_imps.hpp | 80 + .../pb_ds/detail/list_update_map_/lu_map_.hpp | 343 + .../detail/list_update_map_/trace_fn_imps.hpp | 59 + .../lu_counter_metadata.hpp | 87 + .../sample_update_policy.hpp | 76 + .../constructors_destructor_fn_imps.hpp | 257 + .../detail/ov_tree_map_/debug_fn_imps.hpp | 79 + .../detail/ov_tree_map_/erase_fn_imps.hpp | 191 + .../detail/ov_tree_map_/info_fn_imps.hpp | 60 + .../detail/ov_tree_map_/insert_fn_imps.hpp | 63 + .../detail/ov_tree_map_/iterators_fn_imps.hpp | 103 + .../detail/ov_tree_map_/node_iterators.hpp | 291 + .../detail/ov_tree_map_/ov_tree_map_.hpp | 542 ++ .../ov_tree_map_/policy_access_fn_imps.hpp | 51 + .../ov_tree_map_/split_join_fn_imps.hpp | 132 + .../ext/pb_ds/detail/ov_tree_map_/traits.hpp | 190 + .../constructors_destructor_fn_imps.hpp | 82 + .../detail/pairing_heap_/debug_fn_imps.hpp | 53 + .../detail/pairing_heap_/erase_fn_imps.hpp | 233 + .../detail/pairing_heap_/find_fn_imps.hpp | 49 + .../detail/pairing_heap_/insert_fn_imps.hpp | 88 + .../detail/pairing_heap_/pairing_heap_.hpp | 185 + .../pairing_heap_/split_join_fn_imps.hpp | 123 + .../constructors_destructor_fn_imps.hpp | 214 + .../pb_ds/detail/pat_trie_/debug_fn_imps.hpp | 115 + .../pb_ds/detail/pat_trie_/erase_fn_imps.hpp | 315 + .../pb_ds/detail/pat_trie_/find_fn_imps.hpp | 269 + .../pb_ds/detail/pat_trie_/info_fn_imps.hpp | 58 + .../detail/pat_trie_/insert_join_fn_imps.hpp | 472 ++ .../detail/pat_trie_/iterators_fn_imps.hpp | 120 + .../ext/pb_ds/detail/pat_trie_/pat_trie_.hpp | 596 ++ .../pb_ds/detail/pat_trie_/pat_trie_base.hpp | 1361 ++++ .../pat_trie_/policy_access_fn_imps.hpp | 63 + .../detail/pat_trie_/r_erase_fn_imps.hpp | 103 + .../pb_ds/detail/pat_trie_/rotate_fn_imps.hpp | 150 + .../pb_ds/detail/pat_trie_/split_fn_imps.hpp | 250 + .../detail/pat_trie_/synth_access_traits.hpp | 218 + .../pb_ds/detail/pat_trie_/trace_fn_imps.hpp | 111 + .../ext/pb_ds/detail/pat_trie_/traits.hpp | 148 + .../pb_ds/detail/pat_trie_/update_fn_imps.hpp | 55 + .../detail/priority_queue_base_dispatch.hpp | 114 + .../constructors_destructor_fn_imps.hpp | 100 + .../detail/rb_tree_map_/debug_fn_imps.hpp | 81 + .../detail/rb_tree_map_/erase_fn_imps.hpp | 289 + .../detail/rb_tree_map_/find_fn_imps.hpp | 39 + .../detail/rb_tree_map_/info_fn_imps.hpp | 46 + .../detail/rb_tree_map_/insert_fn_imps.hpp | 115 + .../ext/pb_ds/detail/rb_tree_map_/node.hpp | 139 + .../pb_ds/detail/rb_tree_map_/rb_tree_.hpp | 248 + .../rb_tree_map_/split_join_fn_imps.hpp | 306 + .../ext/pb_ds/detail/rb_tree_map_/traits.hpp | 102 + .../constructors_destructor_fn_imps.hpp | 84 + .../rc_binomial_heap_/debug_fn_imps.hpp | 121 + .../rc_binomial_heap_/erase_fn_imps.hpp | 107 + .../rc_binomial_heap_/insert_fn_imps.hpp | 154 + .../ext/pb_ds/detail/rc_binomial_heap_/rc.hpp | 240 + .../rc_binomial_heap_/rc_binomial_heap_.hpp | 171 + .../rc_binomial_heap_/split_join_fn_imps.hpp | 77 + .../rc_binomial_heap_/trace_fn_imps.hpp | 52 + ...max_collision_check_resize_trigger_imp.hpp | 211 + .../hash_exponential_size_policy_imp.hpp | 90 + .../hash_load_check_resize_trigger_imp.hpp | 293 + ...sh_load_check_resize_trigger_size_base.hpp | 94 + .../hash_prime_size_policy_imp.hpp | 161 + .../hash_standard_resize_policy_imp.hpp | 249 + .../resize_policy/sample_resize_policy.hpp | 125 + .../resize_policy/sample_resize_trigger.hpp | 136 + .../resize_policy/sample_size_policy.hpp | 73 + .../constructors_destructor_fn_imps.hpp | 102 + .../detail/splay_tree_/debug_fn_imps.hpp | 75 + .../detail/splay_tree_/erase_fn_imps.hpp | 157 + .../pb_ds/detail/splay_tree_/find_fn_imps.hpp | 100 + .../pb_ds/detail/splay_tree_/info_fn_imps.hpp | 39 + .../detail/splay_tree_/insert_fn_imps.hpp | 94 + .../ext/pb_ds/detail/splay_tree_/node.hpp | 126 + .../detail/splay_tree_/splay_fn_imps.hpp | 281 + .../pb_ds/detail/splay_tree_/splay_tree_.hpp | 275 + .../detail/splay_tree_/split_join_fn_imps.hpp | 112 + .../ext/pb_ds/detail/splay_tree_/traits.hpp | 95 + .../ext/pb_ds/detail/standard_policies.hpp | 158 + .../constructors_destructor_fn_imps.hpp | 105 + .../pb_ds/detail/thin_heap_/debug_fn_imps.hpp | 119 + .../pb_ds/detail/thin_heap_/erase_fn_imps.hpp | 255 + .../pb_ds/detail/thin_heap_/find_fn_imps.hpp | 51 + .../detail/thin_heap_/insert_fn_imps.hpp | 280 + .../detail/thin_heap_/split_join_fn_imps.hpp | 108 + .../pb_ds/detail/thin_heap_/thin_heap_.hpp | 324 + .../pb_ds/detail/thin_heap_/trace_fn_imps.hpp | 53 + .../tree_policy/node_metadata_selector.hpp | 103 + .../tree_policy/order_statistics_imp.hpp | 121 + .../tree_policy/sample_tree_node_update.hpp | 62 + .../ext/pb_ds/detail/tree_trace_base.hpp | 179 + .../trie_policy/node_metadata_selector.hpp | 103 + .../trie_policy/order_statistics_imp.hpp | 160 + .../prefix_search_node_update_imp.hpp | 139 + .../trie_policy/sample_trie_access_traits.hpp | 77 + .../trie_policy/sample_trie_node_update.hpp | 64 + .../detail/trie_policy/trie_policy_base.hpp | 207 + .../trie_string_access_traits_imp.hpp | 99 + .../c++/4.8.3/ext/pb_ds/detail/type_utils.hpp | 167 + .../4.8.3/ext/pb_ds/detail/types_traits.hpp | 288 + .../unordered_iterator/const_iterator.hpp | 111 + .../detail/unordered_iterator/iterator.hpp | 130 + .../point_const_iterator.hpp | 133 + .../unordered_iterator/point_iterator.hpp | 126 + .../include/c++/4.8.3/ext/pb_ds/exception.hpp | 93 + .../c++/4.8.3/ext/pb_ds/hash_policy.hpp | 617 ++ .../4.8.3/ext/pb_ds/list_update_policy.hpp | 130 + .../c++/4.8.3/ext/pb_ds/priority_queue.hpp | 157 + .../c++/4.8.3/ext/pb_ds/tag_and_trait.hpp | 454 ++ .../c++/4.8.3/ext/pb_ds/tree_policy.hpp | 157 + .../c++/4.8.3/ext/pb_ds/trie_policy.hpp | 360 + .../include/c++/4.8.3/ext/pod_char_traits.h | 190 + .../include/c++/4.8.3/ext/pointer.h | 593 ++ .../include/c++/4.8.3/ext/pool_allocator.h | 280 + .../include/c++/4.8.3/ext/random | 2858 ++++++++ .../include/c++/4.8.3/ext/random.tcc | 1314 ++++ .../include/c++/4.8.3/ext/rb_tree | 96 + .../include/c++/4.8.3/ext/rc_string_base.h | 732 ++ .../arm-none-eabi/include/c++/4.8.3/ext/rope | 2976 ++++++++ .../include/c++/4.8.3/ext/ropeimpl.h | 1703 +++++ .../arm-none-eabi/include/c++/4.8.3/ext/slist | 1082 +++ .../include/c++/4.8.3/ext/sso_string_base.h | 576 ++ .../include/c++/4.8.3/ext/stdio_filebuf.h | 162 + .../c++/4.8.3/ext/stdio_sync_filebuf.h | 289 + .../c++/4.8.3/ext/string_conversions.h | 107 + .../include/c++/4.8.3/ext/throw_allocator.h | 816 +++ .../include/c++/4.8.3/ext/type_traits.h | 213 + .../include/c++/4.8.3/ext/typelist.h | 559 ++ .../include/c++/4.8.3/ext/vstring.h | 2854 ++++++++ .../include/c++/4.8.3/ext/vstring.tcc | 701 ++ .../include/c++/4.8.3/ext/vstring_fwd.h | 89 + .../include/c++/4.8.3/ext/vstring_util.h | 183 + .../arm-none-eabi/include/c++/4.8.3/fenv.h | 81 + .../include/c++/4.8.3/forward_list | 52 + .../arm-none-eabi/include/c++/4.8.3/fstream | 938 +++ .../include/c++/4.8.3/functional | 2574 +++++++ .../arm-none-eabi/include/c++/4.8.3/future | 1553 ++++ .../include/c++/4.8.3/initializer_list | 107 + .../arm-none-eabi/include/c++/4.8.3/iomanip | 375 + .../arm-none-eabi/include/c++/4.8.3/ios | 46 + .../arm-none-eabi/include/c++/4.8.3/iosfwd | 210 + .../arm-none-eabi/include/c++/4.8.3/iostream | 79 + .../arm-none-eabi/include/c++/4.8.3/istream | 881 +++ .../arm-none-eabi/include/c++/4.8.3/iterator | 70 + .../arm-none-eabi/include/c++/4.8.3/limits | 1786 +++++ .../arm-none-eabi/include/c++/4.8.3/list | 75 + .../arm-none-eabi/include/c++/4.8.3/locale | 43 + .../arm-none-eabi/include/c++/4.8.3/map | 73 + .../arm-none-eabi/include/c++/4.8.3/memory | 90 + .../arm-none-eabi/include/c++/4.8.3/mutex | 805 +++ .../arm-none-eabi/include/c++/4.8.3/new | 122 + .../arm-none-eabi/include/c++/4.8.3/numeric | 77 + .../arm-none-eabi/include/c++/4.8.3/ostream | 611 ++ .../include/c++/4.8.3/parallel/algo.h | 2363 ++++++ .../include/c++/4.8.3/parallel/algobase.h | 278 + .../include/c++/4.8.3/parallel/algorithm | 39 + .../include/c++/4.8.3/parallel/algorithmfwd.h | 908 +++ .../c++/4.8.3/parallel/balanced_quicksort.h | 492 ++ .../include/c++/4.8.3/parallel/base.h | 426 ++ .../c++/4.8.3/parallel/basic_iterator.h | 41 + .../include/c++/4.8.3/parallel/checkers.h | 73 + .../c++/4.8.3/parallel/compatibility.h | 131 + .../c++/4.8.3/parallel/compiletime_settings.h | 75 + .../c++/4.8.3/parallel/equally_split.h | 89 + .../include/c++/4.8.3/parallel/features.h | 104 + .../include/c++/4.8.3/parallel/find.h | 405 ++ .../c++/4.8.3/parallel/find_selectors.h | 197 + .../include/c++/4.8.3/parallel/for_each.h | 90 + .../c++/4.8.3/parallel/for_each_selectors.h | 349 + .../include/c++/4.8.3/parallel/iterator.h | 198 + .../c++/4.8.3/parallel/list_partition.h | 179 + .../include/c++/4.8.3/parallel/losertree.h | 1063 +++ .../include/c++/4.8.3/parallel/merge.h | 251 + .../c++/4.8.3/parallel/multiseq_selection.h | 644 ++ .../c++/4.8.3/parallel/multiway_merge.h | 2072 ++++++ .../c++/4.8.3/parallel/multiway_mergesort.h | 480 ++ .../include/c++/4.8.3/parallel/numeric | 514 ++ .../include/c++/4.8.3/parallel/numericfwd.h | 203 + .../include/c++/4.8.3/parallel/omp_loop.h | 115 + .../c++/4.8.3/parallel/omp_loop_static.h | 115 + .../include/c++/4.8.3/parallel/par_loop.h | 139 + .../include/c++/4.8.3/parallel/parallel.h | 42 + .../include/c++/4.8.3/parallel/partial_sum.h | 230 + .../include/c++/4.8.3/parallel/partition.h | 434 ++ .../include/c++/4.8.3/parallel/queue.h | 155 + .../include/c++/4.8.3/parallel/quicksort.h | 176 + .../c++/4.8.3/parallel/random_number.h | 125 + .../c++/4.8.3/parallel/random_shuffle.h | 533 ++ .../include/c++/4.8.3/parallel/search.h | 172 + .../c++/4.8.3/parallel/set_operations.h | 529 ++ .../include/c++/4.8.3/parallel/settings.h | 343 + .../include/c++/4.8.3/parallel/sort.h | 238 + .../include/c++/4.8.3/parallel/tags.h | 185 + .../include/c++/4.8.3/parallel/types.h | 137 + .../include/c++/4.8.3/parallel/unique_copy.h | 197 + .../include/c++/4.8.3/parallel/workstealing.h | 312 + .../include/c++/4.8.3/profile/array | 267 + .../include/c++/4.8.3/profile/base.h | 59 + .../include/c++/4.8.3/profile/bitset | 382 + .../include/c++/4.8.3/profile/deque | 466 ++ .../include/c++/4.8.3/profile/forward_list | 182 + .../include/c++/4.8.3/profile/impl/profiler.h | 405 ++ .../c++/4.8.3/profile/impl/profiler_algos.h | 111 + .../profile/impl/profiler_container_size.h | 215 + .../4.8.3/profile/impl/profiler_hash_func.h | 174 + .../profile/impl/profiler_hashtable_size.h | 98 + .../profile/impl/profiler_list_to_slist.h | 208 + .../profile/impl/profiler_list_to_vector.h | 324 + .../impl/profiler_map_to_unordered_map.h | 290 + .../c++/4.8.3/profile/impl/profiler_node.h | 166 + .../c++/4.8.3/profile/impl/profiler_state.h | 69 + .../c++/4.8.3/profile/impl/profiler_trace.h | 659 ++ .../4.8.3/profile/impl/profiler_vector_size.h | 97 + .../profile/impl/profiler_vector_to_list.h | 347 + .../c++/4.8.3/profile/iterator_tracker.h | 274 + .../include/c++/4.8.3/profile/list | 657 ++ .../include/c++/4.8.3/profile/map | 35 + .../include/c++/4.8.3/profile/map.h | 561 ++ .../include/c++/4.8.3/profile/multimap.h | 408 ++ .../include/c++/4.8.3/profile/multiset.h | 393 + .../include/c++/4.8.3/profile/set | 35 + .../include/c++/4.8.3/profile/set.h | 407 ++ .../c++/4.8.3/profile/unordered_base.h | 262 + .../include/c++/4.8.3/profile/unordered_map | 502 ++ .../include/c++/4.8.3/profile/unordered_set | 463 ++ .../include/c++/4.8.3/profile/vector | 554 ++ .../arm-none-eabi/include/c++/4.8.3/queue | 66 + .../arm-none-eabi/include/c++/4.8.3/random | 58 + .../arm-none-eabi/include/c++/4.8.3/ratio | 538 ++ .../arm-none-eabi/include/c++/4.8.3/regex | 66 + .../include/c++/4.8.3/scoped_allocator | 463 ++ .../arm-none-eabi/include/c++/4.8.3/set | 73 + .../arm-none-eabi/include/c++/4.8.3/sstream | 602 ++ .../arm-none-eabi/include/c++/4.8.3/stack | 63 + .../arm-none-eabi/include/c++/4.8.3/stdexcept | 158 + .../arm-none-eabi/include/c++/4.8.3/streambuf | 830 +++ .../arm-none-eabi/include/c++/4.8.3/string | 55 + .../include/c++/4.8.3/system_error | 378 + .../arm-none-eabi/include/c++/4.8.3/tgmath.h | 42 + .../arm-none-eabi/include/c++/4.8.3/thread | 302 + .../arm-none-eabi/include/c++/4.8.3/tr1/array | 251 + .../include/c++/4.8.3/tr1/bessel_function.tcc | 628 ++ .../include/c++/4.8.3/tr1/beta_function.tcc | 197 + .../include/c++/4.8.3/tr1/ccomplex | 34 + .../include/c++/4.8.3/tr1/cctype | 49 + .../arm-none-eabi/include/c++/4.8.3/tr1/cfenv | 81 + .../include/c++/4.8.3/tr1/cfloat | 42 + .../include/c++/4.8.3/tr1/cinttypes | 84 + .../include/c++/4.8.3/tr1/climits | 46 + .../arm-none-eabi/include/c++/4.8.3/tr1/cmath | 1440 ++++ .../include/c++/4.8.3/tr1/complex | 418 ++ .../include/c++/4.8.3/tr1/complex.h | 34 + .../include/c++/4.8.3/tr1/cstdarg | 34 + .../include/c++/4.8.3/tr1/cstdbool | 40 + .../include/c++/4.8.3/tr1/cstdint | 104 + .../include/c++/4.8.3/tr1/cstdio | 53 + .../include/c++/4.8.3/tr1/cstdlib | 72 + .../include/c++/4.8.3/tr1/ctgmath | 34 + .../arm-none-eabi/include/c++/4.8.3/tr1/ctime | 34 + .../include/c++/4.8.3/tr1/ctype.h | 34 + .../include/c++/4.8.3/tr1/cwchar | 65 + .../include/c++/4.8.3/tr1/cwctype | 50 + .../include/c++/4.8.3/tr1/ell_integral.tcc | 750 ++ .../include/c++/4.8.3/tr1/exp_integral.tcc | 526 ++ .../include/c++/4.8.3/tr1/fenv.h | 34 + .../include/c++/4.8.3/tr1/float.h | 34 + .../include/c++/4.8.3/tr1/functional | 2308 ++++++ .../include/c++/4.8.3/tr1/functional_hash.h | 196 + .../include/c++/4.8.3/tr1/gamma.tcc | 469 ++ .../include/c++/4.8.3/tr1/hashtable.h | 1181 +++ .../include/c++/4.8.3/tr1/hashtable_policy.h | 783 ++ .../include/c++/4.8.3/tr1/hypergeometric.tcc | 775 ++ .../include/c++/4.8.3/tr1/inttypes.h | 34 + .../c++/4.8.3/tr1/legendre_function.tcc | 303 + .../include/c++/4.8.3/tr1/limits.h | 34 + .../include/c++/4.8.3/tr1/math.h | 186 + .../include/c++/4.8.3/tr1/memory | 52 + .../c++/4.8.3/tr1/modified_bessel_func.tcc | 435 ++ .../include/c++/4.8.3/tr1/poly_hermite.tcc | 124 + .../include/c++/4.8.3/tr1/poly_laguerre.tcc | 319 + .../include/c++/4.8.3/tr1/random | 50 + .../include/c++/4.8.3/tr1/random.h | 2417 +++++++ .../include/c++/4.8.3/tr1/random.tcc | 1721 +++++ .../arm-none-eabi/include/c++/4.8.3/tr1/regex | 2730 +++++++ .../include/c++/4.8.3/tr1/riemann_zeta.tcc | 433 ++ .../include/c++/4.8.3/tr1/shared_ptr.h | 1172 +++ .../c++/4.8.3/tr1/special_function_util.h | 135 + .../include/c++/4.8.3/tr1/stdarg.h | 34 + .../include/c++/4.8.3/tr1/stdbool.h | 34 + .../include/c++/4.8.3/tr1/stdint.h | 34 + .../include/c++/4.8.3/tr1/stdio.h | 34 + .../include/c++/4.8.3/tr1/stdlib.h | 52 + .../include/c++/4.8.3/tr1/tgmath.h | 34 + .../arm-none-eabi/include/c++/4.8.3/tr1/tuple | 426 ++ .../include/c++/4.8.3/tr1/type_traits | 687 ++ .../include/c++/4.8.3/tr1/unordered_map | 44 + .../include/c++/4.8.3/tr1/unordered_map.h | 278 + .../include/c++/4.8.3/tr1/unordered_set | 44 + .../include/c++/4.8.3/tr1/unordered_set.h | 267 + .../include/c++/4.8.3/tr1/utility | 108 + .../include/c++/4.8.3/tr1/wchar.h | 34 + .../include/c++/4.8.3/tr1/wctype.h | 34 + .../include/c++/4.8.3/tr2/bool_set | 320 + .../include/c++/4.8.3/tr2/bool_set.tcc | 277 + .../include/c++/4.8.3/tr2/dynamic_bitset | 1472 ++++ .../arm-none-eabi/include/c++/4.8.3/tr2/ratio | 59 + .../include/c++/4.8.3/tr2/type_traits | 106 + .../arm-none-eabi/include/c++/4.8.3/tuple | 1098 +++ .../include/c++/4.8.3/type_traits | 2074 ++++++ .../arm-none-eabi/include/c++/4.8.3/typeindex | 112 + .../arm-none-eabi/include/c++/4.8.3/typeinfo | 222 + .../include/c++/4.8.3/unordered_map | 61 + .../include/c++/4.8.3/unordered_set | 60 + .../arm-none-eabi/include/c++/4.8.3/utility | 160 + .../arm-none-eabi/include/c++/4.8.3/valarray | 1235 ++++ .../arm-none-eabi/include/c++/4.8.3/vector | 81 + .../arm-none-eabi/include/complex.h | 124 + .../arm-none-eabi/include/ctype.h | 113 + .../arm-none-eabi/include/dirent.h | 15 + .../arm-none-eabi/include/envlock.h | 15 + .../arm-none-eabi/include/envz.h | 16 + .../arm-none-eabi/include/errno.h | 11 + .../arm-none-eabi/include/fastmath.h | 13 + .../arm-none-eabi/include/fcntl.h | 1 + .../arm-none-eabi/include/fnmatch.h | 55 + .../arm-none-eabi/include/getopt.h | 190 + .../arm-none-eabi/include/glob.h | 90 + .../arm-none-eabi/include/grp.h | 94 + .../arm-none-eabi/include/iconv.h | 63 + .../arm-none-eabi/include/ieeefp.h | 256 + .../arm-none-eabi/include/inttypes.h | 300 + .../arm-none-eabi/include/langinfo.h | 316 + .../arm-none-eabi/include/libgen.h | 23 + .../arm-none-eabi/include/limits.h | 146 + .../arm-none-eabi/include/locale.h | 64 + .../include/machine/_default_types.h | 184 + .../arm-none-eabi/include/machine/_types.h | 8 + .../arm-none-eabi/include/machine/ansi.h | 1 + .../arm-none-eabi/include/machine/endian.h | 20 + .../arm-none-eabi/include/machine/fastmath.h | 100 + .../arm-none-eabi/include/machine/ieeefp.h | 424 ++ .../arm-none-eabi/include/machine/malloc.h | 8 + .../arm-none-eabi/include/machine/param.h | 14 + .../arm-none-eabi/include/machine/setjmp-dj.h | 43 + .../arm-none-eabi/include/machine/setjmp.h | 414 ++ .../arm-none-eabi/include/machine/stdlib.h | 8 + .../arm-none-eabi/include/machine/termios.h | 1 + .../arm-none-eabi/include/machine/time.h | 19 + .../arm-none-eabi/include/machine/types.h | 30 + .../arm-none-eabi/include/malloc.h | 169 + .../arm-none-eabi/include/math.h | 600 ++ .../arm-none-eabi/include/newlib.h | 192 + .../arm-none-eabi/include/paths.h | 9 + .../arm-none-eabi/include/pthread.h | 431 ++ .../arm-none-eabi/include/pwd.h | 78 + .../arm-none-eabi/include/reent.h | 189 + .../arm-none-eabi/include/regdef.h | 7 + .../arm-none-eabi/include/regex.h | 103 + .../arm-none-eabi/include/sched.h | 97 + .../arm-none-eabi/include/search.h | 64 + .../arm-none-eabi/include/setjmp.h | 20 + .../arm-none-eabi/include/signal.h | 32 + .../arm-none-eabi/include/spawn.h | 119 + .../arm-none-eabi/include/stdatomic.h | 413 ++ .../arm-none-eabi/include/stdint.h | 517 ++ .../arm-none-eabi/include/stdio.h | 687 ++ .../arm-none-eabi/include/stdio_ext.h | 63 + .../arm-none-eabi/include/stdlib.h | 242 + .../arm-none-eabi/include/string.h | 144 + .../arm-none-eabi/include/strings.h | 35 + .../include/sys/_default_fcntl.h | 204 + .../arm-none-eabi/include/sys/_types.h | 91 + .../arm-none-eabi/include/sys/cdefs.h | 710 ++ .../arm-none-eabi/include/sys/config.h | 282 + .../arm-none-eabi/include/sys/custom_file.h | 2 + .../arm-none-eabi/include/sys/dir.h | 10 + .../arm-none-eabi/include/sys/dirent.h | 13 + .../arm-none-eabi/include/sys/errno.h | 192 + .../arm-none-eabi/include/sys/fcntl.h | 12 + .../arm-none-eabi/include/sys/features.h | 229 + .../arm-none-eabi/include/sys/file.h | 2 + .../arm-none-eabi/include/sys/iconvnls.h | 77 + .../arm-none-eabi/include/sys/lock.h | 24 + .../arm-none-eabi/include/sys/param.h | 19 + .../arm-none-eabi/include/sys/queue.h | 691 ++ .../arm-none-eabi/include/sys/reent.h | 790 ++ .../arm-none-eabi/include/sys/resource.h | 15 + .../arm-none-eabi/include/sys/sched.h | 67 + .../arm-none-eabi/include/sys/signal.h | 317 + .../arm-none-eabi/include/sys/stat.h | 185 + .../arm-none-eabi/include/sys/stdio.h | 27 + .../arm-none-eabi/include/sys/string.h | 2 + .../arm-none-eabi/include/sys/syslimits.h | 65 + .../arm-none-eabi/include/sys/time.h | 88 + .../arm-none-eabi/include/sys/timeb.h | 39 + .../arm-none-eabi/include/sys/times.h | 31 + .../arm-none-eabi/include/sys/types.h | 521 ++ .../arm-none-eabi/include/sys/unistd.h | 508 ++ .../arm-none-eabi/include/sys/utime.h | 22 + .../arm-none-eabi/include/sys/wait.h | 44 + .../arm-none-eabi/include/tar.h | 39 + .../arm-none-eabi/include/termios.h | 7 + .../arm-none-eabi/include/tgmath.h | 184 + .../arm-none-eabi/include/time.h | 285 + .../arm-none-eabi/include/unctrl.h | 46 + .../arm-none-eabi/include/unistd.h | 6 + .../arm-none-eabi/include/utime.h | 12 + .../arm-none-eabi/include/utmp.h | 8 + .../arm-none-eabi/include/wchar.h | 223 + .../arm-none-eabi/include/wctype.h | 47 + .../arm-none-eabi/include/wordexp.h | 53 + .../arm-none-eabi/lib/aprofile-ve.specs | 22 + .../lib/armv6-m/aprofile-validation.specs | 22 + .../lib/armv6-m/aprofile-ve.specs | 22 + .../arm-none-eabi/lib/armv6-m/iq80310.specs | 8 + .../lib/armv6-m/libstdc++.a-gdb.py | 60 + .../arm-none-eabi/lib/armv6-m/linux.specs | 11 + .../arm-none-eabi/lib/armv6-m/nano.specs | 18 + .../arm-none-eabi/lib/armv6-m/nosys.specs | 11 + .../arm-none-eabi/lib/armv6-m/pid.specs | 8 + .../arm-none-eabi/lib/armv6-m/rdimon.specs | 14 + .../arm-none-eabi/lib/armv6-m/rdpmon.specs | 8 + .../arm-none-eabi/lib/armv6-m/redboot.ld | 220 + .../arm-none-eabi/lib/armv6-m/redboot.specs | 8 + .../lib/armv7-m/aprofile-validation.specs | 22 + .../lib/armv7-m/aprofile-ve.specs | 22 + .../arm-none-eabi/lib/armv7-m/iq80310.specs | 8 + .../lib/armv7-m/libstdc++.a-gdb.py | 60 + .../arm-none-eabi/lib/armv7-m/linux.specs | 11 + .../arm-none-eabi/lib/armv7-m/nano.specs | 18 + .../arm-none-eabi/lib/armv7-m/nosys.specs | 11 + .../arm-none-eabi/lib/armv7-m/pid.specs | 8 + .../arm-none-eabi/lib/armv7-m/rdimon.specs | 14 + .../arm-none-eabi/lib/armv7-m/rdpmon.specs | 8 + .../arm-none-eabi/lib/armv7-m/redboot.ld | 220 + .../arm-none-eabi/lib/armv7-m/redboot.specs | 8 + .../lib/armv7e-m/aprofile-ve.specs | 22 + .../arm-none-eabi/lib/armv7e-m/iq80310.specs | 8 + .../lib/armv7e-m/libstdc++.a-gdb.py | 60 + .../arm-none-eabi/lib/armv7e-m/nano.specs | 18 + .../arm-none-eabi/lib/armv7e-m/rdimon.specs | 14 + .../arm-none-eabi/lib/armv7e-m/redboot.ld | 220 + .../arm-none-eabi/lib/armv7e-m/redboot.specs | 8 + .../armv7e-m/softfp/aprofile-validation.specs | 22 + .../lib/armv7e-m/softfp/aprofile-ve.specs | 22 + .../lib/armv7e-m/softfp/iq80310.specs | 8 + .../lib/armv7e-m/softfp/libstdc++.a-gdb.py | 60 + .../lib/armv7e-m/softfp/linux.specs | 11 + .../lib/armv7e-m/softfp/nano.specs | 18 + .../lib/armv7e-m/softfp/nosys.specs | 11 + .../lib/armv7e-m/softfp/pid.specs | 8 + .../lib/armv7e-m/softfp/rdimon.specs | 14 + .../lib/armv7e-m/softfp/rdpmon.specs | 8 + .../lib/armv7e-m/softfp/redboot.ld | 220 + .../lib/armv7e-m/softfp/redboot.specs | 8 + .../lib/fpu/aprofile-validation.specs | 22 + .../arm-none-eabi/lib/fpu/aprofile-ve.specs | 22 + .../arm-none-eabi/lib/fpu/iq80310.specs | 8 + .../arm-none-eabi/lib/fpu/libstdc++.a-gdb.py | 60 + .../arm-none-eabi/lib/fpu/linux.specs | 11 + .../arm-none-eabi/lib/fpu/nano.specs | 18 + .../arm-none-eabi/lib/fpu/nosys.specs | 11 + .../arm-none-eabi/lib/fpu/pid.specs | 8 + .../arm-none-eabi/lib/fpu/rdimon.specs | 14 + .../arm-none-eabi/lib/fpu/rdpmon.specs | 8 + .../arm-none-eabi/lib/fpu/redboot.ld | 220 + .../arm-none-eabi/lib/fpu/redboot.specs | 8 + .../arm-none-eabi/lib/iq80310.specs | 8 + .../arm-none-eabi/lib/ldscripts/armelf.x | 238 + .../arm-none-eabi/lib/ldscripts/armelf.xbn | 238 + .../arm-none-eabi/lib/ldscripts/armelf.xc | 241 + .../arm-none-eabi/lib/ldscripts/armelf.xn | 238 + .../arm-none-eabi/lib/ldscripts/armelf.xr | 164 + .../arm-none-eabi/lib/ldscripts/armelf.xs | 227 + .../arm-none-eabi/lib/ldscripts/armelf.xsc | 226 + .../arm-none-eabi/lib/ldscripts/armelf.xsw | 226 + .../arm-none-eabi/lib/ldscripts/armelf.xu | 165 + .../arm-none-eabi/lib/ldscripts/armelf.xw | 241 + .../arm-none-eabi/lib/libstdc++.a-gdb.py | 60 + .../arm-none-eabi/lib/linux.specs | 11 + .../arm-none-eabi/lib/nano.specs | 18 + .../arm-none-eabi/lib/nosys.specs | 11 + .../arm-none-eabi/lib/pid.specs | 8 + .../arm-none-eabi/lib/rdimon.specs | 14 + .../arm-none-eabi/lib/rdpmon.specs | 8 + .../arm-none-eabi/lib/redboot.ld | 220 + .../arm-none-eabi/lib/redboot.specs | 8 + .../lib/thumb/aprofile-validation.specs | 22 + .../arm-none-eabi/lib/thumb/aprofile-ve.specs | 22 + .../arm-none-eabi/lib/thumb/iq80310.specs | 8 + .../lib/thumb/libstdc++.a-gdb.py | 60 + .../arm-none-eabi/lib/thumb/linux.specs | 11 + .../arm-none-eabi/lib/thumb/nano.specs | 18 + .../arm-none-eabi/lib/thumb/nosys.specs | 11 + .../arm-none-eabi/lib/thumb/pid.specs | 8 + .../arm-none-eabi/lib/thumb/rdimon.specs | 14 + .../arm-none-eabi/lib/thumb/rdpmon.specs | 8 + .../arm-none-eabi/lib/thumb/redboot.ld | 220 + .../arm-none-eabi/lib/thumb/redboot.specs | 8 + 1099 files changed, 309708 insertions(+) create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/ar create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/as create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/g++ create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/gcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/ld.bfd create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/nm create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/objcopy create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/objdump create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/ranlib create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/strip create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/_ansi.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/_syslist.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/alloca.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/ar.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/argz.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/assert.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/algorithm create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/atomic_word.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/basic_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++io.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/cpu_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/ctype_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/ctype_inline.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/cxxabi_tweaks.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/error_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/extc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-default.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-posix.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-single.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/messages_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/os_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/stdc++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/stdtr1c++.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/time_members.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/ext/opt_random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/array create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/atomic create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/auto_ptr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/backward_warning.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/binders.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_fun.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_map create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hashtable.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/strstream create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/algorithmfwd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/alloc_traits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/atomic_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/atomic_lockfree_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_ios.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_ios.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_string.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_string.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/boost_concept_check.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/c++0x_warning.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/char_traits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/codecvt.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/concept_check.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/cpp_type_traits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/cxxabi_forced.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/deque.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/exception_defines.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/exception_ptr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/forward_list.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/forward_list.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/fstream.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/functexcept.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/functional_hash.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/gslice.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/gslice_array.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hash_bytes.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hashtable.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hashtable_policy.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/indirect_array.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ios_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/istream.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/list.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_classes.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_classes.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets_nonio.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets_nonio.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/localefwd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/mask_array.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/memoryfwd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/move.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/nested_exception.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ostream.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ostream_insert.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/postypes.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ptr_traits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/random.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/range_access.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_compiler.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_constants.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_cursor.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_error.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_grep_matcher.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_grep_matcher.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_nfa.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_nfa.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/shared_ptr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/shared_ptr_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/slice_array.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/sstream.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_algo.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_algobase.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_bvector.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_construct.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_deque.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_function.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_heap.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator_base_funcs.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator_base_types.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_list.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_map.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_multimap.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_multiset.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_numeric.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_pair.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_queue.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_raw_storage_iter.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_relops.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_set.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_stack.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_tempbuf.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_tree.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_uninitialized.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_vector.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stream_iterator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/streambuf.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/streambuf_iterator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stringfwd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unique_ptr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unordered_map.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unordered_set.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/uses_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_after.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_array.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_array.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_before.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/vector.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bitset create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cassert create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ccomplex create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cctype create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cerrno create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cfenv create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cfloat create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/chrono create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cinttypes create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ciso646 create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/climits create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/clocale create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cmath create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/complex create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/complex.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/condition_variable create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/csetjmp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/csignal create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdalign create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdarg create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdbool create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstddef create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdint create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdio create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdlib create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstring create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ctgmath create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ctime create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cwchar create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cwctype create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cxxabi.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/array create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/bitset create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/debug.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/deque create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/formatter.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/forward_list create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/functions.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/list create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/macros.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/map create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/map.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/multimap.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/multiset.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_iterator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_iterator.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_local_iterator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_local_iterator.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_sequence.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_sequence.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_container.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_container.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/set.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/string create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/unordered_map create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/unordered_set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/vector create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/decimal/decimal create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/decimal/decimal.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/deque create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/exception create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/algorithm create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/alloc_traits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/array_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/atomicity.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/bitmap_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/cast.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/cmath create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/codecvt_specializations.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/concurrence.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/debug_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/enc_filebuf.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/extptr_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/functional create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/hash_map create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/hash_set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/iterator create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/malloc_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/memory create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/mt_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/new_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/numeric create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/numeric_traits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/assoc_container.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/bin_search_tree_/traits.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/const_iterator.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/entry_pred.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/resize_policy.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/branch_policy/branch_policy.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/branch_policy/traits.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/cond_dealtor.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/container_base_dispatch.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/debug_map_base.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/eq_fn/eq_by_less.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/lu_map_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/ov_tree_map_/traits.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/traits.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/priority_queue_base_dispatch.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/node.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rb_tree_map_/traits.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/node.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/splay_tree_/traits.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/standard_policies.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/tree_trace_base.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/type_utils.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/types_traits.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/unordered_iterator/iterator.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/exception.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/hash_policy.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/list_update_policy.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/priority_queue.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/tag_and_trait.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/tree_policy.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pb_ds/trie_policy.hpp create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pod_char_traits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pointer.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/pool_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/random create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/random.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/rb_tree create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/rc_string_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/rope create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/ropeimpl.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/slist create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/sso_string_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/stdio_filebuf.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/stdio_sync_filebuf.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/string_conversions.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/throw_allocator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/type_traits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/typelist.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/vstring.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/vstring.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/vstring_fwd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/vstring_util.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/fenv.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/forward_list create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/fstream create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/functional create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/future create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/initializer_list create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/iomanip create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ios create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/iosfwd create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/iostream create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/istream create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/iterator create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/limits create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/list create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/locale create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/map create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/memory create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/mutex create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/new create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/numeric create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ostream create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/algo.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/algobase.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/algorithm create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/algorithmfwd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/balanced_quicksort.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/basic_iterator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/checkers.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/compatibility.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/compiletime_settings.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/equally_split.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/features.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/find.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/find_selectors.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/for_each.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/for_each_selectors.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/iterator.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/list_partition.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/losertree.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/merge.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/multiseq_selection.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/multiway_merge.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/multiway_mergesort.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/numeric create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/numericfwd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/omp_loop.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/omp_loop_static.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/par_loop.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/parallel.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/partial_sum.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/partition.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/queue.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/quicksort.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/random_number.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/random_shuffle.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/search.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/set_operations.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/settings.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/sort.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/tags.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/types.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/unique_copy.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/parallel/workstealing.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/array create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/bitset create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/deque create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/forward_list create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_algos.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_container_size.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_hash_func.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_hashtable_size.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_list_to_slist.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_list_to_vector.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_map_to_unordered_map.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_node.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_state.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_trace.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_vector_size.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/impl/profiler_vector_to_list.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/iterator_tracker.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/list create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/map create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/map.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/multimap.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/multiset.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/set.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/unordered_base.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/unordered_map create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/unordered_set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/profile/vector create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/queue create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/random create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ratio create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/regex create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/scoped_allocator create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/sstream create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/stack create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/stdexcept create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/streambuf create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/string create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/system_error create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tgmath.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/thread create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/array create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/bessel_function.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/beta_function.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/ccomplex create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cctype create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cfenv create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cfloat create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cinttypes create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/climits create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cmath create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/complex create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/complex.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cstdarg create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cstdbool create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cstdint create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cstdio create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cstdlib create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/ctgmath create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/ctime create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/ctype.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cwchar create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/cwctype create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/ell_integral.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/exp_integral.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/fenv.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/float.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/functional create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/functional_hash.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/gamma.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/hashtable.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/hashtable_policy.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/hypergeometric.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/inttypes.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/legendre_function.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/limits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/math.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/memory create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/modified_bessel_func.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/poly_hermite.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/poly_laguerre.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/random create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/random.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/random.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/regex create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/riemann_zeta.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/shared_ptr.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/special_function_util.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/stdarg.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/stdbool.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/stdint.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/stdio.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/stdlib.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/tgmath.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/tuple create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/type_traits create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/unordered_map create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/unordered_map.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/unordered_set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/unordered_set.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/utility create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/wchar.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr1/wctype.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr2/bool_set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr2/bool_set.tcc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr2/dynamic_bitset create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr2/ratio create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tr2/type_traits create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/tuple create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/type_traits create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/typeindex create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/typeinfo create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/unordered_map create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/unordered_set create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/utility create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/valarray create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/vector create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/complex.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/ctype.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/dirent.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/envlock.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/envz.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/errno.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/fastmath.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/fcntl.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/fnmatch.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/getopt.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/glob.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/grp.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/iconv.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/ieeefp.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/inttypes.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/langinfo.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/libgen.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/limits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/locale.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/_default_types.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/_types.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/ansi.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/endian.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/fastmath.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/ieeefp.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/malloc.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/param.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/setjmp-dj.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/setjmp.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/stdlib.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/termios.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/time.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/machine/types.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/malloc.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/math.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/newlib.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/paths.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/pthread.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/pwd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/reent.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/regdef.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/regex.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sched.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/search.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/setjmp.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/signal.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/spawn.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/stdatomic.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/stdint.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/stdio.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/stdio_ext.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/stdlib.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/string.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/strings.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/_default_fcntl.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/_types.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/cdefs.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/config.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/custom_file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/dir.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/dirent.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/errno.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/fcntl.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/features.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/file.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/iconvnls.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/lock.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/param.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/queue.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/reent.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/resource.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/sched.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/signal.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/stat.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/stdio.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/string.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/syslimits.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/time.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/timeb.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/times.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/types.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/unistd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/utime.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/sys/wait.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/tar.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/termios.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/tgmath.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/time.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/unctrl.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/unistd.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/utime.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/utmp.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/wchar.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/wctype.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/wordexp.h create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/aprofile-ve.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/aprofile-validation.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/aprofile-ve.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/iq80310.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/libstdc++.a-gdb.py create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/linux.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/nano.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/nosys.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/pid.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/rdimon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/rdpmon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/redboot.ld create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv6-m/redboot.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/aprofile-validation.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/aprofile-ve.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/iq80310.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/libstdc++.a-gdb.py create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/linux.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/nano.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/nosys.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/pid.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/rdimon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/rdpmon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/redboot.ld create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7-m/redboot.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/aprofile-ve.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/iq80310.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/libstdc++.a-gdb.py create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/nano.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/rdimon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/redboot.ld create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/redboot.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/aprofile-validation.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/aprofile-ve.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/iq80310.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/libstdc++.a-gdb.py create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/linux.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/nano.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/nosys.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/pid.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/rdimon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/rdpmon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/redboot.ld create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/armv7e-m/softfp/redboot.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/aprofile-validation.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/aprofile-ve.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/iq80310.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/libstdc++.a-gdb.py create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/linux.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/nano.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/nosys.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/pid.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/rdimon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/rdpmon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/redboot.ld create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/fpu/redboot.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/iq80310.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.x create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.xbn create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.xc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.xn create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.xr create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.xs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.xsc create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.xsw create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.xu create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/ldscripts/armelf.xw create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/libstdc++.a-gdb.py create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/linux.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/nano.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/nosys.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/pid.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/rdimon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/rdpmon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/redboot.ld create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/redboot.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/aprofile-validation.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/aprofile-ve.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/iq80310.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/libstdc++.a-gdb.py create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/linux.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/nano.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/nosys.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/pid.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/rdimon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/rdpmon.specs create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/redboot.ld create mode 100644 tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/lib/thumb/redboot.specs diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/ar b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/ar new file mode 100644 index 0000000000000000000000000000000000000000..b28da170ec596bfb54724763fc8a28e0f9c2feac GIT binary patch literal 734544 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

daobyg=(<6EP~%ndhgDER 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

SluTmeye40dm(fUcx)IN4j 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 literal 0 HcmV?d00001 diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/as b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/as new file mode 100644 index 0000000000000000000000000000000000000000..df0ddb4eb83c54857bc7792b8a60df50fb18e488 GIT binary patch literal 1222168 zcmb?kdtemR)t^l^us~oI3>q|O)J20tNi?*HBpOH}Q9+}CqM*EEknoV~0@l~!?n0*H zYHYPy^|QpFwbiesmd1z_0>K0y)rhvDSj6{?i#EO>f|~F5J2SJ{tmyas@dbA8J@?#u z?z!ild+xc9nZ2!I@&zuJOL6{ElvIUK@Bz1{0O9_|VS*}9vK5b#qnw}|uk=F-aRou- z!AA<9P#V(Q_@ojCxL^(N_#6Y6AL2-xANgZhe6m&zQ}|(d#cSh(toJw%KV6xMGA*V^ zy~L*glL34NaQt)v=7)T-4t^?8NhRv$CmS$74zB7$|AOEyuM(^r?%`*{Bt_xJ!CwYE zvj5=Ep+B~E(Y&#>3(l-vv^22#th!}qoo$r`Ytpt!mrR$k;d3=UBk&=gSKw2L5C4j-K)K!y85H3&4xc&roQn^6 zxelMj_>9LV9iPkbxdfl3_)Noxe;4C38Xxj|5kCAw^OX7cOd){38CJlqkiRSKkUDa5A?AO7W9fqduSdlo*|;xiSWk@%d5 z&k6YO?>Kx;lbE8Mhj0Qu^K6*GnfUw+AJH);{KOyo?8p8F9|bY=C}~d8KqqpP@K~gs zjL%6&!8u78cH|5@9E0$92bmCJh{zaANRsF&$q7lY5AZ}g?Hq)sj_<_3Qvu}R zGXS6S@yW)=`J;Y2e`nc|QYXO<)dUzrP5!RJcLhGz;KR{A93TD-!e_R`6r~*DOgmm} zhl#;WRBZc?G*&r^g*f4sB-pU?G9dn{B>dncddE>|?LX#Uo|OL|N%>z(f;rBdzidPt zePtTq{rEV4q@R;i{x?bR<4N$HN&K9hgg*=T%6nmF@kjc*7_tAPzNGSHNwAqjFFQ#d z{gdF&lk$J%RECiCH73E2Ce=4637(il|4&Ky;v|^%%(uqtp^Y30t8#1-eoGR6PXnIu zn_l@mK>kJ?XP3`Zh9~8}Bng(uj%D!2_R+>Te}so7)lXe_{)o>`qIZ2#{%@1u_mbe} zlHf0s;7+G9gsiVEslG{o-3jg8npFO!BzRmB{ALpU^d$QAN%&Ke%8yKfId?dJC(-*1d3*`|cU=dS){H#x+?@hx0A&K7CNpMy!nx%a$)(ilFYsCHP*rV#Tr*Br%^9ex}U6@KO|CuxRP* zK;6OxN_BN@psq%#^RJk{{6=N=>=koYEm^o^e$5J{dg+q6{`oahV0pklU#VN@uU$5O zZtX(mUOIota%I_a|DvS}2(Dm>*&w`PL14MEWXas+KPyn?*Dga9i$Kc1u(sAJg-Vvp ztMe~gHNQ>?EQR~LSXr@fZY>BabLTBv;YTj;rp#WrdJ*F*md{(Um|?Yl(UOJA{F)`p zP@kRVUskJBFI-lwRA09c{PDX^0fQulBDIi0V5y+cByi6}{AVz~ZaFHM4dEeC~A%>lXcDA#zr)hRpqF)XKW0%U3K~>aPZw1~)J4D0A!V%4g56bvR;oQ_8bvJ1NM#aOp~=u5SL^rPb`Exht+CyJ)U5dl|$(cmCqp zOBb%1UlV}*kvjm=U~Q>WzZFN@7D0&1m}CAb=*p@Ui~ML8m|CESDoCf)QflCpVucns z^pOpD7l<;l1Xx6-8|v7}^XeAPMP^84sUN~vxMaz)mB`Gz$P;IA9#ng&GI##`g>`kJ zhh#+Rfs9a{rP~k%wA&sNOXi|PwS`z&Z3_#TK$lONeBs2h z*=L`XACKk5V`rarPCVWlJDbBb+K)U zc{DD1={VTFlsrEuZE<0JvkW<-iSyz^e}CwrMOgCmSFV8_W13gsH03(muDP(HqK{4- z|LTrkge8JUxxvnVjO6d9++xEPJ$IbmFu|uP>-x}7iPQf8>-&CO5Wt3~VSz_qB@GK( z&gp4b5OVHI!=jpVRvH$?wDoE873C|G>yL(XGlWh3mLcj;TnOPDx*1|I=wXNjUphl9 ze7p?dEoU%9OEMW^5tqdfd}K3(M0^afXw6}W#Z4|l2qBLl7K8;1F`*SQ#O6maLoDV> z8DgPR&JYX0N`_dxPG*QjTouC+nD-fCp*Mpe77eo)W??2h)H58dD0eW#BC~Av5?%v5R1qbhH#3vFvP;Yl_3`SI~f*XJ;Lx@ zMR|$gcqA@G+dm z^%}zI=zoS+qW>ArK>stm3jNRUYViQe}>ng{~6Yx{~0bq|1-QE{m*bQ`k!Gf`k&zv^gqL;*i+IzoEkdd zHXspY=9;z-YKJNMufOf->51(2rx{z3YJ84iVLW+YkTPTD^KCuj4qycJjOxNS%k+%m z2t&n+V(v$=o>3fWHN=^n0&~RG&@7m(0xRf&8g5gV8wGX~&L+HGU=QIO!VLna6NZK< zW>8=+VQ7wGE*Ch1a4F$A0%sDgBwQtM7Gd<9VwMV=O&C3+n0W&G2+tv$EpQHDHpuh} zoJ)8)VMX9P!m9~)eUF4u1%!iy_X}J|xSnvQz{P|c2)7DcO89=l8wD;Wyq@rSfh!3= zPPjqf$%Ho&4hmdFxP|a?fu|8}B|Jyq8H9Hct`c|_;ZDM(0?#45hj5<23kdHgoGow- zVS}(&;9A06gcX686YeJ5^&Q*qC(OCR+%NEI!XCn%0^dy7OSo0wAmL2H8wCy%&L+HG z;CjM2gc}6DgK!?n-!W#((1@0u=LU_5ruM=)1JV)R?gm)3H68LSxorFsT-cNWB z;XHvqAiSS&w!j8qgRocN1BAN>D*|^B?k3!Igzf)|FuVn{U*K-S9>Sdhe@oa)xK&^U zmZv6@@J4}Yfork}uNRn>xQ5$bW`n@A$TfL{g96hs*Ax<7E-)>0O)23y0@G60R1&Td zm=?RHig2mG*@R~h&J&mxyk-vJY=LRXYibC41*S!>Sx#6Hn3la}HQ}zqGX4n%3GWw} zmcFK*aHqhu_%#iLTLms9d_Uoh0&@naSx@$xa%7k|Ae{yW$qW4Gfj<$aHqhWaca2yHCqJ^63!&N5isnC{N;aot@du{gRZJ+ zm)Fb*dLeOqU3NvyoWHs~#vxSvRYRXYd)^9`RKn3y0_QhQM)+(x=9)Dz55Bh_NeRVV zMSJQ_j5f1^P^+tnS$Z-eL`(LfJu8g%G!k%ycDiR?(-!rgrbM^EE0TFJbRe_Qi@cFm z|1jEH1(5+AZXeTnI-hUr!%ur!5Oh*D!^Kis=7hYS_OwMzXir;W1=k}O*q-(Pf&uMm zwIt{{vo|wh=TnGx$@bfqKTE8ulxK$wMSo6$3VkfOCU&N==#kCxiFfI*qN zu|`5qW37bgjmstUHu@#ZXk0B}X5-BgW;F&S%x(-LL{|kG>zUy88S6n_A4fide%`!4Nzi#i4E?fA82l-KFgP_r#7($z0BRjcIsuGCbm;AOK)O3^)hc0+o_jj zG_jp}S!NU4sh4Fnv7LHZb`!bL%Y2bmHGC(k(x>LEIjjV+Wi}Iy@@VBgH{`k=nT%x^ zV0u}O)fA>Qi4d%2&+8^Kw~5VGo6GVZVY~FQ0u5X?v2CH9nKR8|0o7K&=tF z&wv7=iX3dO8=Fpckpu7(TO;}6Vv9XuNhG?B0-1g#d%Rd5NvYbMG0itEb((L6UhAuJ z?ThRM_dYfJi~cwq5E0$%n-*$K33YqawSNMIqA%6ZXKn=}<(N>LOQcT`9FP2w-D>y= zL3!#Y`*PH+&lkO_hSSpE=HBefQPl8yAUo37DDo0I+@pr0gMr=5K{Z5OI|O)rFl&uY zazTPQk>}OOEKt_Ebx^RhVi1bfd-Z9)oFa0%?$;1Q1Gu`ql=6tT+uV+P4L#_e+r6I9 zH)FN8)bRIS)EaZuU({3dWnG5aoQf8Nx(E6vgu2i0&oBCN#ev@Pl&}&M3A4+3{s~>4 zAKl0}l#ju)jrcCAeZEy2%w@30aXT=Gb$oM%8d;50RPpIgRuMQ6 zJ$gSlHin((QmPxY?lI+%|IXr>*UrACt-8TsU~rs)*dyxJwDk`h=h^xQzMgHw7f8&3 zQcwkr7qO$SHVAu+^=D*%mc?-T>(0cI~aeNb?*-9eHnsrq1#YW3LV_ z+T|YrD_rzNz|g)J{gz(t^NsE<+M!>8 zCl{UA8R{OOuHB9XTZ14aa10uJp*6VdB>$(O!>0sRwf8^8uA^Q0`;=aZ_V$Fj_6tJ@SKd6J|X%qNz#!hczW6f%_QV%<0*{29SS4-#v)yOpf%uDdq*Pi|#+M$L& z#9Wrx7V~u^(D$M3GgCoS>x^rBqWlVgg8X!3w@s^mK(G*|lN6zq)9MBXZ|j+*hW`l| z@}WNc5xs4VreF&V>A-;5OS0E6scYXr84y1UL3>%x(&*HlP+AZSxq8)CUHc1IQOgB* z&2+O8@!Nh6qQG$hsO$a#QTSVuQ=;5(y z_!xA)HD!jraj9!h0|;wI*Mlx54VyOEmu+nM%rb5|0E~yo?`W5;IhN(Z>9l6w3{b

?XPBynO@>3%@Vf{@ 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%0D2#Y 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

}V<)=cgjY$)p%Ouj}5icFrm<`>U8^3X|q$Jq*<% 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

dz+Tu?KD9Gknkbc0R3Iz&zRReg{S2fGf#WvIx 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

l=QsX)Q4 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

~KSdgRju=SOc=L*$Jl&o22-4wSiiSZ( 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ⅈyl$yGpm=k;66h-nkZUNU5-) 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

HW`@@*Ehqu%jaAIv!w_nYM^q4aND=Rl0 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 literal 0 HcmV?d00001 diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/g++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/g++ new file mode 100644 index 0000000000000000000000000000000000000000..46c0d7ae62ae30e64e05c861349d64e7a943a05f GIT binary patch literal 679412 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∈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 literal 0 HcmV?d00001 diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/gcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/gcc new file mode 100644 index 0000000000000000000000000000000000000000..2527b0c60d407ce0b146d8381399e4b062f0495c GIT binary patch literal 676532 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⁣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

FSkoV=`t@AbHy!Nu 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 G@%|UFlZRda literal 0 HcmV?d00001 diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/ld.bfd b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/ld.bfd new file mode 100644 index 0000000000000000000000000000000000000000..c625fde9ef491977afafefab706f2495f62362bf GIT binary patch literal 1010892 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

I*dc7Idh8iI5pS=a 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

QN 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

+RWFA+{) zpGr94qJssOoqRDhu0r`>vUID^+0u6@HL_6cDO<*_N6=FpPdW}=ExS@&_Ax7G5nJwE zY!I0zbdub$ws*Ir%E-h1h&*gBMtmt(kOdoIu99bS6(D(yZ8Hg?;)<)B3DNG~1bP1p zuHvi|D9)y`&QEp=ce8Vy&IRKW)?09p2o8QJmByZo{a4td@Il{+#zzrQgpu(ZnC5{k z+J_KO%XQ!_Ts267s$CPQn$05KlUuytFpN5@$`g!X7DD0<3K2dbm<|0*1`d1SBf2`t zA_m&kS?lC3r(-|yc&PXRU{1Grf{Y2b z0X%Io-PdCX=ApmK=32XaAIJDM#Yh>lwX>7e6c(rL6=IUg`hO>C`BE2m?N+bw=BkYX zOKrCZ1;;BXpD-hGMDE{!Ioi{K|;vY_`>9 z?Zzqu6FL2V>R6CNqX*WjKDX8GXJ_%1Zs&)RB7KhYEf!?{&umi1K+-~HN~+I#FZ3&J z7E|#pp<&Yh$j@Hv9;8;EWnmx@I#hyBmt;!>K#7s|C-Gy_>+MytA}s|!id2hbp=~0k zA+Jii*@u7-#RQ0&QK0b|)_$cKh(4WE9IjDwG**zd1r3(-v`_}4s56oabTmYT01x2olQWW0^(cp% zkK2(wZ6g=4vv&J7##=F9KlmYKLZOs98$8!LtWupMDzi2@lSE=H^lhq#rV}t@ka3fs zy*Nq8EK#Vzx3K{qSNHlja7C2xgi#H1-)0wk`q;&_Af2^|m1hYZOJC`6Iml*>V7$bO zT3Ee+$n@Tx7#?Qc6%+bnUkfW(@{<1+Nf5eG0_&kQ!EK8;ggxig2lGVr3iIF!(%5y9 zBN0r9r&5JPf8H!rx4h|8O$Z=Rm}l2*1HwbNUc05$zg@3EeO&!E!7L*r$dYM9Md%XI zJ?9KBHV;<7+U)nGh=gXpj~srVfJYY!xjMvL=3@H{(1rez(MTdElWq9&!JCB0Z7o^L zweL8*$vF=D9)db_f;?iMCZ)$1lBGH-`06GmLx5J087xQ; za$y2^qBB*@vvUS1P@6vx&O=OL2mN@~wdd1zay(S>h8a|fdy`^=*;Sm0m<}EF{5t($ z4DV}4MH>eQ*3FsfXe9Uu#>noTIyI>-Q>#Ml2QTgUy&#jR9Ed+BN{3SN{`@!t=xDz2Y3^$$Ia3L1CCf?&wKgW9{O`@8KA0yLs0}7PfiQ=_lD=H>D$v zr6jO^C5!%JHkmEMDUYWJ?PCa8uc(;KGXJ&?(}1bg_}R>9P?(m%eQAlxfLqB|Ch0xH zWd5hF_e6?!Wd1AC+N~!GuLpZn&Pms<(m8EpkF2kR?#5Hi!x_}S#%_1xmCSpgPiXTD`{dW@ z+&&sR#A|%L*`=9oVoNxCc&T~>g`gayYD97*8g&60m<6FbTYHMpdMXXae zb;!O1R_TrXP99E4v*gWh_#tGnmp1p`GFs?a?omi&KAL}`eVEocNbB6%QCB7yBa##^ zrN=%esR!=gq+2_9alV-A%$ykIEOs3F2YAt2o|5KVc5xD;ou8{AjA-1l;DTqd+bVE# z;lwK7U@6Rn2bnWrF>-;8(?`Xltvy`r0hSa2+-!}fnDA-&Go?th{AX=sjqB^*u@sTQ z?)ZzqELP6VuNUx(%IuS7*)KO;?k}oOf0-o7od=CTiy}N|3{IThS4;oI(Q4?B`!)9c zB*mfr^1RxNkjH%3R~t>|K>t%%#n@BN0UWOf|0@0E=$y;^MHT&hD%5RO_I(DnCB#O7 zX0Dha9IxG;hnXD%>#SI%uEVZL%Y_muSE%HKkQQ18714jq_988ClOAZ++YCX`Yd{ft zU&5ZW*8w^Ps>A5997boKHN{Z+W*mKgp-afq=AEOlQP;jBzP9(7c-sIu=Rs+2Tell~ zRXpDy#}yO$de-Adc^=g+IDCE-WC`=V)F$vTe%1Hqq=8|3gaafBZ)|Dr`&bye#9@_8in5kAztkdJ&zY>#tS;2EUvB=A5&uB~&5p&X z*ZQ@()?T3yvvmZrge-zghcMqq91;69*fSmfY1mJ7>{nvH*s)K=ey(Gmg8eebUX6W> zW3R+s?AR-?k8|wh*e5&oGVHmIeLVKd9eW9O*&P;minZnfWSrjuK2?-j_>HZaXRAlo z>w=;jYpchFYk;_@g4|g(V7F>^u>2*#wK{hR!qVt&nqur`$F$Vq7f7pZfJA!J-(UEa zc$Mh;!|pBO9NCg2j^*vNf zW}QF4DHFwFQLj)3I%)OUb*vAoJ&2!)ZM^u^i>*v-bH!FJwg$0Ph^*Yz%CPApYkyqiKQwY?NKu4SF3sdu1l})W;anZbW z69qZJh6EKz&?G#~Tc6_>ZsCUA0~{N6^=cnWZIuE;B4ul=I}OW1TR9@rd2(y?4YT7l zc{yn5uxBOsh3WjtEkTeR^ zCjhs%5M#AyuLJIx}hnf`M2*Cb7Bnj)pDci(8#PiQ-??o)0$7OEZB zx_gP7C{0wO1XGNFx2#Yd0E+7wD(its#riAh+j*3B5F{2zO3r?3!7dpsB01{FNPUFx z16sSU?MF%5KVq{eFPAiUCJR~`;h(4lM*kAExKIV&fzi)XE3M7-Gy!eXvP98XivMbj zXUz|B&a!Nj;bR6U8g!Gw?`kk*e2mdBOpzPppbNy5NuNhU6BZn~9&{)39kY?$SI9VX z!?7#S2}@`$uG|ev9M>3JV?v*DRDflqd`-!AX3I}mxCy<*@)4c|Vb9Uxxe-s)&A(>0 zECXt@y*|~g+Ml;~(euexN3Zv%(M=>wC)~-p!xZnoR5}&W+<}^2Ye(0Y)*&1zfrQ(w z16y@ZTOM3nX-0Xc>+{wf#C3UxScleZ54CP@K1{pH?8k*Nv*9#;Y8b`P04l`vB4Kqh z9$4sK4V?tIWbI-*_Us+fa{6I*G{IBPOKN{6v1b`TrO8@io!SQ|wub^TPBUA3WJ{HK zAB)kO*fGV$&{JKgc{z>-|5QUo`qt160wfnX4$||C*hHG|d0cGlNoqY0DBPMYAA&)J z;m{%{3ER9{&#e+s?S$S0WD4bI87FR!y+13#aYPJVMX)$z!8lazI2aH$rIt}bVC`B+ zokvWjEj_#J+QwW~dw@ssZbhrcyw$kCfQ+jc7UG_!N zG>r}3C2$*yy!2P#dvWHfb&^+Z>hhozCCxA1OEv^9)1?Ieb1FNFhsf5qO($bwB$^$g z*O?tD&(>wX-}oDEv*gclBOaZjM5mypyB#qOK+q?;0VQc}B?ORZ3XiBIPNjNdRwc`4 z{(JpF3fus){ODLCY2aA}R#XOIxwQQem50?c_TDj)i&;!{$L#=w&|uO>&%fn8vNHcj zj{ku^IUbbiZ%FW`1$}~J`4{w6W4jmxz(`l;)3DN{ z$*tCUziPL#)KoOIvjb^I^ga9_r!MrZEvKm5=?Vjkbl)TRp$ucGo7rX7#;iBd$YH5` zmu^5CQoyCSoOQV8AzCX9*oFV5S~t0@H@1i6dg~BNp}Zds<PP{n9vSy-1#Lu zkZ>zVU}%c3iy2gBC3HXv8LIW#A5r+TUS>#4WMyxoK1K-YaA2bD&rHSBW#-Fa@r1UP zQIf#gS!dm7DA?+(X2W_yfMBho`&l`Wrr?yD9JfpV^sDBDtH+T+T%e-YQo#D{TCDd8 z$S|Qef2qr_K|ru+nRt@Gqd%FU;cS;fZAvNYz9q zyjts*q)QXY$DM(Xzy3}sjsg871V}++iuo9??+9^{b+#eC%14nVk8Cr9nysSe1d>YF zAYBVOM2EkvsUomIJ~2_PpyM8Xr3S=>xs+Y6Uf-@`&^c)h`=(~csw#mE5AR-N zAK#Y-;8tCN7lXDF=BsZ?&|7<#Zj|yE7-xj}M92D@B{3px4#ezVrN}xvA$76r!@2?q z%olDnvJde7?9udZtUYE&y7|~Q`V&&KI%|P%SJ9es^hZW|lLdrUTWPV1oVQm-%q1Dt_nokneDBAcb>h+k1Fnse{g#y=TdbJ|5*! zk7`w?ruCd-wLCkG;v{p}ocS#_=P*&>ZSYul+bgJIvpMY2&4GM9kkBfWX>ICxidIOo zc7)Dki%UpTNIt4JB=wx5`U74fAV8%;xd{=f^(h*S^N#nQ8YsJy;C_81sjrVDh5N`~ z`}L8f4^RiYZ{*%BwA*tZ9!ZMQ)r)2XefeF^mv4hQu;ZaX}rO3D1#EKnfhtF zeOuJGclqZ&Aoc}gk=%oYzZi(5*`_9GZ)UwG^^p)S;A0Oz}BWbd;t zn+uD5QACxjH`%%n$%GjkQhnUwE3AEjClRs^BOBZ|kY`Btc|XcYN?qLE`ihKi-b)z& z6TIh6cws!mRgRBnOejRC~j15~wPfRNpy}Sc!ouJ^R&LhT@mV%PE|Cy$v9E`!b*= zI?@a~{OV-`v*U4j*&y)nz2w?6-Qgq1S1u+s@A#)C#qaYsa6Ge3VzngX<^Ul?{pnwl(qIbsRCuE@3o&%@csk<9~}Cuiq)0<8Z)K` z6Bggm^@+Yc{(X|vSqd0Ca&s5tlBh0*%ea7D8Wnx1!d(}q#=Rg-{j_TM_h9h}I+abJ zvdQME`y~NYm!1-m*Mwv=lv(3?0+`^D%g5jYti`<`u-K?rzDaPvlGU1_fVn0i{TL*+ z`sYLxn&s)s2GMm~5mz@@AtQp5kzt%vfRmBB|G@|*D8R*fqScU;9_l(AC_8_z#fv2B zDG9rdX2*sXpoeD^LJnuYY6gC!KzLAykfNx7i}`m*8X@Wbi2{9xhMKE?2^QE)G&_#a zzSd!CRuUKgl>=B?(rMB4IbF5!8mW@BGOb{@@pj*?pg3^BQRn z?!VF^FMvPo>D%~`wvmQ21Jh-W`BIAFl!|ZBkIdWEdq5ozZldZ@t&+ZnR_J(KdYHLd zHk81bDiONt`Yir{qE6fAP#vtv@GneiOSmLl2cgqTbe41dkE=Q?OacU#U59;Ly%uRy zYX-_L*y}qq#A%k*#}tYXBzpW)xlY#gv9x?rd^mPn!YSa)Y`;hPLff>Hcmv(aazyCpb z!&3Nm7R!+LD2kDxKyhf%#rP_Cgohz6-eth{RQIqBr0>Xn!(260I2p{&?08Bej3T$k ze{Gj#h3YJoo7u5e(phVsq?~Ziqn}E;fcJUrd0{|i#}Wws!t|rre>DSh>1ozCU7reT z=<&~n`KXNAQrIk2R8K(Lv~=CK#UcFJNjBqy(;ZWs?(2R?%UL5;G<~u!&s z5uc9HQ+TFPblIXlfv(A^Euxt1FUk{LiiyKA0*^fJ0)DgO7Q@O+RnQ8U{!Gzplwbz_ zPIomsZqTeR;h0HXpZjN{pDHQ-1M7%`?zU+|SW?=chOXIh))AOM5`MZpY{?7nB}o*P z5FWsy8N->*=mqnO^QYXW)t(%OK6Ty}cN9N}IL3IHk@D#M1S#M$fPxqaf=QXxI30kP zU7yB(2|9)EDB^2N$Oyv)qmjib7*@u&(Mkz2h(yDc;lRb?m^|l510r>xkT6loYj2n5 z@TgI8VA@j@e?2XGhTtXwo`AMR5&>q{Cm<~T0~rk>aFv}IjWBfAo~cHH4SgeljV#JY zN=&w^r%doseVT0Q|>yJ4fi;0$YYuSvg!_kA>2dp5RFa# ziu6NU@t6Ke!)slivq+o}|AB)zhaFx=H>z9H^$B4~@w9ey>ctR}BaeOE*%NEFKe0?+ z?fi@+k@*sB-u0zGjEX_ z+|)HCEOWArImEpEGop2U0)wp^9Mx=61(!K!SQbIUvM?GDY{*CSybsgGvi-nztcGLd#b~av;Sm#<;DQ-& z2@^p){R5kR*d8(eMIVuZ)$=(rFD^-H{#=PL=p}f?T-_v`EetD5RfLCXgaW}Q3x*5h zx;|q*f*5z4_;^vc|C2qyU4YsZhov?o*+NVDzUb~%?lAYzyHMzH`m8Qj>Sh(r6Kz}z zqE{>Zqg|A3%kAtkK%lwn- z?MS@EWWW}w>{{P0D&KsYWBc&XdJvyT9s1+Z?w2Qkzdur>Uxei!w1XkujIp1uU?+L? zFxJTYgHg0?m@PlX9#|*rktN*I<;37R;g2|m;PCrXa0Jwg^myIIg&)6P_B;aX6ffP` zy+G~&trIp%_`96Dt@Azmj4(H|^+^P8Tq|tXy|$~}cD2~9mA0$icKz9QRokxHY*()B z`lIcVJ#q3}ZM&RY9s0v|s*sex9<^#5Cr0u%PcF9{8#QcrzI?s0f!gifwyMAfA z)*=59bBVY%$YhI$0r@;FZ2d)Xt79?#b;7Iz)h7-0`-Op9%FXjB94Pg54(bfWF#9an z9+>OOe#=}riFD}qZ}|o((0=p=xvU$9-!F_+aqodjAmd0UcS@bf3M9Es39l+vouwT9 zhov=qhX(tfkd_i51VJU)T>X-as^2W%Et`yH$8Kv+*Jr#`5dW3GiS-7Rv@HpyzfLjz zCUm3^)%{PX;$i#~lEQPiqk-~otX*~1!+j-Fn7MkKf=^2O9vKVG?h0p`p}_AtY*$vM z>|G@^53&*AAD=JH7$(mT73 z21@?(IKa{DI7N*Y-!M)ie3Rua-s_0uityc+>v?@r;`K@XhgGf!-`NKP6Tg-o{6rr@ zZaJU9(~EQ}E!Xkn6GALYf5GHtqYjhojLAOe6k%6z@pj~v zBWGD((UJ0Su(5v_>xCTg8CpyqfvL#Yr|{{7_)Uw=6RX(6{R=yPNZwf6%F zvjGv7HCi_YeGzFxz27V0-eMcAa>IM|3wVf{`YIM3{elGb_#i`*!W|0gr8ziOM>!HI zxeM~-UwCd5MdwQuc>)%R%#Mws(IciVUZu3L_4KluljELQhNKHF&f}s;=u4QRdL$~a zkTu+;p{2-sNWY^+SKRMxyId`jJr|{~5Fr$&tNX89@d*8y#KHovkx}BfT7XsH4i$)4 zQ9eLvxVK(qGrEXOvo=1nbYt(=YJA{Sq1UYQJ!dzD*(!A)?e<;1gYM>!;T9YabB-o8 zXXAWMoXzKBds*3r_ne~gkycdQv*luPh-B#fT%BsNF3Swflx=Vhkf1T21zo2bBj?bE z2P@pySxyt28m3*ka@na)S5}>v#S@+#K+2&je|=n!2tCg{8qtx<6-i`DRCtZ`mMn@L zUjQ!&JfXTA56SFnD~ml*r}K3W={g*yb=B&ji@|r`@_#uj%oXXwcH@TTfLa!hnN_kB zFhEvYqWV>6AJ9o?a^3Ph8hbbU?O0(x;N($HERI(EMaV+fbm*VVYwX*l?}|;f@q>a#RVq<*JLd(R)c%y~p ziw)MRh2(y%QZMhkN7<)OQRbI^HAlB+=WJI_@jrf#be@z`Wpe(Cr9!>a%=Z5wQ}e)$ zy}o7A5m_^Dx#u33tuqUqe_rPv=31*|t|ja0G79VdW%m;Gs%zMk;=sfDja-hEcYn=x zYbo>8o*mA7OtKQDqxZb7&IxSTdh1DXQSZHPm`q@_n;}WdkPS>%>vUA9Z$3^QmR&#d zF?Q=@lQVSF`u*XFU-*1xIOwc9_RG-(HD7_lA^VH!(`4&4Tf0POPolg7(c+;OwC-0Y zq0E+Dl{;yYA-LkR8wxB7uw6^LfiGEEs z)AubuBsp0-1Aj0%b^44#L4N4K$5Huqev%mf535_vmPoC4+GzsIC52h=vi{ogBa%tr zVdatE6J4aj@vjAv!xTk9Db0IQ;4+@670>wt18axURLgrL;Np*a*~+9mvtTnlCG}$Q1fG;Y zn=~IqrZCe7owDyvtlWHERKIX$1zAa!%+^)&c|Y|zM0>keaG7E+ps%e-&IzpIRf`8mB!W} zglNtvz1#dv)_!X<_u8Lqf#BtSzc-oq;t;ZUQ1=?6B<}X^W{x2~$?lTwJLYbFqb_T| zg!>Dhbg4wA1R#mJHT~nSQkgnQ{$}lzqU`mJ|8{vI_i@FMt@1OttM$XIS58#k%jP3r z>f4W6yW$Uf>+O2|ci@W@;iiZbiuf)(M3uuaak}LwSL*VYq*WBd@%3_Cb}=0*%Fh{Z zHry|R1_O~ppOdpTswXz&nd?kM-4Swx<3D8H!|t{^BrmJ0+JSA&KMvi7x7mI=V`J84 zv;95pZI5!@C;4$`15Fl$?%x#C{0~&;nk!{}8m)70TS=)(t{OFv`y=fKJ9nWQ;0u55 z^Y=HMjILXHk;ZlBQMs*>&8Q`=QMr%aKMz~(o%dglba~J^YPSE4hlf?XM1SU^l5V(i zewjQf^LdqQZrrHMJ5{pGR+X&V`cjg89!_Q#XD8cDX^+~aB}g%%z_tH0sr!S6w}#b1gd|* zkyP)QN?tlKy)}QvOT#ZEDRQ@av~!gP?lA{>13h<(bR8xiW zmz0q$FAa`Cdk7wK$QNZJ6)|w!rPajFwNDG9Hjq%7P-=33HG421rx6&Z{EMcl9hOXl z^gTLBN&sz4=a&Y7g`JaX>TmqeIBl~6N8HRFpr~Z1Nnw=acW3&BGS2sDQAK~0sC%GhBU$sqU zK|s&p5L=T8XldL=NHSN*bq;x_fjTGzvC_i`C5@Q=YUf8W>91MuD0G~?l>; zT0e|LHp1GK!7m4lMwly8q+Yx-k^VZZQURW-n@%Q8qW{lIvCw{=ZIcyG?q=Z2O=r^A zo2^wgHm2fVOz#Wr2ViFGL3wvriapBSFyaQv(k^n2w5vFRt;Ry2rQA= z+v3#vz%8P>c$V2xY?oEfDY$B-x5^uT2wr2Z?{uU8m6ZkdmG9=NO<>{ximONCRU9f} zrAsYDtCiPm86X*;%O>j;`eeP_%Uq4x)BsEVdiEO&_5sl>f~$dOR)%OW-vimy1N|(r zt45<$ed;WdZdt=ckU@G|;ZQqa^IjCL6BJXA!c2uc08BRKivqZ0Ypdda`8rDE+KT9l z`3CAF+KOmR!?z`dE494Gz2JR0LS^lxaHWdwOPRdWWmGws>|ZRFZi*4`+s7Mi z6RGidTrmsYAyqPKE%Z9ljtJjwCD`Ru7;U6y!c1UX1KK7J@NF3o`Uh;C1l5pXrnS%X z#oC0K3CT>&fc&hlq6rObR+}s5!>z-_CWMwj^IEG?mkA9jS__m5VL>kPSuAvDQ{U{c z4z&ieh$^hWSPp)T)W;`XOHJRmsx5-=)xl%k+H;-@`vM z{cSDZ!7J(iS6F;;gjtMji_A}{Mo$;b^goQkV-Va~UB7!1 zxsM^(dfhq{|5Xd??7x+?cxJr`#TEJ!?y@+gDd!e{m&Zen?M}lSt?{a(YrVJt@=fNufVMWeyQDd?`AH6^AZ>9?;#gm0KfHODbn` z87gP4yhXYI941{T3=qDH%Xp)>%b`!o~>G48nr%(%hVswWo948W$MkAha`i= zsa~7QM7Q|AP%HVc9YisA+6a8?07qtgR7@-hQXl+#Ls=5qPPVe35$Bft_W?{IWX9VSN^;}k*1q_lQe7-! zL}J(Hwm^rKgBS#MeQL++#`1cq~6HnA|gu7Vck!H%^lWxROIUz^=*O-ux^Hw`7p) z491q8N9|VieZh4fCB+Gv<<_0t7)%4Zsja)EkEs@Y!(wgYtLD?Q_suT{Rom$05|LoQ zNM_4nbM`k2s?F!O`1YPf0$20&9B%jA8Y>dlSN_qd>93!*%R-KJDN#B)9l~FvJ@(Na zwEBU4#5=IB=N>hVh>Y5=BpdHib(husyx^WXxi|#+p%v<4B87jvXn2mZxW)2S*XI#m zYLmbThLA{35@|0v#~m1*iXRs1?E{}@zYPRC8ZQOsag7&99_cTicFZp7D-n&lKDLu? zBja7i1E$73I9Cuni~G8!`)HbwY&%DFsL9r+wjzq~{N4JL`Fr;y zsh=(VG`=QL?mv**+)@Z4^9>hM|ai{0A9%2KjjRA1|En%Ov~ z!K>BHsjqj>pHbgjtIcbibKRV|T7B)@>%6nI^Jdl7&1kOoo~Kn**NiKlTvJt@S1>^< zE-fo6DXi2g_^HyS6jfH0PAU&)c3u6vYiHDJ_48)(3n;aXbG4sb;!aI4$MU*HN};A6N{t{<&(?GXEG-agX?b-~ zWrd0~sai#@Dk&??7Z0hYe5=cKc__f3M1-vdT#{ zMdaKsrg&75eNFxqH3}PHhsr`SvxCbgl@~=KmX?=-*visLm8I2G;AX0G%eh)r>6Jy3 zifc-W@(Q6UZPMiGipkYA05>tOTH{ktR8uf%;>1bifJZ&^q&DGLd6fkvRIH>lpPauP zD_k!~7)+Fw7nDsdEYcLXC{Z6$uinilpqC!qQ4@VqS$-UNn^&tD4xYGO3tG$Sce%gp4NUO(g{s zAn62@$rV}&L|Ju3l~7yxq++60^DU^HR8>`3R16j>OUIR#ORp=_%8JUzRhMW5l>k^& zGbw*OfYnr8F)@DZ3uNg&d0iAl86FDfdeb_FG+6oNWQt^6Jv! zQmA!Y*(53v<~tLdEFCr!&UQjkQH3_CyzGja(&C!RNqyGKwW^Auf>JWDL2>#-O>tS? zxGKt4bWtNL&PHJ#^g;8!Cl z=FFR0Be~VgomX>xZEb@CZFCTTjO>FC*C@>BJ|Cxe8F^I&1a~#_oPknWQH_|&XGT-g zoa^Rd)oh!@*N9r98qFEPYCoYA=G1YU}N+tsh1x8S(w-|~ry zT?ZYCm{HR(Zw^h~)ZEZ8uhFZ`oj0>_UQ<(JZJnLz4GiSh)+!WwvM!Q}tEQS^qgU`Y z!$#kXdeEv6+0=|UAr3_jGw02vUNa~IEJ1r&5Z}lV7-)0kNDNImax?}kj)Yi8UW6gu zNaBqeq0R6vYCy=L99pqv!5r`Gns52cgODPgeHEZfI?xIwG|ZmWs2X72{MyF)8H>WC zM=3xu3P?tcQjwbMsH$-!5dnZV>H^zam80^yv6))d&8cm45+IIgvlh{@=gd^7b2!DQ z3;X-doi__+(J!KS_4o14xK0DiCe<~R$QRBH?2HgUZBnR$4{*x^lM-O@MRb@Li;KscQ{&+BfiojLEixd^(ma@<}7 zT_pw2XmZ2puCHx$1V=f1Q&~H!c_vikhG>zEuU+JBY$hwj)->UYA{wWUC883w-OY2I zj74z1zIM?9xFb@q`*``*eeUq4b0vFi_*8)q5xsft^+@z{-GX|zG=h6NaolNM=ulk#E{4S01 zAM=7M?rh8;%&Da5ea;ovjoFTQ2J;`7RhVW>IIkAs)nfkAPFa{oFyXMfu?H~Cj$bX` z$&S5*yUV8ZDRJmrepjd=_6Jmz_p$Eobdbk-i5gqlkNCL$M4<*PB0x9@qd8tU6_@Qd%p9nBIuEb2hkW(?+Z%whQ9dzj}i_hFV|CSlHmPWF)3i(wZr4*)jCI)C^i}#S{SeUE zIo+h670Ew3Z`=N7{Ym{Py zZW(Yhv5GMz`q?TE!x$1fUgciS@8`-kB=%LkNo&$>)W6cU>COD+92Gn)iW#ZWlxvGs zydLdM{UGhIP`^cArmxUj^j3YP3b|gpMa$AGWe@46Xpd;O>4`>?aT+kJ(f9WXERv`E z<{UjWMr`)qFvE@QY~x49XyXFqcaf2+zL%)D;dtNYJ0v#G$R|~yNdYD=aiG2^h9#zA>_9{^^*2bheF-x?|9a}h#r0CI}SNYj~=NV7pcWNZ3 zdk5gJ4T&8RJ9nV`<{T}JImPw(fR_fG>-q-=C39RK=pX8z>YwR52OJyFqko}Ka-BJF zx9%S}EOys`-k8kT?AViylZ^?^UzuK}$M9#DCOJx;^4Dj}IeLZBqz$I+&Qb8j@w95r z(J96N?IB|?DPy$BMhQM&I=MXJKzj|b_vwf9f9drqo!vr$ZJP${a^%FY?l%2;X~R?v?y785m4CRLoTC}W z5z>9;k~-XJOeLn6huDRF$jDOZX7amS`%1HnFSNt1hm2n<-(dq!qa}YLt$DOl`Q#k^ zo$)-jya5jx4{Ga`-{H3}1!I(hiGLdR8ZR1Qo|Uc7*MF@2ScPpO?)!$=w_y8A?^Nv-W2*M5 zlUvTw4aN@RFUA|jEMvP-Yy8dlyU}1Y8co2{Oq_>|lSt{p4Am-uZK@W~ex^;;b{GqY zam;vtoF#AD*d@Xe3 zjNg;@gT^0>hmBp7Ab)Nr)+3|zRo>t?OCvx z$iKupk_VnPNH2}6dSbn>Y`JpGK6 zGk=_V&bevn=VfI6C9saITi)wHXxshK|G+L_EQubVyRXV=%?Fn37^RJ7{9mrE z(DIBHtyOcy-zhA50 z{n`P14rzx~u4}bp8pk4aT{pnO0BwLiTnlP1Q_3KHu)dm@Lv>TXp8VHqr|3!g5A;*@ zAL_~aX~;ll=qboS!;nhc`q}!A^dBR;3`Zh5S5MQ|lJZ5$zh3*Pem;`IYV8qYxN5<* z_^kuWQg^}fO6+5C+4e-zt&ZLLwPjnmji(8kk(w`qQ4z2PTlK`E;oY+MZw zuTjvOA_fSSYdiIKbQ@n1{{#I-@^K;MN$%_T&eHy% z=Kzn;`amrfMFjEMAZ@UgpbgQ6s(frr-GNlKL|dw;FP9wbzdWriVwYOEv^8LAHQyxa z(x29c({>U^TH5OJ4<#5eIihPwyQr2P<{0%k|jETk_lpxr+ zgWT4FsT_W#ZbI2Y>+7@{V;x~Otq;`daIMo)@v(cpjZ?`_u#pVsI9)q~M}N*#;dWct z*pS*M#klBWKcwfkQr9zZC&#ntOFZk!NzQD4kKP7 zfBj2bt9tr81+~E02{r`oFr0R6*5V^Iz1O(U_@(hH#%tkF>nQhk)G`rl#zIIjT{)3qJiCgi$V<$%+$y%|i|b{nqV-to%4oZm@K$gO<8 z4c8qibS>qq)537|FDDwVW+yKju5ju7W z*lv?H`F^$gKO^4%j|Gu={=bQZ-rjZpmQRZ$_I>C%nv?cnh{fN`_-0qZm~S?m2s{f_IsiM6c#+D*n;#vx5+nwk1N#5+lw&Whf>+I`yR`pw48 z#t*cci8rqIbfa4<(H}N`sr^d3U;B`i>MG+C?Nco==GWwLv+*UfQ)c-H`-UCjGqFwv$>NGP85)}mu zD@oD`M&p^o~tWYS65e8xT^XtNll*lin+}A!CY=sRn^oCvylqo=uLWR8ZFcq zdKjb474)fIMSp==!&qrZ$Q3FR9~nlbng{#ZNylbe=Me8l##d^ks$m5&Rka4HRYpB} zzh9WYtKZ=)Wvo06Zs%I_IrXJ!SYIJ`_&Rff8V_T>Uj1R@t10SFqfiy8?_sx7;Hsvo zX==Kf!6)%A!W&OFTB|myhHFN>IQYAx=G!v zZc(?Y+tlsq4t1xRr{=4>)ZOYHwM6yd^MbyFT&V6>n@G)Oa|ZpvJ4j8YYGjV3!RHl`;yNWG-KF)uY17%B*BoHmjIb z&HIf>=43M)w&Jf(@N(l{W=BTX%Lum|TuE8Dff{Iz(aY=+ier&_Knb%ZBjF1eRjj1E zUP~W+E~ASX=A*{faL?bWCFYOnTlGt5od1~lxcLMj+NmdvRYrT&L3LEsD5XznwnK7C znWw0y4b!wJrMCI3At9bKHW}@dW4fk<_(DBzyktbp^~AFQ-a&Gzn)wQB<>%^E!^^43 zp*qE@fu1y<^2_?`di}0tyk@*hPQ7QmZ)`EPl2f*^&G^jt0>0<^lAoBhaVYC+%wLVR z=B_e1^&35Lj{#|{mKjZ$BRN$KGldOlsn(c(z4i*@G2uz3M*ohPgmBF&3-k%o33sYMpvWEmNh-jXbrdRd?nN-XS->BsW^=5!D~eAe3f# z-d1f9iNC^-*&ump+sKVA>H`(=%lF6X6SYn4(!BoxwN|sv&-zd8po*C71T)u9=P_{A^I^a5HdpBp_E#|T z_xtHwWIkZN#O%Oooz54`>1IW1qo2;}OI|bIGT(vu=Icn(`99qD7P#=z>HN^#X?{cv z`?2{6>D)>>zc+t3e>7*B7n&C_+c3-g!`x@iDA{A~hYh!^6^5|hQcIVRPGy;vYb9CL zt?KG>vpn3}Dx-pRlvT;%Ygy|UOY-vy^H=jqv%lJIt~BSE#~anGy~=y0zw?=9ee+L7 zuLI4W8OKh7-@B?@SJ`Y_ZRROy<)oJOc$B&3*)Z`z%hy@Eipk?w>Y}U1=w29u@UNji zl0QCdsmJx+==0RLeM>_)g{@m;Zn8 zS2lk&>aInw87n;c}sQxk6W0Ez0Td)N=Z3Sx$d_ z%IR-Rx%?e27t+fWy1L3Jr@x8i^jAZnICEjeNhvW9tn)Q)lS8y5X?<-p}Jq6TS_fGcWBs zh}!dA-da~e9b;BkwaZn4${Xu3e>)d8IqaQs^O`snw=27&!1ASk$g%QpQR&gw2q`Q<6 z?}LmPvgwukL76QZYCIJf;_6$BFiQVg(_dW$Ga|o+V3(odacE0UzXh7Zs>s!1UDHX- z0VFd&aWXR#(oq{m#|b=&v5e_=vU=reA(%8hR@>V+|Zb>ECAK zb!^w@I~c==^>9BCglHI_8Xq3c!(Z$_VYKy6el@k{6h86&rZ~Zi*2QQpa$H}817(%8pgRXbLMiED-Y9`e~L8$ z2BXuuD z>5MCfYyWbkB$dqw*DzYDWX6foH{K}0jFlI_Yv4M!z80(mqmS4Uh?9&0(9hiD7Jsw{}pk zz~}so%d4W+Rz1{<*dE1-hPJA)l8^fh*pfmxPGQj&z#`nQ?Sj({%p~3J8*W4`()w#z z7jc(yk8ghlDAdB(Vp- zd1$UPX2B$1gMB+(76(pRU5sr+=iv!zhA|zx3yhhZk5!A|4cn+S@LzWjdwbS`9EYhx z5VyB(Nzq)GmSM8fBx_7;%d{<9ez@wBX*ke)Cc|B2aiUO&Z_M$Z_>K~s1uF8lEz7kT z9P_6YiWn|Y8MbLeBmmBKgdhGbTgsQLVzM2@MR2uA04*B&Ao}oih}U&Vt}-k|ypCm| zAvtnIWs^9*7MG+EF{d&=d`l9&AMx0vQ53?-q5xYi=w)kltyDAQ5|U)OXUlYxBvEw0 zEOD+to*D2Tbi#AkGu(cZ1*oqmjW6D*MCF}@+mdfcIvOMsMWruPTOe+YxXN`n$#?Nsd2pb^&ly+HRF}U8(M{) zS`B{{P#sl=bw7<%6V-x47+B#0&!oQY1Q*st*EQXF=X$BLVO0mffDMNK8cy9bLXD=a z9!uRnUboVd;du*KBRoxA0Pl4PD}ZOi+g=4@dmTKj$I#xVS=syHuU4_D<|&xpS6C&p zMQv4IsUI}!WSB9tHmgND!gZbl1C$BlGZiLgHY~^u=1r{ayaOg&R#n_@$|}K?<|7tgF_jvK6-tXr(xtUIiE*4@^<)&lE(>jCRQYpJ!&T4AlS9=0B}9=Fz5Pg+k~&sxu0 zFIX>GFIyX}P1bAH8`fLaJJx&F7VAUnW9w6Eo3-8g&icXn(fZl?)%wlaZSAx6QxcW! zP%xA13U+0?ie1&NW*=kMw2!yz*!9pgu~Y2k_UU$OyRqHL?gDz*J?;MX0DGW)jy=d8 zW)HVV*rV++cAA}TPqee_TszM$vd_0KurERk@b&gBthb$O-(xSZ@3$Ycmw<=uZT9E( zPxc@7pF*2DM>&<8YEBL3B#so0HcnfogVV|B=Jas}IK!P$&R8eS8SmscQ=DRFx^t0p zp>vIMwR4MehjW*6pR>qW;;eL5OZStXMSnC#52-S}Ct2GeYkN+ly{${{sR?{dbK2q4 zX?xG4H`$#&LVsG*5v(OiqjjA`e<7b*ZwB?(Eb7=RsGH}q*6Bv(Z0?};o=;1#K+lXU z;r&^`8}taR;*<0apQSB(0p|K;TF+N`pI)cMew!Z0`@Bn^@fLl@oAU>2?Do-8E9y?+ zg{xCHo}f;qrHyPuP1}LDLt0_!H4mnjdagQ;_FCS9Y?Y_-c?V`__IDPu7}qdk zaVv8Zu=Oyw&oMvnGAr}n&};HPU_F@dtzW1eFtxjwN7=3Rse@Ek)Umt?6__nJ#;n17 zQZn3XBeMzYYBS!BmaK_yZMKC+?FbLp$rKi~huI4*uP^-RKy#2ejCUv1oM`5mQ&`tK z6%KR;%;hZe67wqaYTl$<{P*ZybD_D2HMh%|$$H#;625nxxgHjFqxmXt(d(=Ze#d;D z^+cbVpYs;&;2ru2es&N1<3XxYVL2;V)vOv;E#99xRs*ZC)xtX6YHM}m{poD=@ZX(L z);KGJx2C|FZe3(u&O39hbu(|v0&6kv$SP|!@5d9o9nbJ?ylAbrHdwD%ukwCu<_&qB zcjOD}OY1A^YwH_phxMm^BWN0U7mng>sA^Z&??Ns61p8#(h9+rG-amiOQW`$qeA`%e2V z-iHV6mG)};QTs7_js1-Mg1yOp&3=P*>09g%ct5_dzqfbVzu3F%J@#IEzs;g)N}$0k z>xGO`N=hzb&Zwkh4m~VHuu$ihlw3^t4CasTqIq$t!DXIQ<^oDeqz^Mio3pjOoNv@R znV-%9h4gS_j<%#^YCN>)JYS-d_|8WyDano7i%#rC^{&{Ul+FvC8MhOiXO~BRrlcgF zUR6m+5w;~IGqhVmXJI#8$9@6twagJe!1)q-BXVC|VDA@jZ}l);s>7F*EF^9TztA^} z{(j$1^oxAGmroDGO)}Hz*)7o_m&9EjVq92KBJHJI^EJ+oiVl1LJ_H|wPr>7$63;=_ zJ@sY0CM(TKO8TLjr*-LZUB|eqr;{{$>sL!k&WgL8N$5@>6`NH$hLVyrYMsE;ADtJo zmlrEZspQ3I?6+$Fm!Mm$buAcE%Kf*X_7k-mE{SV)*Ct7=xUKTE?&pXHqNlh}4 z`TI5CI$WRTs-ka=evM8+o4BrRTqmx9y`)miK?pI6TUm2i|B0(fh%@4GORAovWf65Q zwomF*JgrkDDSL+ce=Vv&{5++7-ohySR&5G&YYF>|4*L}T1O2o3LHZfy=V?{s%3kiA zhfYdX29T6zXt(Duy^Lv_HjPEMLF*(hU%(XPrI)|*#=OYrs~(|VqQxpH5r`f!OrSAn z0-AypunoAxD1JoV_)(xDr~r~c3`9W$NZMo#iPQoT&Ssn^>O@lE*~z_Rl`>5#W%Aaq zbfvVsu1m`s_%A7WgWP-*oj_uJi&11{&DJ&p0NJq+}HK=K_guE2_LpqL!3= zrt7Pd^jY#>VjD;dp6)hnf1*C$uFuxOYx?RjzIwE;R`=D)s8xJ@HD9f&Raw>S)nZcnb^wFoHs{23gX6j(aozQC zoval0?!7@7owNdyJEv*;z;t>kQ>%EG&gdkUy)d%Q*we`yHndcjVWmv6raX8Hq=W=_ zBrBY~dmGQXV~K^GsI*^6ldQN3u252fpfCSwB_&tmdJVW%`x2kt&xZBc!-(lidVAl( z1hu2jx1MtRJ-xoq882;wA=+Fj%-M{p{$MO6qpTnC{}a8#_OMBT|6k(%(-?W}p$8e% zqh6{1japSoeGkwR^a8zstk12_IL*5cuRL#u6RLu}cW&t4Pia$-r=G2piINh5v?wJd zK^~Qq{E3T~U*4VX!?d5Y$=x2%cY08#yg7CTUmb`q>GgWP8OG|>5|)x0LrS!~JuU-* zME;9j?!kM))G@56pvD0)n52@Dc6@c%9`>cAYPu4VPrbR3rvTQw!;AlA#dPcQx};<~^tVKbW$k{jYv^rCvXBRct(qn&XKu?isWA5caN_WeG0q?UI!n5&%n3f7hvd7%ANER<(LN# zH6JGGZu&^l`}^m|0zb?`dWOP&-A|8A)-%ZQAUz9V6P9S!d>MU@<>fkrX!tncmfF9wT9O6P{)&cB=$5tgl9O|MK^vtM_c+F?Oo~P1u}3&&??Dz?@ihzVVPy!k+e2j_)g$M z&8P^c@(IVM99#AAnPynFQ^xFX)Bc z`Gy&aZ>T$hV>k82Zt5QI_(RuMd#R!1Yq39l*7hJOg;TgHVb}EA&9ENc*@YR3@b1c6 zTY(X8MZO#pmPp=8IjV6~j~_?#PRJo|i@YD<<5=DwW}o;<^C`Zg_KxoQtIfc)E^f;8 zbtlJt_CEL<`tM5S9TeZWM*D-abzG15-+|tOZC9fM=Zg-kKF|QaH}P%ifl}YjjxJ^D zTyi_U9;ZLk8v7ch+=3K^)rJQbYCl&QbN$qZUE3enAGhro`f_!;`6E|}TDv*(1u!+4 z3(qQFZOPYL)%l)dFK@yc-V0$LUNlZu@?}>w>fx&>c|Y>KoqUJffs)xnU1wa+=zKjq z*9O?Fo6MVGv~FRH{v6-2+-Ba+*S;~Uh&uI5zE3+#m)1|2=X+9}!q>}dVGs7GPJF5J z4XnuyzB~EOSZBUTZT}PB+jlSrm^o%oWCWaNp3lhsSnCm$Y8LUG@zK_!>O}JgRo(nf zeXo8}Cot+i0B7)s>A;J1<83*cFW|bGzp9hX&V0LDMYA;%^*3qVne&sca#pD{=4>jO zOH~s5r}uT*95|Uf^~%({so!KBobV~K^3I?hx>wh^m(dDTWvz^qJ=wepd7q&?l+CevkJGZALprY%OW0rI#`flj#0>$Y{_z zoD$cH>5@M8Jo?+8V7nDK zeE+$MR7#rVkTGjJ^6W-N_j2~?$KXDXtcu^tHr#Cs~9&eMyV*q8tCa##EZ6A(8t=Oo`O+HjpWF*~+{JJ?A(Ko8BR zM@rw*ZJLy(d8B=HJnc90q~(zBF6;SsEBPp276eG2l1Go=*Ne6E{fg-(=A5d~ze;?;doyj9lo9F0j;C+^ z80u*1$z8-dp7|2Vg`0_e47E=^9sk3A?1_}O*H2%bfqco>fcCQh-bC(dzite^X6(XD@Of|m#nklj&EQSUI!eDtm}u$gNRQ@a>MSXt z-q)CtC-Z=?0&>XL!)xg$iS8D3>+o5h+G9Vx0l7*Bv98fNug~=&Jis=5Jdgh;ad{g3 zt>l9Awd&KG*hac*(l3y>rIZVT=e8b`l-6fqO(d5krSd)ZGx)!ml**I&99xN1&R&_a z(cO%Fd*b~QU2xc#4iLuW&NgaW@h8VdTsGkH3;I{--)tm(o0%2gtY-$;D2hIEJvJ2D zkJ|scD$x!g;b1IC1LMJOCsm5pM4be3 z!35&Izj@_o^%JUct*X%i?9K->z(wFva0NIaxl;66)EmGZ;2y9D+z*z5mEe-0Rilrg zTBP||)D7S@@GkfU8~~M0tQ4&cQa~Hf51a#rf(%dqt_HV()!;d>0lW@A2491n;OA4S zMsNS2YIGO+KY_`8RRA@>tBa~eYoVS58h{NaRgE@7Z38-juAmPX07igeU@VvfrhxOo zh2UmTT%lU@PSpFr3UJ4sD$yrU-vrNtjbIDd4*n#Mek3hlqu+u06Y3r?j5rRWMsS~u zeHGMW!TJZPM&HAHGWtD6)o5eXHlP<63PyoHs#lGsqD}%cK=+iY(MwRT2KRzRU=?@@ zya={{FTqYw0<4p{E~o%1gX-W|P#e6zt5UQsYE#e_v%da*3|I#?fj7WA z;B&CGcBSa=s0V;smwV&=sDfG>v_W4VwH@dKhJ$m#I4~JZ1y_LEz!I<;yacv`U7%7u z-X+iqbOIefH!v8C0vTWm*tCaoj(Rz`3d{vJf?L6z;BK%0JOGx072siT=fG;w$5EdK zuY)hZE^rV;>hnxMZEzB(3mSpbKwHoObOL9CQ6L=@gX!Q}a1U4oUK0F9nMBC0gkt;h(@ zM5rtRHPccvlGBREkIyU+hv~=|O;61omo^>QuMHa!YrEu}R1vS5jJ#mPqa*V@FF6B= zx7pK07$sK?L~)ju!Pzdkes?_hk}#31ip+OJZf4~oax^O=IelVkL25dpFSS@pkz#Kc zh(r|$^S+qTWKV#tm#EC#!s3F=ab7ydX}O&w?#N-riM0EoAQ0ZirxvAVCyysX$coh5 zTz$tPIUZXrEIuX07jp0CM^08DLO=a*+DCFqC@8XkgParjtO%!_>OTc8tYw6jy4Ltq z1eRuSqer;UaT79&#^oX`*}qkNljTTvZeB9E$>T&IDpKQ*d=2jb>qoBRKT>*16$bsh z+p&#+NJ&0Sfslt1`VD@ERWqOnw13x*)s~>7W-F4f4Tka0gfp)`9oH zw_rc0Li*}~wxBOK4-|np;4V;!dsvV9A=n9w50T3V8iEdBAjkmIz_s8$@ECXndFdN(fmVu^n~-HVI#{n#B9OJc zvevjVkd@R`0V~j8mHr;G57IH91~?WR2WkSjMlDbq$QN8EfD^$VUeS9;go* zfKxz2AdN_4&;&FEvM#t8XbxI{Q$b5`8aN%a0Hb*&;#@Y;?@iF24{mlKMGuV6DaLX^cuC}c`t+ui*m@fg(8`*Ht$U^H}ZFC67Tvd*8Uc8 zZp^#ah|xm}t-#-r4!MH32eHeVlVyH9G7D6`LsGbmvQBt3_AI|)uhW`16PuUHF*D{JXJEsrPoc%$Tf zY9GqSR_N0~Zpcn@ZA8eN=j&(rYAR~ikbCe{#+9-OtM$)PBA`k)MCnEz{}q?)db0E=c;sZY=2M+xGR25f5v3-zZ0qSBPW%qG?f1NlFFLkF~FkR@|3`K1X znrm}5=a%#?6Zy7^erLioh90PAl3eH%%9{(dzO_DQb8hLo_3~9IhseMH!?iBB^DdY! z^lgTswg%0$Ih(VjCGaU~uaHU7;?cV3zPc)F+tvSVdnuk^TW%KRslV zq4neW9x35VbcM(!Tt%N=^ec$Nd+GyFr^oLopHO07=-VvAUm~>ww0?TXCPVAxS_xmG zlWQ>B7&vz&qd0wJ+5v2&b(>8Ji(-^Gs%+SMl}N3PO45?cl3o64w>DF2l9-^_MXw zDQz<(ZkABX2sMWpou$lg-@_OqoSGx)Wd^l>CjbuE z$8};8TtR#U`qHtVN{r$f*q$BNiA@lzr)IL2p|nln8kvWQU%~`&C)9IvJeP!GYZ2E^ zK!-$?czi1uxk<=NLh-bS>nET~q-hlT9&xjG$31jRiEED{M2~p*L|D;X%qUaTZt<&& zO}DsjFBY*AUAOp^60saQm&LdEX;&)53e4hPT-)ih7k~JURwt){%w2}Lg0b9P?ylfi$+0wkta4Yot3sw#n8Jtn6!)-Q`Ssp)g7{av z567<*q~Kv~H;R-dj)&beRu6cGxR*V|XPObj^|1R0=126|Q$=6?<57KO@4VD~%zfN_ z!cWWN=tuFT_)>R`wt3uLNe|UK#4R`^J%Rm7Be3;Uaa*fHKdH}4-KYG+yI;x6)wtBs zIZ!%h13U3q+U397vM_9*w_?iKp~Wb>4e<=$!kXu}$RdzpwjGbMik4UpB{|`Qxu*(dPt=J9`$L;oafA~)B$hswzp+(iEUcjw$c&#QlOr~k}vB40}DBoF>8-qZ5l z>px5Np?!z%;NMI8kyCr@`ZK_Ryxki??)~ zhmIp*d$`!bu_Sz#)|Dr$*9R*d&NKZrba2hT`uF9g3K-SlRHRpwiVuaGZ% z1rlewC-vay0-7duOgh%;kz^~eX`Cec8aD)gActuup?W0!%Qz)Tq|nF*dIwn9?DCCH zwWKQQn4}Yux+1%%6Y+Ld6_aWwja4Tm)s&kx_Q&?dcE)zadL-2$UWuheQmv#WN!_^8 zDf&vsB^}H48W8VrHN|SB?MA8^Nu$v%w{{>$yA|Jiv^P~!EXhi$kTeQe7vt5Z>OkyU z?RU2M4Y9w6-Y|ApBH6D%eP;e(4naonR@KJ*1F6FMVo~#8%uO1Oq>4dEp%`xNj@e0b z%}A1&^mXj>*!!_h$jYN_xpPS)xj?Eq+h&py8|?UenY|~)^&nTvwdWwY;(8>&JYaTF zf5yIzeH9y{Bpp4HR%m%IPavP7y7@tDW9+3EvNi~vq~k8Zk9UP0Nqb^d%`|rSlTZh4KgT|b?TBrOZI2DY{tHYW#NLh#F+YpF8T*vuwOD2IUG$q{ zujBGY>_qFm*psnWW6RAAu~%Zx#6B=LVtN+$&9Ue4{c>!V`AlqeYz^sr1k+2ghdEZq zZj9X$yEAsRz9UKTQk^$J+KbIb6!9Rp&bIm?QNu7Ei@idcZnaj%mdD;UA4jIlR1oQ9z>lVTSTl=%tf)q*xwU-fa^Sf%a>LWIrOQ#K1LBS-4a`f%lz2y#CJC- zxhZyS>A9Wb%Gg%(I`mh>=HPNw><8=mSW#?ttfh62IXiY~Y-+5Ybt&d)__!iA z1OKyP4XvrM$+3diMX?-A7sawUCdc~52E>NMx^wNy&UHG6yGRwo?=))~l0yt5H+CNq zbaG--V&}zDW8-4^v2?;^$0l(e78`7Ji48+WNN3_`9cvS773&sj8#^o3DRw63rld;Z zN+s+il$Ry?$@Yo$j17(rjGcqpo$C)E6&(rP54CHo7vVdiw#ThYtU0l;Y9-c^xEsgL zh^64~bkGvpMzOlFda*{a`mtKECb5%aC&o^Q9f!GYtY)l6?08ToRt?mRRmJrfY%9io zm5Rssmp<>Xj*8W^kH)1!>}U=vwm(`uc7k0c=Ax^Jxg@$bx<6`TmQcH+docePJs91^ zc{eTx(7zr1NXPbL^gHZ!MSnxx5&f0pr|4(V52HV$ejWWj`Z1=jqg!$NiZGuO=ELZF zgncdgN%T$pZ2|A;m^O2MIl3XbIl3|WO!W2WOVM@F=c7+yemVMdbZzuGus-@2cscqg zu4}Me8NFGDov+WUq6f{j*e}EMcyxJm5&j;Iu8uB=-W$CydVln?Xqt6R^y=uvxX+2s zicXJS5uJ_g%xF=xI65^Nvnn7S>^5AlkKPoW8@)4n4f-3wmEel#48mR(y^xTXV!jw3 zm*8Ut`fG_x)GMOrN9UlP52g|0>}V$TImDiW3u`MF&QQM8`(^VHWg7&$^=M=x9gW`r|q{+6&j-(ZRXX@k?(otB8_t> z@`QdzHhUK&sSh{DBhlPoKY&e0Gp}YfvszhAt)A8ZtE<)D8f1+{GF5l~k-+1*Ux@^sE!zD$q*sy8$m7|J45}T-<1vi2NaT6fdLP}- zNT=FleWXKufh#g#we3FZ59IRvjQq3%2#4E)sI}U5E&EveXr%JgrADcXsg8XTQh8V> zW}k{o9@;g#6>@n}kkE6iT^~t39ntm1zCXIYT4kLVQma}cy=t)C-5!eks($vl_DJkT z+T)Pj)7I{R93Nx~+M|%(Q-E$NlB^~o#YgUHhCKx}6%-=bYKEPO`3id$D6pp^+vf(P z`&@;bpF8kzn|+;qE3&U{L_g17XfHy&5gAyEv0X@*>+Jimd5C>zA3$wD*JcgsQ})%I zZ?bQ~opOflJ*W%pjrJ?{t4PgShv_Bol>HQ@*X%c0%4-{zLm~`#WrY!Hu#(s88%2NEf0tM9z?MTn_p>&Y##MIbvT0^Fh11 z<6x@l9P9jqucMsfu{{aYaH=>Fr;byPgLQnMfpeTw3srC`sO!|_d>S~>sqeINPR94? zPAjL0)6(habV1J7*|@O|5BpY5XQ!t&u{O^+#cAs68#(7Wsm=&YBasO<#uRXS?&Y z^94G?SkL)uuoau{P``DyI^R0moFBF8+njfSFP%NkPUm;$C+ArQct-E8e+raQ~M$UV<3K%M4Z z;7)gEx|iTGO}oy<_GynJ?`IQ`>VUp-R*wq9>ktsw?p-}{bflI(MOCt+JN zQa@4~yX43Tk$Qxv6*)0dC(yduQ2mN1u zu%qw)@hYW8If5>;aWnGVA z{=E`wvf8kMZ6s@X>a(_@K6b;=i(L-3V>xy5teP~_Z*jOc6mZojd$hi|U0#xx7N;JQ^=KV21jIrmeZsjAV$65U32y9#Uq zwTN|3vTl79>bpqio~z9dvx@N*B{B(b#I*=11hR{fm~LbR_iC-a%D!1e=pH51Bg8I< zASv}3)JM5iQ|nReW~gS?^Q`=i#IIb9HQv=&FD&O*lxM2O&UK<|Zat&z16xs_VLjPJ zNbP8+p5^?UaTa@Vou!^fe=+NOo@F01S#N$35<&zb4`3obCL&2<9TEjD#`a>=XNl=K zu+F&1{0j9eOm`zg^&T@#1!04$)?#J)MMfH7TUZwxr&?kTj<1N}D>%F692Sz4EuyP;J8=2w6qqe(=0Iu$LVl(3)rQswQ6OxCR}T)xq1Y1 z8|yLb+FEB|ZpHBkrq)PsX;&(=tfXjfjYf)d2c)&0X^A;F&cbvbl5R&KC43aJ?*-Sf z6S~+vraD>InWKzumYCWok&t|Lsn8wpFX)S{7q*|(K`m1KG0WPF0hl_dfz|`qc`G=) zvzQ)GL#$4yozzfEOe3vPsA3+C^yM@oRgZK#!FXm^kK-?KbjH*f3A>%uIL5$f#&|2s z>Z~RqbvDhI!Eqj@&dBf2wT3A%2S+h>6Rl!Z#T4Y>It(`SaWxjZaY%VCRz+5^H4$mg zQ(>m2TQjU6q^Kgn>jJBac^(+1W?F$%FHx(R7h2WKi>%t_#bB0oiFGOF+U9H|;MO*; zKrhFY)*MW=&8w|zN`+p)%GGPF>#XaszrkW`jyX7PLVE5k)~$@%Z`V?%=UaDK_gMEa zeqV^}=|xDNUX1+dCGcktAzybnQmBKFqUv=*TI#Myrhd#ytQ%rg38p8kwaBVoX*`8Q z-j&94zQpSF$gJLg)asRn$mU%em(Cjw{RXaY!alyOWm>N^-iJB(Kufk>X`G@?QJ-iD z*PmJ2ttpA)ZYWvL8}Cw!LoypqS{(E z_9-fY?MRL&aGs$L&o+<)dJkkajM-CiQBF0HZT%m4vuz69_|Roal1MTbn;~ocZ195 z=}RH*3!~8=K4TCJ#}H(52O&ir0jqH?Hev7WcaC5I7^G4@B+`atI#xRt@q5ND_}49V*woRLUh z9}Lej8rEf;W?|BtbU!V7tUXqSBj-IAJooNWr_d=viu?I+ zEYo0GX2Q>0JnB5=JnlT3}H(+VrhNXGWc^_6rn3|8BPvBm*IiJDKeC~Yd zd<7%(4P4B3&iBp_a4tWh{_Onf?1FXq-PsKz^9O9qZuppexa@ZhI0u~)R0RuTL$U3K zb&0r9m+33F0=&z9=P3A>s<1Ri!^YHrgQ*SsasvFyNp7;{Vj958G;|xejp1IJx+(B5 z&D|F6sqiqTxu?6W;9%Ooz?=c^(jLyGqkERy$?fcRfsGL!rYDR{Z})7suiFpyWdNMa zIqo31m?7>^cNkpENOzQbt~=TtNv_=}vGbx>@cd*qI#om^>Jn0+^K| zc$xFvsW36q;bLaO%v=lubBTKyoXh3z74DVrFT%oH1EVq*?&SveM)xN77WX#ycJ~fA zn7iOu?sFHqi`)m?#jq-WJ!DmH*+W+NmOW&}Z`ngu0GB-yGvl6aHLFs~9x}%+>jw`t z7yqbx5>n`ow`5JFtg8I$A*)JiTfy3rC)`?=tho#yYuw|kHSk2?W379vwU+gi;p0iS zh9&DOpK_032MJNDaekVkswHPRo-K7e=T@E-NcaDQxzmr3^Zx<6p~{}9?;`jAZFWk1lYKN^V-Mv` z><91)y8>)rZ-Dj4BwU9i!spm?<7xKvU2Cq9kyn0eYo z?A5W*ypP>l=bQ7`z2gq#7~Y0F!&{JUcq7sduQ%tiAL%vhOK=std|b)w_~q>PaT$9R z%wn(A3)#6~DiRBekyTj8UItUle0DX+MV4VUdnivbv)JWe0<$BTW`>#0tZu4#o;i;F zdq=ZB^9bfmhOv|E5OXlI&*!i+LVvR#dnEK>r-a_@m(Y`46S}i^LRWTB=*&I}XR(_? zM^o*k7Ry`z)NsZVRWf=R$LKUPxj8g(hZWc4BB~);H_1<82-DWcFq_$vn|K zfgNybA!qS8cEzp1t_?>s3tg4{nv>YaA!1TlW5ibG;XhFy zvwy^g%n)s1H{bWvyX^k^wt9;lRo-CV&DYq&`ek<3et{i>pJ(5RXVo+6Y4%)sQms{M z*m?C)cDr89J}fKQmtr|PvOJ`gvU~P}YBBp}-@%R*x3FU2CidFCLGR!)m;JY|(fhf~ zVNZ+8+1uqZbt${N%wmV*3)M{ae3{06-sh_#Rmd(dQ`iF|kNse>+0ShfySYtZ-9Vvv5LOcmVn3OI>?+fry=D5an?`T;nd!++uHD#OqYJyxbY!>fI_hMV z%uZq_vJ1!Y>{?Sx)nrGGW05_23^GZpvGSpcmRBlrOOudc8fA5agLG398K;ISL9W;V zWVHQ>470tgsE|FkenZOK&q#0c_5<62tjG_Lptl)0vKx?c_7dM0o zg~ok+hj%;Q=-tW}W;gR?)eU@Gbrs(LUBS1N`N#>JWUwln#=QC(Ai$z1&(uj@JTs-OQJ*S|8U$M7YvNd2to@7!`c z-^Pm!%VfR)mpxqS!6eBpc)@<4))&!IoM0c9jA4!XwEMZDK`@6Ne6&Z{>kX!r;a{UCGj16j&mSMaT z$%8-g2L8mmx0!cwGjHL~a8kb$?hhUI7bIHl(~`-z^3E!?TkkU$Rr`?|TbK9xJnJa- zd)uaEx+c{Q#O6Cv5($sboX8AjHc9hUmK@_3aSb9AAA!vP>PcD*Hho>R0)c_wuK@j#-T7VpE zN6{9XrRvcpY{1k2?k$g2V=HY&5#gqQ3F=L*_?EtEB8A)HF-eS)rVWQkVJEIQ33R5d zn~XXGJk3=uK-~ytqVEE-mGBgD{RZ)PML(AIY#i;+d9-KKNa3rrbg8g)Thu$&2ehu! z+3_r$_OEmb-&Qrr!$xLsukTut!VRjiSvC(l&|(T3wt%+t6>{uH;(t)Est9 zlTSW*pC4v@PzLekCVcA>MTmcdq_2Zf;;GBZBXsaAZ(CA zk+(iZb-?}utEKwT5_52TZ9K_UzJ}jyPA@3g+@Z$N=bA(>Z?ZWKHt<`OO`q>ORfpc* zQg;F0h6N!-6@F-*8fl)YJ|b5>F2g!?z)iTwPhljNx?3#?-#~4{X9FcH)v5Yf%u`j( z2KX$^Sv6D5)EAmR_4cM}&i;8GNGBl|5N}IWjeBaz^J=LESaZp@2I_iq2m8sLroOc< zB-RG%J8LIgS2%PB{eHDnKam$+*qJaW29gckm&)wqPE69dAH5d|TPE&~Bh) zin^_4&^GA2=m5LcACQ!09o_YtO_2nKy!) z;>@7O23`c;IM1HXo@sZphRS0F!=V>yj!=eFElq1nR=%+>Y< z=EHFg@rgK#_%!>l35)o=&m)FI3#a%p;WhwaI=xj{n>4=|WB`h%V0{>3hf9wT|sE{QXeHtV@uR&GU|m}Vuvx5B(+HJ_REc*$BYl)_D( z06Te-lMF-YrD->NNY-)WyxXeltD>)mzP{6d^;-?$G8>0nn#5VlLot=@SPyolb5@+E zY#(PTI}k@Nr?<~n_Hz!;RgTpxrI#j2WvZXnbA46p($J5F#msOro$>IR-rdM~0xQI_ z;>=|p+~pM3m6hczXOv+rFMzlF-kQxivMZb`;V!R=vzOOv{_<+gV21fi?~0Pjd4BH9 z59QKb=-?=%?c)q1M&v!NJ z>0Qy|K0ngz=cgh5^NTnGx}y{aDyz#W_&JRj%o?pdJS*{O3_Hp_Saq znggu{3tGcH);$g`v?few5?rXqgC6gm%=)yttUx=4HECf+^n`M8qGy(2MSH|~(LRS| zMn@cy8%@{j==cynn(Z^B`G??0XK0r6!Z=TQ>0z1D>wT{DX4ukOeZKTgR;USQdN-@n zgg0FPb9%qeoj%AawWAqHl|AlaM~t#Z(0>f8vU^S0<82s=vWM(p6FxqM*(iHROIby? zo1z<0>bOn4%D$T$t=rhI_cl17zaI1GA8fGXEXQ5yW$P}^;o}~)-nvJXK3-BUS)kOh zUa`+7{M5_p1#6up>hqi{o0ZMyEIG^3y43Lld*^zyEQ#|Tb`14qHWKIWnYB#R6~R0F z6z^r}<4NW)*H}-m^XOyDfO$sL?_+P@ zdsst#mo=Z2(|0oSdOI_)w=xrZGdlp^$Sm#k%-7CkZ_{ho;q)rzb+5FpV6Jzzbs00i zmsqpdFZd$sLTjdV0kg={nN6O`ta7nc#4K}xHO0!e@~m8T7S3kQdJ?nO6WM8aJagF@ ztnE&-QknlA%^t*~tdZ6TYdAAtL#-j!VAg)0!wT?zR$um7J)61sUaSi5!CLTctOoDG zmlS6*yWhcTZ?$7RKwI`TZf&(Iss0-Haoo5WT)g~+3Qsp@9L~UuWD7XDzpFVQS75!!Ai1X@X?VFBdw0W zN&lu<>0jWbe+n_vJJ_dLnCUOe%}u|42zL4<_~{pXhWc5bqkb~PQa@UTr(OnAy%etc z!4O-$0KWQV+W!~Tp;&9#hx)oha@Lo^T3=+|sb=u4)3n3z)@2#%vE~@qYLBTN5Mrnk z>~z3PCs^sSoODC;6m|&qIO%|m79P4f40J{I5k52vU6y|q=J{uzcm68GHz&B}fM*Uk z=FMu8`UL)T1AK~b%^uJEu+J)=4xiGP-No-#cdGiOIA!6G&u6#r0=VFF;Cy>%*7tP$ zHYC3K>H{Op`wGu%vvS5z-?7ugcJ{FOgq>+VfIa>H0)twXKQ)u&S4E$bqMi~rV?2yI za^Xd?d>{>eA|lyyi*wR4J#p}SDdxEs7iK0GP0UPANtu|Lou8bS?~6DuNG>i+osdcR z@p%O~sbZT5lUtCPo;M*kYer^9a!P6t=)C%cryR}?Qr-&?J@3WtdGw^|7w1mS&6}Ew zy!)Kg+zHttz`n2u3Cvn(J+YBaq~B-e6ld!+Bp2pqre}@MO84U`Y^VKnm{?Sl->!M{ zsZ*ymE6gh{NY9*_T9DZ+uV6y+wBiXfva+*Nn~S_)@18{-e@aR*cTt#^eST&}O5yaJ zw7l#>KThQ8i?ICC`6uH3k^Nqn>B)dE%qu98w0d{shbSB7$ev5bpIR`XSoRY@_;{0R;@blQxGI_2%UgYa%PDss7 zZs->PY`rHhpOs3u5$&XGq!vz0Ddc&xML}jpVREXJrOW~zLy(3bZ7BuGskvltA-fN7 znVi(=$+BxfS|+h#F3Lmv{>03Jc>bpJ_=}&ZSw#~?V7?!RpAO1$%J}m59qe5>J1eaq zwO~5?G~^Z)uSzg*C3FgI4s?xGEjUMIl#l7UDW@jg7unR-7ep(H) z#*_V8-!!=}H77GUwUEc@U8xcNx#6r_e}jfxac6f3KOKGsYCi)94d^+jb3X|!l|`_B z1h4C45>E#3a3y~_XJjOI>piG@*C7K2jTHOfDHLX=7Nk#1Cf_HDzX5FKP>_}3RXyZf zYH_yQabZCoWhFZ=UBB!28_13pMLhI;{RomJ(~BrxsRbFyln@>be!Au95|%Hu6&qhn zpf2J5n^XWj!Cl*I-^0Dc<@vQVWYxvhz~q&B@O$ zo{*KxmwvM024;D5J-c>I?mJ{a@aC2&VWs^J9yaLovSqMmCR=5&lLl!F?!HjA<)BEV zW+!gdIJ>xz{2|xlg-@PvMi%vPQC`9H@G~xuyyg)bgNq8X^5g!AG$V^GCko_N{OYAJ z$iu>NcqKmSqGWkVli3HuEA^zC-Ayucc{zCKgGcu3GC;(t6L0P*Jc3N#EN(|$rE>>U zIC>B0pFA@;uONS7YVMdsDh#7baaMLl@`UWXG;W(Wmjo5doi%4O3}5TL5xk9F*`OfF z9xJ-iNwgB7R?Fz--7aMyhj&okImzPec#bsm%b(-QNtT^bygD)?lXo%4t49W9>U!XB z!g5i+36=aFK=CF&i;}wy8P~si_io+0m8s7XZ*Cd|Y`m_N3D-G$YU=dDLxc?ZC+o7< zl0+IQGMv&wk0AMPeo|RT%PCC)#a7o5;rC{6aqfV@Wpd4bpLHouosgPEAt+rXkqWuj zE?GqC7nOMNEA$?&yyRi`@x{4byL||cT_M&=xx+f>X!X>Z-Q4#NjA|;NTcXg1I;q0 zaV2)U$&!6D24&`uZInvg;0IMqazm-S^JrnbcD7JnH~)PrI82Ddi`h4eLg0DJ_)E;X zRmh-0iRWAP5xnd6%#S%)`ZZpK;~pZv|pF*gQU+m6dRgvAU)~ zLo1k7I61j@bJ;J#FB3Grc~ePW(6LNZi@G-VTXw%U(fP=pOSQsMF0+F1WCjBtFn+yOb@3P@iydv|To%Y8Qpry*t zebQV!1??XNBtdV$}OH&rv4d}nNdtT=09zz0VdLMC~TUXpGUVljS99Xb+X)QPBA^2?7Z9wnWR|C zy$+Y2#~ZCXUun~+Ud5x|vn(}q$;q0bJ2~;^DtAlkpE}JO=g>Ax%*~oo%>7av>1Rlq z;&IFM`mjS7b+Akqt5FrC7kiynxjtn}HvsaE`l%#abT>_pcFv_g5_+EWN(#mV;o?;X zA-uk60lm3tSvkcyi5S?|g;$Q+P96*Om(DB(o76x=-7ILo{J3X6L*#MgrR%ncK1O~vL!CoCX?iib4$<9jUOC<+sbzC{ z&LmQD-77zGAEcfx5gW>dD-l2Ank6T9$YJo5mvLrt7USN(X?m0C2~$g@P$xAdrF!_G z^}c;pZi-hQrRe&oX?f!#oL7=kc(vu`2k4GCFG3Lm=<(#bcaPFaWEATi>Es^e{b1M~ zR6Su|{-$|Dq@(VQlj3DXSLEXh@^X@CW8@Zi4fQ+qx2g5|puvE}zpQLKq{k@U2q`gs z3yO(cPy9%o-?d2-`t#B)r<%;ooJt=wo9qy zz)3IC&&YUOnn%!MJioh>PH~$+Y#GJ6*^9rJq3iqghTnM6VoHZ*NcRy#26fkc{2-lD zv3o;T@sldUTFQ84a`(P6#HYKP>s4TKZ-aDsJVYUv2R7C3i~OBGy=bW~CeXbn;VV2uiGY!QLli0&=btF*j6rH(`{L&-E@- zI7T;>&6+h!G6rY{t&m-d3sdT+>vJIqOiu2kt9<>A`Juc_(AGks6&C0FExq3XlQ_cG z@zE2u!2^Ok(^aYvVu||1NK_|*ZJF96WF4+7JjzScZ{8?6g|zyE=72!bu6ppAa44*w zuAhPsngO#UBc}L01%XrYv!JL-yD)T2r*WboHd5odW>Nzf&GbXjXQ;Lb(jpnn3i8A) zZXVdw=+k}V@BxFm>DDwna5HiWvQqroOXqyQLA_P(#j@p5M53%ip7yJO_$q)y;P@w>QXs2s_PJkNvlQ^LJRopgC8=uW|1 zc`cE&XU4$3Lwok_Z}f$;(Vd4lZ<8o^#`x@_JbfbR(7Do=>1doY-N?+zDoXJicb|~a zEL>TZMlAh{8k1mV0v_4WJc_iuKKUY5Q}A3pw~S0)E#Fn^p_E|0y%tGs*!LDtHAWG8 zxn>$eDUdvsXR0oEvc zoL8S2T}WaPMK&Xs7;_W0`Uzs+#e0@n=_&DcMlP*cgMikTMj}PV_$e7heu{W|;ove0 z4R+QYA9Sr`Z{R}uaB+%FmqstEI(8p1a8UQbgQ3)fosvct?pLQmo~k$0&t%>wgPRWu zb-W-44nbFTNWr1W07KD&4 zxvM{=L;sEz*YoYsCJB#+pi#u*WX4`8-Uv~Q@&1+=$d|mSv{F=yAqUSk=*M~K(lrj; zn~(;9i#LxD??WVFNb&oy!e{Ep$a3#S;=O7EvyAiQ^}_d&NB?op0Rs?(;uho~rv$@( zxhHMmjTlSYPt2pm@w->XkYakQdE>`3!vM<}a>&ig%ALrBOOX_cbRzVP<9uUbQ3knX z|M{iXXx&DgN!pee0IknBp}Z-VoYjp8%QeLrAvrN41V%F~^T@WLm_dYZdmf6Cf44&ID-V2$T=$ee79WE#u z=a*CMKNzw~8#go2F)yU8$_yrwQe@0)F!m&C)24fA=B;NGON4=~Zo;Sx^q>`cDz3s{ zX2qklys2JYqZLxA6&hX_QBMh@FP!Y%Jk7HhV8hPOq|T>i6F-oW4FjH&f`j1{GM!gnZ9JMx&lCC=R+1`&Rn((Sst2r)L)* zGNxqacs75{O+yd*s1*Z>HOOW|hIKNu{L8P=FYNOSME&20h;pLGga3}Sb@b!?4nYOs z_@8i`=qq3=5c{?v_kQSez@=bG$lly-N7KP9AYq>N)lX6P`TFoR!uno&>}Vml20Q{b zf*qh>pB>Ho!;a1Xf&VAbi+%OIcCUngGe`PN;)`xLpWt0uO>G!5iR9uooolXa9N77o>vg4zN!< z_t@?rc~Ro!)f)5){cLb2SP2&6=Oxr_;9uZq!-+NrXM+{EjYeHVS$GqerV~9D%m7b; zKS5K=iFO9Vz+^BBEauuzgSUXgH6Q$q^n%S`EBG0x-`R5=Gy|Q$Admsh2iw3e;6mqQX!~Nt&obo&X1L%Z+%=zyEQ`}xOc`)aN~)UqK$p~yc?^; z-P3RryxX>N)cC{;*FF?J9XG+YA1XzA`1Tp7Sm__jLy!RG{hAV9bQ8+B`_6G?@lRFb z*Ov)YLDrs1(Mf*%^Frb8!%Y+as55={+e7XPun&F%{q!#lx!)Z)qAvICzo=d{p8k76 z?(2Q`&rpN>8;`r-)Ss(Hi~RV%3%U2eO(5=ze0PkceiMAtFMj-cL*aYkCU~V~<>+gE z_>z$Oqqt23?oXAX`*BBWR7M}9Z$9SU;6&__KlSW8?oPO8<0d!*_Xd8r&Y|!^cnbPs z*Vhj}BIJG-Zo#j}cNcSTebMKD$C_7;W)n`#GkjI_vIo6Des}rdXNTN{7}n%4>NWm# z9|*bk$6g@6b%Zxj7lzz_(JtQUci;W2pA+|=hm%0c?{dOPc=?6XFY}%9d%=(QThzdP zzvpCZ!EUSX{&UFvfbTwURMqHlTfO`L6Zhac_xtXmwDsLfLg5ePUYYamUguCxeD+faH7h@xs`%9&03qO4a2p>HEul#^E?xTJ8 z%IJM-V_l#@y%u*dzVutd{YA{@izUBmgbT{0XXBlR`G&QA_@<%wW&MIcer^5mgF@~j zuouX0yPv+)ko!*0NuMiz=3PJ6k4G$J?U_LC|ALTxIGrPL-}yt;Xj8(YHEs#T-w?Av ze)sv|SBBhWQH5Sufx6ar-xzZLO#=GA(SG{YhunV;98vG^-MLrTxywU5wVRiRXWND11fVetv^$+MhUu z-2<;`-Z}=2`o|9`qv*8a$g&A z|Il~O3At|zxf`E*`8p}&{#nSqh3|fG$UXf0NBizGL+;_{e~a&aTgd&6Q2g_;m*<-M zf7p8y__(UN|9@E84rOZ*5C!Fe2Gi0>nzoeEQfS&FZ7>^2O3ON(WF`xpWWr3+1yMmn z3;H0Nf})7B2%=C{%U)TO;=&?efwFH!c?1y^6y^W^p5@+iXC_Je{C%F+NU)t}%CS0o%exnoqlP_xiU5@{gj(>~s?{xg1 za{Ny*{zH!c(~ke;#y{)$Z*u&9Y5c#8zs=ug9RIhB{|}t--*^1KWx~yI(*J_-m-PS0 zguCD2f4T9O@nM7Uf66??>kr0X9=|u?qE7#Ph2y_F?h@}R$Nx&l-+M{>&vX2rcl>LN ze~aV)s^h=P_%}NKuQ~o#8UHTFf3xF%D((`$iyi;h9sjk){}+z`?;QW9jQ_ii|L-0D zP3HR(-U;gO4;=pqFYE8`=lEac_|G!_hdBP%IQ~cAF7fYl{I7QWdrbK3F#bX+{r_o> z|C>(u3kWYi&obYU_aDiB{K@+1Jlv&SuXVzIpnUaz_nC0dJO1wc?k&UrHOK$&PWTD0 z==5#N{N6hM*uL;wWc)vH!e8t7pKAQ0&iddw<1h7lo$=qt@n38FW&GZRzx>?a@xR{j z-~LtYzbm|qGnQO}znF=4t$B)%>u)Jr9RELCN1js+|Mp@0g;bS4{u<m2|8wEpDJdgFf&{`UKi82^WHd&~H5bo?JS z{;%P-*K7K_Z}D!Nv3e8y{RMZ4*Y2#9t?MiHg=dWk@8NIbf2;AA{%x{xpXY?X+XFB$&?ZYLS{vmO82jK8ek&j<4JI>-NZ$Ny&I|ES}ChvUD|`2X4Qzti#G?ys8v zzC3OE?sEJqjen!#{}Wm#%lNNz{D0>7@BX@u->)41pF94qneUEyH^`s+jlaZi zH{!f6(zy8vpr@|F0bXi;RDpOg7HkI3gLUAl3gQH2RKgQ10^;^C*ibbl`o(EuqDM|26a5Of8QeQ#O!P7E3OMSZ zG11GxK{I&==Yy()$3!!P`xf}ZtTE9Q;6$)5I2-(A?wIJt!^T9{gSFtB;4QG|aAdO% z2Ap@--F~yhY?ckoQ$Q*Vb!X&GY-< zi(tZ$$Z|mxcwjGsH(JI-1>(-NOwp@)hsV2)pZo5HdCQ@(?wfIYxQM&;x6l9X?>{_9 z+Q2GMF7G+&6p-J7z3jW=zQ(*Sq}U&w-&_Ph9qE z;{$`)$UtVm`5{VGaoHhMZYj~OiHM>^+-eu4QTdFE?pNGw%;n-$5#^Z7#Lr_7u?p3NLU}{cs0oXK7a7X|pLKHWMd6HOLttQKY zoo_jTCHW7L|3!NyoAb!^_Qa~%43<-&3!3Zd@>DWH0d-j@a*0Y_)&vI-Br%p)5VbV=zS}4t+aGWs)OS9O6!NE|*+{ zTp#DQ6;`L0bA_C~RN5_;wcF05SWK3%Gf#m^>a7keFe?wWmczULvPHVX_xy zn#O7sX^mYn-5kV3y_p(Fk7IKU57;F=TL)1?hEz2Z)#ap|gJdR$xoNRMY0w%KV0~;% ztJ|QUMiUN|X{X;!kfk&sb(}@cqnm?)>HwA;-AC)UUk;;XQzs2^>^Iaen&^vWsILPh zhxA0xTXnBG-SX2$U!8k4YWvc)*!m&;tV@>@jU4C9s!Qidzh2m-7w?U2-rGJtx4M5Y zu}XT+t~9z#QZ{vE^Ji-vSLrqbQxo=^%AXn}wk+t932GG3Y$xt3M%#J|zaWDdBkZ{d zCtsYlEfoQy0dn%xW}~S&xj7s}OM0s_LsDJET0pG*a8);DjFGm{vZ$uDO_jAMRP#ff z(~xxdy6T(&rhL$1qqViP#~YffYfx_FXnB^yt2Agi@X;svpvEn0A43MxAvv|KYBFgy zib5oxs8BuVFR4>{tfRAC-Ip24`9!FR*~*Qn0)`+)Y3j2!?wMp|~FP-giA$5|ZT zpiQf91vE~-J#rk?7+$A_eL3({(1IlGibg7+R@bH$n8ORY%TIKn$*wey&7=l`1Vfb$ z*QyWEt4`c#sp+Ju35Cik|A>fE)~CeF%jPR18agv+GTOyV3;e>C?yyeNsOE6q!9rlphiF3mEV zjEh%z3TNt|9m-TyaG6mzQH_+7iuA84xRCg1vf+rU48%l$!xYDs9W|xwsN;j<*dtL% zM0GoGW(kD}k_*m|XS*v4-Ud3LTgeL#gAc8XL$)N5*x?bWq9W-xKDtf_BXP~BQn z85u9?&SKw#$cLuFR50e|M={yuG?VjJ)^0q?mZ-YVqg)@a)l(idy@4C{YE*pUiEK8p zx;8u^r{xsjGB8Np|G;Rkp(a&4Ik;1>zbh%N-c;CevS}C;PsU z@x(x7aoLhcc-Ahikz?im<0Hogx|PRACabzWnc|2zMWS9K?bWRdYuiZ{sc&A~-m+NU zBWgI4c~Tqx?cT!H=EW`JBehL6_O-sLtribrDO9m^M6Dk>5~#vXuAbjEIWpcHETN_9 z9@X|q%$deF>KW96On+Bz_mE!e;9fn*sfmsu8g!%~)!&VgndWS-SZQgJvrT2Os+oK) zRyE82pHFL7$q_Ql+t2g^rtihg?1OnaBf7(usg{0Kxo>)@NQL@VrmKRlRY)V#ufEE#sA@|RCr5lI^~*gbJ2~S2 z(g$WIN7|~JYU6TF#qVFV&95$2>tg?8nHm7>-fg|F~LhM8=Ckcm7|ST7=6aeW7&S5(UQTnqDkAVdX}xsW|zq z&fm)XQ<|?`8-(bbnYFDN((B2|d681sV1_@H&R_PJ83$t#-6hP`cei$pRYJk&~Co#r${iO3$9jP_#1z)W*GP!-3fnL0+N)2+fM<%}@4!(`Q= zJMT=t%z&hJ%gE!;|JAwwxQq(R-yGLh|zF?HiuSE8dgBJ&z^=EJEI{v?axjU$v|i$Wd5mJ{qjrE&vc)2Uws zcxsx76iv^ojnSVVpPULCiEMFrCzKJs$%x{WRohvv`ZZtL_g2d_`&b>)jcjpTq#j5= zqUyNc>xTs>wyw~kfH4VzTvX(fM&u~cS3M^w!i|>6x8}=n=~33b#b{I` z_m{@>O-}tPG+-colh`4!{UqOl2&5fQtAe$V)EG)h87VR|Fx7clncn!hTm7f&m0femWKPM&?BP(Vt(7Mc6Oj^F z6GUoxjQK#Z_8|oooZ~YS72S>rHPmm{Ns2Wy6D(Yb@ll!GE8AVm^wQR(w+Ox1wZq1r zGNY3hNFq3xp%3-)3eAe7=Kkh_;kaKzof|sgaffokz;fy8~1QHQ~T9XwH() z%5`a^EGH`w0(p`0vUZjvRIx>~BL}iPl7YReH;V-^6_UY5H&kt$$!|g31IDyU#2-!7 ze4`8l86aC-zcoiK4QobIj=jAtJ05Y`Y~NUX6VO3#?g9C%bK^D zhG6Cl3ja=t9B@En?%c?J;)6$oh(sE(GNKucJ}wrPG0So(VX2&cPhwW%(z!|1 zW$;%1w=}T%!1u;KC+2*v^;!z%JexoG=QftT6L!31FR~eR-waEOKIa{0MY7K#8P==&yc z2MRj>Hf^#=EPSg`+FuQjqyDg>76ie@g&#L}J-4L+B_BiKoSn&$zL+1bv9?i+C%eMy zEsC#}srY;Bs_KjsP=A*-ogXB~2qkThw#eUJo6%DN<*$#4t^pf=7hwJGY1^;y8!Xyx zY;+k|v;ElUdY%!UQPfiYvF5Ab_yAYry9T;#v-jgjJGzc2Zb|Fe4CC^=XPUE>7&wY4KhrHCzW6NWs!#~!*620-lwA5 zN-8UDs*QMbx{hDS(kDtU7;fX-77_E>Gjh*>tQ4wS8@<{-ZI{Pu$!0p)6=08Ik~ghl z+Vl$kn_4wv>a=OIlnr5o**$|EPSd=)Y%1loWx56#FH&Be?B%KD!xYqFIxF~2dk>2{ zD=X%;O9JFffH`XOTCDP;zQHD(mYR!XL8L91az|9dz|bcf6yxQGL|U5*N_#Cs$Rs+w zhFw3DSs{o5k#GG^ zN$9vl0`f>%d!%d#j^$<5Dip*6k+L$ev!~`({uEYkLi0J<57Kipj5D%@L9WU^HQ7kU zW8urzp>RmF(K?`#IViaX8)nnYI<<64b-GgTwk*u}$R{U^jecp@|2b6iy-UG+1`qEx zHu{-8g5T%xK3sgx-(CA%&+|?2DMR}gcu~*@rPhCMil7K&jfS@R@{g=6h4=ET(;x`3`Y`y3Yh2kBkcUiNfCN^r`$PNRYr?OTB^L*25dM+Al9*8`dN}xDuimcdC5R-x!r5p;^39RS3SSV<@nJ>q2_FG7~(2&1kl+azr8Ce^i zMU=EmHPhla36I#3y&^aK_yx-RT&u6B*)E@8Z>&vQnX40x)JT)3?(mhsax0L~ zn?-wasIPCeSKli8YLL`v)xE;J$z^g|f*R)f%+xq(~ea#3ZjUo<^i7V`Z_w zd2_}_H_jd#Z2=K5!0%=A$3}lzqo3!R=NUX#gFcV|i$Oh@3#vdF_z2huM8G=>ba>%a z3>V=p@!1hDb&N~|+ksud7%&!$146VD*ct2qJ^~~qyMPHm*V$OiwE#++58r#l;*?t+ z$aB%&V&0C4yu=V&XmhI<*VMPm6xI1_GdB`3g))~IF{+3ntIQi!FpAmonXhkka)SG> zZHTZt(IC|nO8R3Yzu6&fG*Ik_6`UkKN;VVgO0L6plWL{k z?Q8u-371mR`69u*S}nIP45q%9>WOusW|4}CYFp@UfgCSLp=Z|%2(8~5)jd3RfYjT3GRZ9+0xt##rGk-< ziXX-^v60)2K~IED%D$j*lsFl&w=ap336KcpRDPT+op4ZIIu`o>)?qDx(^ENW6MF5W z;vpL`4EAWq=KVD$*b8;GX;@om^=Ro09d{L2k`+<>L{CBQ3l!r=!;rL~E-Q4sOkm`; zJ5A55-Q22R^IT2VQR_(MvGP>hOnP7!&`Dk38?sDrZ%r`ymQI|!I-iyL?ebGZ_Id}l z)zr}9-&Et5pY+O@I?k)iaC3PD8P?l}J;q+C=*)v;Rch0S)UikLs+n^Xw}9%Wp+7TBt#)si8l`62bO^73)kRu}=4D1#gFQnv|&7}+wBx+jwmMWZHkp&DoEFFev}4n6`8G*DL{ z6jeNkmJSf4XQ*!=KX5n>1>u>T4EW)PX^|>FoOVZhlxzvAnB$k%CgsYCbT(5MsZiOV zNzmHt%Q&?1yi}ElYS-K+Sr}ei!sXN-E7pEY+A>Ogum~HMN06YP&3v-CwI0LcGVJYO z+K==?#maA(lzN^SXNE~7X^ai_aFr(`97@S^4`niTm>*MViz2ttO2Y$K+Ew+DZmeCx z*g35Vq|zGeNX_y?hhLhtJ@xsuvt+7(jw81PF$m~(gy~s10Z}E^bHl+9uORqA<6zKh zjU(oYYjIqa-0h$pNZIshrfvIt5C?57AM{1@`AnO8sEB%k41uSec?7$0vQTv6CXtbR z0B|x)!9PNEZ zdp<4sCbpb)QRGL}+?r=)j$TXsf?_3T_~ZtMI<)C}J&S7c*)^I=jpUsVXPg;7{Sba#fNxem1_brb$yokrcs0!rTf~{84`liT4 z)cKq~)i^~dg-FVD>{47NgVe`Kq!Z*QeLD_WcVK0#iu_CJ3wfkZw6ZF0mt}`PNL6P~ zMrLlgp!P^@ViX22C3Am4Q$FQ|LR$~yNyjVxoF!E z6UbFTJ5tAeQa%UQ~j*wo%+D%|*ogtDG;v4ptxgO0knDZN|e7b_Qfls&C?y1O}TK6^5>nI_; zT&g1*CI~*1SjvbG7HFBQzOcxi%QM50)IHRDqzc@}M~(=JOhYwh(~W9*9P39Tx75Y1x*E65>yP*}YJ#Z_vlbFbeoDMWKq#WqRJtq9 z%q1@G`ce=yQm8(z(33Eglf5=|dyk5uy%@?Yi1h*+fn(?zfGKM2Et@$9s3kO0UZklx zZ*t{$eL^N)*WB7z-Cn*waqtft(SFfJF;1LGQoqL=sYwClB+IJ0b-|)?XeW)YZE9~l zx?CRunKZtwR(#^zx>LUY+{&R`wo;TU(v_@Q_MbEdJq*{osG|y_sA0B1)Xdt(e}*BO z9BJj4WlUc>Xif@F(T5gg^NPCSn$Djs>Gr$|Z!RBQ*hnl2Mx8j8Um4VIz)!R zx*8%H8co(`V~Dh?L*gu`9g@MU^C`PS3NPnV#6saMJ3crfzSCiI6{^mhm!6wuh(Qvvb zXm!z=$~gO@IKP65Lfok-CZwt(x`6ZIQBYDu+6m~EabC#6LMEuqcKupBs)GetpQtEO z&?G<(qUPsFK~X2v)hAN5)LZdy7WrghaaT|Qbo;00P|ZHCKPXZ`f*{30B!s0-fvQu| zq1Z3*lpy*OpRTQK@yaKc%b8eonwx6Nb=8_AfmP7pLyCdv*@V6Jm*lvt^(decsR>lI z3@Czc)7h!MjO(d-my4!}{y8~r9drUL8B_5=Ln5!X&024SRoOvo7HKBtS3Xe>qApFq zTb`%K2}{;3CKBE-&4zK-ovQ_NtpplBcCnX}O(ND*t3@wXO(!Z+eJuCXn5%ku>A1~w z&rfAHcZbFgCSOUCepjzbHW1gVTXJKPus)*l(sIEksM`*N?jzd=vO;}Ylc$J}H*?=xNOF*a$f8Qye zGxIJ*YCmAp6JJzcQ&ZdINqS{jrzd58sw*@@SL}3Y+%8FSl=D!IYh(2O41AG32US0ic znTQC5JuY!qD`>Wc<-K28hjJJi@RLQcRyWiyY|_>Ss++Jo;3&USCMf9%bvNL6$#W zo4)2RsApz%qGkaswoFqo69j*55b96Vw7`rw%m!p<+XhpU1DPTebV6!MAXzb}&c!eRmH7#WjMk#_WB=(lrNFG;agt_QoD49ZnRMMf5T5aAd zVaaXOh<7_(gZ+t|mbCVvzJu5WN$~Iy*QffE7zmR*TJ7Ym{RCM+R{PThQ{#f@mz!y; zo;l=sA6}6O`%{i|f=QJ;+Z7`37hMQdh>DqQdg@TPjfWI5Uu6iR+*NiU7{lC(FNjux z6y#*8uq$jZ$(BN<>RXzd<|SeFOS zq-b$P#aoj#4hKsp&?e<6qbgm3z=s)ViQpQ^_j=DFMBP7`}vx_?K^4 zGKz)N$xuE;ntc#L&FD|;45=GPFKIKf0zW&QP-{1lMzG~;dQ!)!LJ6+&r$zpnU-`;B zg1*%W<+(o!dSgGdof%rOs>yR3i`A%0^>*4>4^w*Q&(N@1Q%fNEey{sOmT}h6a8NUb zfJM;N$9+?+^m0t%JeeG;>AMP|(^8lPW`V8B#I-!+PuV53Ki&0*Ddno86i=xS@X0xL z^6HiQZfepXlDi6tPdv`R7EERHoZ@jyr&g;$DuacBl+fyan5fFiFEv~i8!hc(b}~~M zIoYQI(7jZrQB_n2ccs7N{DJiJsuPqRMDeq7?o4Or5SOrWW$1w1mhH^Nytwo;Y>6pm zx{Fak1D2v=N~cLzYs}z!Tz1-TMgr6OguW)~X#)eOc!&{BJH}uLz!?6^+rhIPSY7?n z#@gB5k{+xRsNqWl(R4wFjCz zQO@~fieVvH9z!N7DYcm%rc}-@N97Qt>DVw!s9w*}-`s%m!8%!q4)&^66o%FAAyU6I^5PhjhRJTF{VGM9N2uIG zEL9UKLK#$e9ZSY?p(@~rdx#$=Hi{Osao4m|#kPg@m5uc+ZGO28Q*l7`5ijw;tA#&NzE=ulugveK*Ia9Q1S`R;Yx;9P^)kbQPu*D{z?H_g4TKCYWY|YIl z*6w-VskM#Hwslht$aJl$m-j{Gu6fWx>6#st-Knc)P313`8hA3VfWS;O)YM10_){5? znXw)-2L4Qp{n=#Lmx-nCBTM%noSky|n~I3=DmX4hU#p|HiH!<-IH8& z-nm@O`S>VS9~jAKG`>qkdN31L&GNIHn<>~^=CGsPUN)v^!rRJH%%%O~(*7~?W~tNv zGyBIPAJSd2t?jZ-6Iaubs7GifypV<9^KN zGuoD<*$LnyBBLsdkhli1)_azk%KcoJ%H5X;sI05motC+|EJO>^=j>0&4xic0;F|#} z-&Jn{Y7)aNZ__fw&0PeC7=}DllvMO2ZrM!HSQadqRbe=xLj3jKtVy}MMH~7;Uet?y zLPb>Pzmp%@HHdeyY?Xaqzp%|-v0~(At6DJWOm)hqAYKk9y?GqSd?i6fTb5D{B=Wv%Hq~Fb`Q{JNYA0>kyNz+3WWCXnCP7 zuOOd|6w#+LyWs_;p`~CxnHFsoFw;UNpUUi_7ck2st3V#3S-A~MT-{sB)_`4#E}rvC^WN_qo&&(UOzzf-NdUw{8G*r{fQSkfCP=?z!~k&@nkI=)-d z8}N7e{~ypB(6-r(tv7y%;UgZ%;IkQw%IaHwmG+X@bJK^>tuojD@k8mZd>ONHLyWxX zl&|4B%5in2!osj}kzLFp*#(2$)6}kJT=P{=N+;eW#~f{kc~t&gBeOJws+Vjk?3`dd%M!W&IywOo;At| zKa18GUBSXtW@{^>uK4bb|HvG|U$YgoWL2PKRY0^7OI8I`7p;#x8(RZrN~cf!GryER zTod?C^vog6tddoMl2rk1OASr?l2rkXqh!bHicfaz^Q1_Pu|a&`g>=Mo|6 zg4wYzDhZJpeSp!Jx$^}zTL_d2MvYcLI&7TuVdQ|Yh(bZ&Ic$^z5_?EdP3={D1AT;1 z;~S8U65oKZNPGj&VdEQ+6vnrtE5U&qj`EjmEU3$*@H>;EmHZY7(vavvJD3yhhjRk%6LdnL0ubH9G zqUW^j1-)27MWbY60mC?QS{w`H*5ZY6DA`!Zw@py8v7js}>iSZ$v9NVE7F=D4l5PYy zHw|yF--vd!4cn4#MCmpFbv(70LP5bMauGZ4)~bQgpLfpMhxa}TjJ*H}dcQk8C8(03vD z7IT$V<*4Fm9jqYzrH=?M$hr(=hR2GKIL#@jZ z5SDZ!P2WJjWO|Abb*DBVBN9k>R!VBOtz03GgH1{gp#oc+50Ie zM5v_|N78ev`}~15Fnour8CHeFzl_TlyK7fN;+S?2R@O9L>3Rz%H`qkniqrgo$#xN? znes9DD%+9bYBFCj4yXbmv(X)}3a+HEMI@|@>z1f=_^kYkEP~Qj(QtTKlHwK%O4nQX zhciOgHv~(2w;X+QAm%=fqDCO{E|ZWjp^G3&*IW42w{*RQoc}0#y~+RZ^%jMD4D=(z z*<8_PF8*uwT>`a?;jYan8kJ$~zv#G>Om3K=DHsQo^&Q>Pf-9aBRUoG%^OPFmP=C5) za)Zn$ncUD7q-1iVC+;5=QBBIXmC)>7x}7p)_8PT!44}LLfBfmoDMljyxIhC#_87N&(Qo5d`q*h{#RA_rI+B!oplKDzECAAVQiqRSaCAE^0 zT8X`T#cGd~)Jg^uoy+|xaaeK0bhG}slCUpQJKsmyuUit9^`ITf zVM8N5rY9%4WPoGMP=~a;Y40 z!UdTjSa+nnL=YQ(4|Pu=i+nG+(<+^W4ITuVPqucEAi4P^k<0aV_wx}IA;o`1ACXv@ z$u5@U?l*bSno1;Nnf~-@Kc-W>zSM}uLBh9~_@m#y@D>xFCpp;T zXp6{CRnk6zv;>DJq?qCpY1d+kDIt=U3E0DdSp57f*Uq3l&)6$s&~5 zqLlXAqFW)7xNtJ9t6`_KCM=bo2H!QHQX6K4tYjN4ATkOjkcC-=sg&|aA*=XngqdmAfX-bNhmzoW1ms2=Lb8;9D zq+J6ltxd5*h>tQd5|B_DN(sZIF>V1-h1|K4#|D>xfDri<+9@Cj)EV4Q8L5r0^pNn$ zTq@)0FjE(0)~bBd!~P^dBh-y%U=B>)>HuoqE0%t-bkiic44B=k8c^%2`? zIBC&`fb85tMEvol=B8TC4#~wbYU4o#b!=HU`6=cobbbdK5-|7ka=49s9bNrxv$3!3 zH0a1OGAZfS%0yO;XZAdX+EMIb$W1fy<_1!oy@@nqSI25k%@Qh7eR`Oa^yxWEg<;`O zx&oy)9Z$+;*ep=}R*(g@KN9Xi62tvbMp|!`qR1zyGCAd6{tyuOP9YNP6XcWNWJv6G zZoDU%wbM4&EsxBPv%d?sb(_OdqM@MwOE!m##Y=BkGknLhiT>_Xjv^l6#Cmn|#G#xv zaBF5`YC#rWCW4GGu%=owcN4Ld^l1*eQR;;Q;_>7V3yrvHO?wX7QM%qCy)Q$bj% zo4T{yLi5x?ETxAsakPVimaKba6S<=t-viXC0Y{9ib&Yphg=fOc4pNSQ~jqWME>IFf2CknE%%(= zAZMDQT+P(DB!Sg8rB$f0*z@Y@mp0bU_LlUl78RkDDX%{zH`NRtj#Em>_7E_meAACU zyyTscnobeYWTyX9gNDxlx;sh)U6R1|CsV6LNaZghM6k^Mu68!{kRDw`t)`9nq{dkj zl_apJs<~Rg@m#jEx4$dnwrwp{)$Vrr>q=S+Y5zU1#0#aZB!O+M^QNIJILHVZ^I?!HHe{QrP5F1hS3V*d9^VDn|L zv8LHxU+*eUExSasR1IF}A?Bz(-aw)|HAfF}UPA4=D)0Yh$!u*?d+X8V`jFHl6i7vx zHeOTTTE73>%As7gQe6;TneOe_f6^Q;>|NARg;CW13T;$#khx@;O;0ynIje6|ZFo6r zh@`jztWPqU0<2X+a_ELpfGtK@Q~}oiwn(y+KANxFhnU8y$y#_82PO5(XYj=mW4P4(%Mjj!V0q52AiIVxt|MD1!}Y* zRz^v!WSLEui}a8tFNzmW!MRx_H6@gp2?qtB6@e8q#Z?BE~qxj)rp>F zgz_pX=5o3s)8Cn@C|PDxI?TljZ7^hU%-2ySr=8+b2TI&V99U}zs76p_4l&EqQ4Um@ zT`J=md^1pGcFBfQWp-(XRb_UG)B;#lNLIo{yRlF{B@}&Ozaqu6PihcvqQNQ6{@#!mDZ;kT3#3i&L;)}0G zRoyNKN;Ak;-KHNdaI=X*Zr9#Zvdkv3WE3i78SRBFvngXB$LC-f)**t z;R~{0w@lS=zgCqDtFb23*V5(n3BDbn@*;}=UXhL^bcUd0SZ$7)=Gh*rbYGv{WkMR4 z%CYHGx~~tjU3$T#Cu*jugv@ri{&coW%!Zw}GQqwRr$>7GJJUl+IX=S45h1pldnLna z^z*jyIoYgbekH?dfrv*5qx0u@zKBQp%A|-v*AWbr46DiHQ8L6FT&1?z$-i>d0*$zD zL~V{8FiVEj#C%CMi~UEvBcry^Q!7wZz)}ePm>M?8Tt`#EOZMgxCBtgdONP~g?cG2j z!^jQ;hmzukHn?Uo#y`I$eUzh05uD#*W+66mtj)Gzw&ed0D{kb;Z&vnNF@etLcuAL| zq{|_yBlZ}9R#nla6x=4~y6e_S)6>na*6P9d`oWr*qm3BdDP*GDH4g?$rLQ4W>Tl|* zSyTCQR61mB-?`k{a8<%}V8 zsk1hKW^1jTKmQBOqWN?3;ZEQA1R|ezh_wDke#}Z*A(A6@kHeh4Q~RKLV~JIyr~-uc zIzqY}!TCIwO-U=nS7C5=hU6q#potOAch^H@x#LiDQ`=w97wB53;A(^k%2gX-vp(_+ zxfEA0DE0}h|Dl^vz+Srs@h(-lVqs}nuVC~qG=#L1Y7b8BDezCK@RtE3eo zQiq}q$lp=b)lGyGh4oQfegEREB*dqr6%yJeGE-3*LLAe1VRaeAkj7sN&DG>pbx=W& zVj)H}>qmFMJa|}}b|abf^LvtE%=-EM!=l(a%dQAzlBJ^3qF#8fxbFKjAbfVu4U>ZW$Dys>&|OZCFqw)$ggG0k(JS6<;A z;0@#N#k{IXYGGJXD`{hgQgm*tfjhdxO4)JJmX7^FMg26cGT#WVyn>mpHvAX_Qxg?& zEDWS3C^8VqF~&^4ks*h4JJiG{7%>YQdWgEDR$_Gs)m%kJ9IbCNYBmO>!{%X0t)!$@ zlBYK!x52q;BYED3=lhq`O2`s#l2)JLY7n*m>`oO;cCzJ@=jmi~Nv$MLL8PLjR-(ms z`J=K7%BqTOp$%ex&@QQ!^e5RH)7Fy{U4yBt))5J8D3{bq=9udlS!3y&7(LNK4JPJ} z21!xJxX5FikXAh7YA-n#`Z9F1l`Jy*hk#4=Kx7aosg;DxooHJp%=Po^SSa`Kf~}-h zqK&*StgmdWZ)r1%5hW8LCAAVGg($p@&$KE#U9TvlFxOA~i_}VF#0&20i^Xz1i7d9Z zVke{1+J{ATX1(%5u9oA$?`&qaXNWNEkxgV*%hhy!9oSAs5|+zk%@u#j`pti*wdnud z+9xs_X{%k>NG#)s4qLgzPN>Nw4?iBRY44qA+WB7%l{h+BBa7*MX^mYZ9qh=R{ZnW>Qt=S zgHu~o#rEz+J>h`1vJev{!Ti7f}z% z3umP2>Kkqu=Y=dRWRh;PUB8;jksq)i>#a$RyoeMjX;|eKwYE{Q1$qa0+zX4lwC&!z zJjLaBMw=~e_u+NLl1&lDBzEt(Y&3Ya_0D>uS1aZh42AiXPgF9-&>LKo80@Z>w%uu? z6~5&K#%447@SXC-iOS$Z$ryt=0NXayU)h{Zbf#0@f&&kfY4#`vw)+Ium?`;8@G%U&33-nzA#IO-{j_wxurFFBt4d zaYJDKMzSe?TSTRe=E-CQ`zh2_^H$nu&T!L?%%;@>lRF54_O7QowhyUr?lg-Jf9}x`G>uBau+J1&Mw(LRmMb5`&nCE7%mZCk&>zOapc!@v=5p zl|@(oPN`Td)e}=Ue#d%}SvO`OUS+u{>Y6H2)3Mqso6j$z*_9b$MPELcUCnZzbbGPv zKw_}R!>*lvi^)mpN#nz5EacUfSdI9vzboB~m8q57%@OLsh z$QQQst0KA8xfPL)%wSKXZz!Eib>$*`iB&PNl^V-YPIDuo5SHn8UHUVrRjE$K{?6qQ z5w0l718-HN6lG_k-*c+g{JI*itaf~)p(ftCxGCOJ-M%QIHXKbA=DTHev%PdC zGav=q+mA42Aa3^e;aLaIviY;Uj;^GfcAzdKxGga`TQSx3f|%kiC8_qG*_u=@?CzPj z&<86bs(d3uL%m7;s-k0CPQRL{&YAMT=4+ z!pPTC{X>1KX2)!q4)k`$^f}CkRE?NQxgrtzm7QqEgahCz5kOOy>KIGR60*J&F^(y- z)G8glshl_q9obn`b?{7zS?&BrP)LxLLLrC*AW|U>jHFAi7yg@d%-E>s;2hptoZqgW zeU~s%FaQ>HjE$B94_uPKo##59f`OA~x6BTIuHe@JXHAH1V_YxfWgmW9qVxED+nE!h z+Zu;&@cR=EeGBeW9Qt$cKg{`kF29?d-{_WskrJ@;=OcT^qj20BaFAncu#5-j4FFFeW^-CQ7O%=a^Zpnu^F*hdJwO~tXd`N zU_*nw>0BkfUu7cO+0(lsMXwu)EV1Lid`9|BnKJ_C$S0~Qr%m9 zt*dXSZK`gpZBrZ~l>sBgB2pGhCughw@e9$*hssD137eKq@|cy*@c+U5&z}rD+=j{R zvDu;iPI83J6IpddC>+%GB8!_o-PF9KX}`!&zx2NS5@y&x4B&ArEV;E$NRFClyHPkW|=5nd5R5mqK3Q<`y z(!vjX8N?qKq}Tdeb!8#z4j%x zYSzry%o)nbf0h0?wi27eGC0X_r@RXs6TPbx?`&=+R>+tXb@s$Ek*187l2k?7R_6v& zeas)yY2#Agzk zhm9L5v3w=By00UX&dDpDDcfX{Y!{^&S{f5+VW%p*YH0df`V*eaXo8t`$V)baP~7Yu z$_(WqZMvO%jL(FT$tI%y!CYiMcc_w>p_C44>r&GE%w#+`L_Tq-O^V7Af+tglNgXgn ztA@G$gvp;NUZR82RP9;jKb}khyfUtM?dO-8*KSofLTqiHM9HZBs9N_;UZ&$jG2p7Y zmHbk&G$w15=xdHgqw<(AF{zQAyF@bSW%^T;5$hT@Fmq&{%!%xB1W%6+W?+c1y-k&; znv~@{Wfae+TG`Xv*`o}KtAb+=k<*ib>E}*}9txU30=#?Pgy;&MYrr?bKIcz}Ue5D& z@GGzxYy-_A+|%GAyng~r1Ix~t5IvlybP&1JU|iSYxau$T99=ubdzcS$!FNP?31#;{ zT-SyFN`CidRE|rnDExc=iLuf3kB^O>^BeFOa~p6e@9V)@u(jpeNgI_BCwpLI<$;lG zN){Qa=V3-}s#quzQ(vL)dYSnVxb!8y`|Q~0Jf07~NPJ!x8&&+`9es=_s$mvNH!tnO!PB@)xy3A_q@@es3ibx2v7OGsT8cHJn6ZmTagApXLxMc^mOug-K-)W z+id+@UQ$N4J|6$s{69l9fg@g7>>!~xp~5PVTi*^O0^O;8RWjv_^*`LPRF(J~cJgUFwjMJF=)2!5a ziFg!6=knZ8pCO^2*A&cl8L5Rt@nI=p((KU}v*I-L!iV&xVabwD<%yy<{5@Hl3MqGH z`Wz%~Y6*r-W*K!>$JL52sjpJki!e!hoLPBXcd&6aIQHtUJEA)T3MiWrUK1~z5WSx^ zwHME=t&4OKw!2Z)VMwi(q}O0!LkB=MNRN@D2RE}VudG_)PhAy1su6uX!)HSJTB#bn zELB;o%cvtagz6ziHu&`@W=JI7MR3RM>H3F!A)>n&Dqj%6z}biGg2orE4RAu$qaC*K#nRd zjU}!+T&WED!{+}9)5k?m1(!}67hMa^;e9=L9y|;r%3Vq6MY5rA?vHOw9k+5yVwXSM zcH|D<{K$QMW{zv`15O?eDuNt8*bU*&Qq@c z+_>1f*UtUe-RC4H{N!VAduvZzbkePVdbawmFMjs1r#|}om!Ii7^5)0h`S}^YIsK@M z(jQuX)$-)Y?{)m+jSZ=@nvdIN_b1b1J3Hs@`nNyt9Q}_6y#6^SOz3TRxq8{-*^|1z z|H#YR9lG$b?LYmGGj@J-`OV|6_}f)CAC$i6hWSryxc%vQ@7?jEm(m-j4ITGf?L#|1 zvFYf!k6iPksZSm-JM!$2rylv+2lh-neD}@o+_c{(?z{1*Z+`u@hjzW<&UKfp+qOKq zW=#BsCwKbUCtu(3`Y)f7shrr*v-FyeC4M?L)^*D{)tgp~J?ZIf?(iPHX!3-|-#qh- z>rdME=3B;I@$%i@o&MOm&EMZJZq!Mv=xP9jnKOdXh7rii@Ja?Pp zI$wR~$mPpB66t+5PEDQB6zO>TKfgXU{h2Ga+54yOM8B})zFq(PvnSW4T3-LjZogZ1 z*H=zibL;!hee9Wz`q)!@{OOe6d^OeZ*x#2XZfN}VkvGpCjNEbAi&JlZton-Qj`;1@ zH_q+5?~%*@{>~G>Iq~)01@AxEKcj9<_m3Z5x9q80Z2Ov5KDOQTc*FP~Za8J&Rjf}tkl5wA{Ie*u; z9=$C3<({{<`S?HY8QXjOl8(RrqC0i!Ni)+Qd2Q_S{uO&a_Rr@J{LPuiocz>;Umo#H zcjmcU-+S-PyUt#4*H1qD_}OchZNBV@Cq8%nBj3C4o{h6w-+r$7kKMOF(!J!4E1wyA z^WmSKdBdWo4%~TT!`|bs`^ypA&0Kc!_SN^kx$L>c&vjq*=GpyKtMBTq`|6E}UwriR zt~)M$G*dS7#h%u$uiWXE+b!Jj_FMPdcK^x)#w@;T&TaRX?|A18=N)s?f!m*W<8eRu z;J5cwJ@oL+U%BMTDIdG`*<;t#hX_GKpyjX%F{+pEX!@a@BA?(+LHy2oWd zv?Ma-3rF1j_1#Zi_u{n&UjLa{d*8Ct#b-Zy-p+SD{>o3@+;qx*&po~4V~_skOY>iR z?2qr>_)Jg#=}+zZt3B^J?briu{mTn0*Jf5O{K;Og9ur+NaN@2XJUC};*Ks>;Gx38< zQeW%6w&UI3e6T!G`%rq%RWFXe^be2j{M+`^w{N=V#_bMC9MJuPzwWv0;l_o%^-r(t zKkSGTAGvnZF;6_%wc~U1-kP)V;I?b;xcdG}Zh!Xk58bfv^$%{Iy3gBp-g(wNw>>!Z z{2SY@yzHh=j+y!JZRd~u?XM;+dA9xT?k7J{adOv<>yAj=x9#3N$6s(@X7a&z?ReAo z&fe+Xy`LL%%zwPOZES1D1T{+1C21jIOr%?hRjMPcVK75)*^|oB zmDV@4EapT}?Sl6D=B9XEL-oQo)&tyX#WX)RG$4y4B{tV0&9eFBWz~~pNi9kxYH789 zS?m5@H#gSEbQBFUnZtIc?3_E^THDaPAl}x(4bSm~&FwYS?bY$-miVIjrPHQKU&p+B zIGTp$rBzeIG;->(YG%B>p)Fq1-U4qJRm~iYrlENR8i!2~7w0?LU$Jog7qm7DQT*U| z%L0ib64w77A;X`u64tD6=qqDqeFKaC!1r0~(8l% zxQ;_(^HEE5M27WmAI6``zMv&ebBfnDHpbiBHr2LBxi!|-G&C=vFjQCM#6R$ts#?f@ zeqDW2ylR^Eh##@Iu_Yd=Z_0lfHB$AF3#uC$;!EB5hy7Lfh5~=LQ>Z$)afTB=72fri zPD4mWp`qglm2)vZbRHp^qh=j6RXT<^8Nolk)K=@({lNdA;r)*pCA{(7=m-v2FP=ZYdVWJ~=o{ic zzq*a@G%Ri_%#ZqNx}}D8X=imU?XAnAk&d3Yj*w!**`c$bM zy0y(ex;-5K>IIA9&5Q};rJC^7)YsKH<;8ftWw2-UQB z6En2J_%zhCwO37>rAUhTo5>ydqdunD6yX!lwGNwyAsS|d)1+#Rz)QNSk^EKqMo63e zo}!aAPSqhJeos1_g;OP?3iHYGQZ&QIdtpr|r;74XG&+|g2a3|v*V-DXr}$DWAs&vF znn2|>q$Z)m)9PB`uN_7zQ{tiKOFs7z@~4n?_(Iff-R~jIs5bJP*-HQ4f<} z1$3&q7tb$fRhsn27s|r8XkO*hX_i|=D+%8co>g1HGu+2Ic_cIV#%9|3FyAyY{IGvJ zTiYCljvqmVZfI^=7+*@)*3ce`x20iq*DeG7EQs81Sbv!V%#1HJ>vLE*Y0sl6+JENJ zObv#EAP@6sssX=wourySusY*PfJI-P2j#RxZqdR&F`5nDQ{B*shBZ@DS z$=3+^H9CzSvHbN=L7mjRbTJP9O`l)>8f-XzqtFHX@?-$R@*9~>^Q&h%HGCR$A&g98 z`HYqyme*)>KEF}&!{;{&UBGYT{0R6BLnp!KwL zP1Pd(8jhwaJ~|D<$r6UIQTdEUBYapnjml><8sTGy?vc}_muSP$=yZ)tBl%;e03-1+ zac2K4gpV4S^{zyI>W(Dmk%um;m(P?#lZ8=|EAGVCIF7wf8CH-4U ztMfrkQAR8mGtC*6#>vkj^PQr3IU=2tk0a9Qx~KAcL^>Tm=^oXPKWsXLpYDQ2rVIF~ zE_n<1jZEj{-!Of6(L5ZL*2%|FX`Q?rl{PQFMdne%#&<;8y!ehtn-|{^X?1)hS!!Cc z1?4p|U0(W&%youM|A@4C=^v3cFa5*P=1<3q_0joL@!~Y$Y4|WSdZaf~|Kc=ed4RB> z=-AEJ?8j$B8WW$9X>@!H&AfS;6{&2OQhX2Mwzz3=TW!s}c@i7_x4CXy^d1mhI4-&u zkl(X-zH8jYPf(6q|EI@AtH4g+*GG(to(tB1Yxq5{X2gh9=H8$1qv4fUCjX;4$zz_$S!&r3ujrPzO!`E5I7?E$}0757-F)0JeV_9ZN6;%mYV*KJZ0w zF}M+I0Iz^;UZH%!EU*}4!P(#%umQXVwtIC#bYCzBECvJME8r?{KX?&*0QPxpLi7-@ z7@P#Y2rdNIfc4-p@H+Sh_|RtR6gV8Tf)rQ{{sUYF?gmeTx54<=sY_rkXay&N)4?U+ zR`3vb3H%l8_&eeX4gw7z1x^Fs0=Ixi!SBJ?-%p5s92^4LK^lA>TnK&y?gfv6m%!U# z+#Aq?>EH;^0ak%?z?I-G&_KBkfZy_d0neMjpLyTuKS?|9?||LEOZoG=1{@Dofpfu? zU_E#O{1NQ%2ht1<1IL0va2~h@Yyg|UJ7A|b$wyEPP5>*w`QU1BH~1}h6O4I_@&U6z z6X*q}flI)RU;}st`~~dxN9r0l0(5~>z=hyiFoXEFgH_-n@E~q?@O+i$HgEF{@I1d~ z^W6T@3DKoI)8Gtn3AhP72%Z6Nfw6y@5d9dK4(dT1$fEYzBV=JAXjFgXy3V^nlNRZ-5)X{a_RL6Br+v7~LNn3XTFfa1Qt} z_!)Q}{0;23&BW+|pbjL!Dd0kIJ$Mkj0Nw)=x1AWB1ggQ&;3RM+_#U_w{D?gGC3pku z^ga4h&;TC8@AqK)?IuR|0W(1}=mDpJuY+sBgWy%L?e@@tLqIF&2WNpRz`bA-co(GM zz5AGn(F4G2&;&ZcYH%L72HXcWf;YhqV<$#G0p@~MkOpUhE5W_s8Sppo;c*kAGe8qq z4%UDxz_$qPu5%?u|1GM2b;rkP!Q$Y(D1Q&q}?q2}sf**nVz_Z}5 zV8RX)qZQx|=r)1(!9JIfcetg%so)#nI&eRD8oULz8$U6+C#VFAKmr^}xZ}Xdyq^cI z26uu-z-I6dFmcC;(QDf)w~1_!c;Yy!Z*vUxAmvdtldz)MHQ!I>5=`Jn%zsAJ_!` z494w7IfDvN3yuRh@MUlbSPSk4Pk}eUHXouqz*KMqSO!*rHQ-`!Em#j81+RdAfDi3H zFS{0?lp zH{}90@y++aK9@81H?S#jseTT7r@2f$KZbO z9QY&HVPEY?)Bf}eU>;Zk9w4tagXk5Ep&*0Xe}HSiB7Se+`5Nfq{T#3k zYy@LIF){iva1eN(-$(H504Ia5g3Ez-CG!rR4}p2Szshr)Ptx~-7^nv+uo|2Tt_D8^ zPk}#yab?sOPze@+1Q-He13v`!fTzIQV21;!x8M+PBv=m40N({a0gr&+gE60)7~K~f z0@}by;A`N=-~sR)cn9oKPTqsLU@=$@z5p%)KLmGxN5N+BPq4?NiP0&b1|&&q2hUT% z7kU3C&mV(3!LPw{;4fg8$&72@FmMz&5qu7u2d)ISfrr4W;2&VO1L@O1Er^30I1_vq z+zfsRUIG6EAD%+J1hwEekONl{m$P_&2iyRD4mN?eK{Q6)1P?$nljo;F0;~dG1>Xnj zz^}o};GbZxiiy!_paG=7=fH(vE!Y5F1>03p55RO#3l@VD!Dqoa;Bv4I{0h7X{t9-Q zN?C%LU=cVL^n)|OcfgHc19%R+4R)>~?%)v60+L`gI1l^)tOrkk{{-7ln;88Fh=F;a z9dv=!;H%)f;0AC%*a$X*_rUn+d;=T=>cR2gB=7}rF}M!=6g&og5B>@Em_d1g!$2G8 z0xQ8+z<0q7U;}s_{1xnY5OotA1R6jGSPjkrmxFcSSKwvvcd*+`_=9<1Dae2?f$xBu zz^}lo;2&W3gX!16BG3U&2IqmR!FsR}ya~q6Vw?vvK{Mz9r-F0A72po=1o#6OdkB31 zr~-??31ASM1ug^Yz^}n;;Gf_lvuPt>9yl8GgEPRl!HwWS@B(-j>@g2f;M&IFf%JHcb%4Y2)O;tOVhHgF<19ef+y41Nt>1s{M9 zA4b0e>c9zL1vm%%5Zniz1%CsZX)n9zcppqyNEw6Kpamqs$>3~o zIamjN4PFHAf}IwTA7CbE0L#D%a2B`}+ypj&XTdvQ$9m|&Y|sjpgVVvq;3lvEJPY0i zV~=250#iXPI0g)WGr+gNTJSTl3H%9+|1`Y8Y;Y9Ffv zGB60%fQ!L(;9l@s@O!XLBmFR_1hpUzR)TZE)!<&R3H%j&sEK|LRD+{I7Mukx1-F2Q zz-F*bGj#;a25le>P6HQ!AA_HP7r{Tlo-On%pavWb(%^J(F}MNT51s^XfDgd#M>1Cg zhk|C11S`Q;!S}!|;1}Q}@OSW`R_3{20XP=)gD--Mz;)mr@HluKMB1o>UP;THrun?rcY2XrY8+aVN38KeR zZ^2A(1ULa?!I!|d!42S7U^93h?0y{mJE#F`$eR;*Ud8j5V37AWcuu$qxf56hz6h=Y z=iv8Cp4af)0N&#LHJ;la&-cM$VE3z$vw>rH9|Y~Z4}y!p9pG!Y{SZ9Q`@KA)Kcr6v zn|Oa0>~R8f5O5@Dz&*qBOmGFb2W$fGfj#1s1!w?0;0xf}AWfJHz&h|eh+G4Ia2tLt zJO{x=;12LS*y%^46ZC)!zgkJpa*;v ztOXB)x4`aeNdq_zoC+=nhr{DIuo7GVt^*H(S3snbz6(46-CJO<>yfpCLvZWi`BktM zYy^=T$Uo2mR)I^wePA<~a3kLZ%fK427HkCXf+g_U>n8FLECXx6TCfpBZiXiqg61sn zU2qfF0A2$B03S}$2ZDtl0X_r14q6CzJ0el4T1;FkO{lEhj0QUgy2b=(eAHX^kU>tB5@Gih{z$1XG zK8W-MycF;*z~=zLhfvM{J2tEuv;AaT))230D0Hc5^;0WM<0meapDc~sJ z6M(-0?prV$K7ud+MgiXhE|@_(3}^%N0VV-21uTK?Y_F~8ya#g2G0DBfp4q$tD?UfI@gf8^ zis^_C*xZC;T6)k-PY)U)^P!Q59%kvI9SZ54jgv}koJa&HwXq_)e(VT?U~`L5*{JR9 zH|O{C=Q{KF`rb%#qHp3CoBcT8o#YPDC@0;>9z_wxh2{v*a_My)rz^l zd%&v%c&`@V{c3UMfpghMFGh`k9gFydvL>h&F{S1^SgJ?&l^d|5-jgIFk3m6;WV~wiw}#>&`eQ8 zrNz*{M||jHW}3iQ8Pj*|_Le-quDZz(9Lx=xrBq%tv9G&tWXSSP;M17aErzQ2k_szi z3D(P-)``e_6byBFIQOCUZZVTVde)U2x-}iHbOn~&o+>N}o=PkUW4JaTrGKo$N^H$( zb#W4j_E=owA@A@=s+modw|8Vwb3>^BFdlt&C6F44bXy}yVVU=2A<>@H_T);d`Ei=m znR7~}#P;@j6!s2yRQ3;eIB~6nR|D}rCBS?2h=T3OJc++Hm8LsVm~_T(OYyK&nsrqs z0kEFJ;4cLJ%H>TOH+aE-I7*1f>*FTF(BF#1(|s1YB=1p z*P}#sb~xql$!10KmLNsrF+I0ZD3bVa)JH@2m+c>knI4julO%5l(!Pi*$uN*Ik}SD; z%f*YU)VxSB_BM1l0izT5{3N;Mgig>!{Wf@{kenG9Xo{wg>iRV#q?M5h%}&dQcS5PS zQ-M`@C(H^fyJ91J2Hq};20>@IBj%~)NoJ&5fP|Kw3?;NwB=zNMo_K1KC#qblanew8 zrzyBc&XeYv-$Q}`w769&iG-J^gi?Xk{!l1IR6)!3ilIwWwOC4@_DqPSs1U<_HC8rj z0T-`gBQ9o1DvF&1DWVd}?Y1sevxQPbCB(kV8#1O_ipZGs_U#@u2mdV55^MIX0^2u; z^@-8E*_NAlJ4v9WyQjYgw-1>S2UcIhW}{gP*5E3?t;qMwu$5wmdB|-?D zpHmqm5=rOA;iis$+fS`KMSu#nCg>(`&4o2E5lN?L@H&$wug5S`E71u#s~?GVTHR=p zTHc0D1ki2Pbc873(v<&57t!~)i9-=V@JC6I{Gk>kZ#|85`YXS^R3cJAUPEUuY7XSa zF&ogAaT?*~t&{y7olXIWv2Et$Qef?&C{a$6Oq6WF+Z=xcb}V(Nr9fLL7OTLwmBF~QU* z5bw!Zp~c;8RLCK7!GJhlyfxlRdyRB6OXIEl&`7J4Xr$d8C)gZr zBQ%m&6VT&%@mT!w;yptZtqLUMzE>)nf(VN%mXp#JtK%Kd9AkSz?Gf?q03_ErTcJ{D zx5y~8Q);x1biq*+U)fP4Pw~;}c*8WvM%)x-OPe`sR!EuZ*03m{Aklr4^rD{r#E zOyHD69aD8fcv5^7!B-pyN4B)x%w^ZSx%`=6t)41DTd9(u)8{i1ny2ARh@J*l62;PH zI%opz37f!s0w>j^7HkYZGJ~g7reue@hgw_3oGqV@wn0oU6Aj&jZlIex3RVm>+L^v< zba&sdmmPR3!kQli(aR6K&5upHPV3wcZ;S8jNTEh^UA989`7rs;;n9wpd(44^P>Ce& z93J$N?44a10KuNcou$cXDXGbGgoJ3%;E8A?k2`Q8T3kQew$w{djPNiu~ zNhOg%fnK9|u@oZu))+ZOG*>k=5%+vMg-V4Hgtlx7BJBwVWz3Cc?a9FK&BHzBAXyWj z28Xe{@g+%Im6)_jrj)q-Fq7nqX(w(8-)(gcrao)=o&>&*fH0UXiGgl4*OLsqHGbE4 z)=xJ?R8PD)M%MhS=01Mnz5L?!1UoUPzgN7PkjDG6Nj(OEn~&WBhI3x26)1!>Mq3Ny z2Ekg|v+y1X(Ny@nmISw4!*fM&(n%8Rq6r*&M)b9AIWq`8ueDIBR+)0Rw9ZOk&{(-q z7x5rP21UMB;SxmveNvL(7eW}}m7m79ZZID3snjIDpiEj%_;oJ%RK}_0%5nZ+rvx$9 z;Ee?zxK!m#&C>*9>I9X6P35Cprt>w8VkM3QCkLg36Jmq}je%Q$)YZKr2Qmawg(s0o zc`Q9~6e0IzdZj!!DCuaMM7Q>cJqwWszUV8-{_ZRfNy+q35VJg#L^r*Khu-8hC>b6~ zv2-GvlBskiF(X4wlHW@$==U?BIg!Gwh5@ZxT+GB$2hi?W?O`gH5Ks(D%#GwgKr4S98K|5 zlhIxoMIVX5#bVJ&&n<3JDWMFil5>Qx>42)Ael7uN9FsCc#HIJi;Dpi9B5vu|c(;bTR*;;)YLSeD zrHJdh7IA%NLixPVcvp|cd-PxjnbB~<3IR#*Xp)4qD!h8=)g@?F-RojT_L=*jtl9&D2t8yv1h)l^WVwI&XDY5iCb1 zF)9BgGR>LRmQEzd0_n(#k&mRL(iGzhuMBF!C>|j+59lDW5^MGKz~UsSIl}~|D>r5x zBn8UdsT5q@<_;k+{M^G%N^xYuLFM?)6$Xi;9(>QBSpbD6_BSrQz7ZMtJgbYqdWK)X zx&tkV!h8i!8`@#wd`3Td=%qMI%1Vm{B;-sg5i-gS#gKIA5<)^Y*5}F4C>~j~{gv}J zdsiJ9Am?ovXlK)2vAcWrT8pz~uh5>ETtY#ubn}@3N>A}1g7WG1mOw#+2dfWw*+~F) zP4LJ-lcuJ`44NzHk>Nw)oo(q)+9lr17xAbo*5r`GhMyYC#d{Zx6>+Cb3GQuvv{>#l zmpP>B^s6KipMF6^;`Nuc&N7i8B2j%W-U4l{C2C%4k3t|l325P&@o80BiqveKsWW^! z7|76!P=k{84W0m>_6K-3gV0o}r4+u;jfdrhmwdEUaGJ=j+@RWOF|m3eY~u9MZ4<}& zMM`CN-`*4s3n?jFe=>YFbq@Q{9cpM~va0n;6E*I^_4{P|eT-@o*;F{#vnLhuuAEw` zG#TS#>L#*xpBIhv9Tr+;_H?(l?2S*|=CdhgGcIM!PD5c*wXk~&w3{_vAkr_3nrJ%^ zRAB8{3f9(ig}3l&9oF`);Emr(O=ch#KCQ!Qs|By;Fh_U)xah5{y+R_L!wy7YJY$_b zz&as5H|{f2R-mvt;Ius&-Rfkg#yV%g zbh%~Ah&=PfJ|TLNKoQev0|KrhFvqOgf247yN0R3EM|6XpkYlKxsZY}U`arXSE#Ci5 zS89Rwi~|Io&!lh1aU!It=aF_&cdS6odhndGTl3qN(YzIOzrTF3)LG*ep(Wm_fdcQ& z%>@$4?G92Teup35W-h`APEWI<@g1G!ih=fT#9XWtNY=1?8V${&eA$&ps{zR_jg;{ zgMD4wwvOX9>R}Alt)0PyFfd|n3PKAdtc+GTggUp|OBonp3AagI+gor#AEgV+q-K^I zcx$cB#G6ZP2HuQ-M5BnIZGL-ZQ_SJLO)&@U3B?yG z`hrkp_(F=`7gGGbATAl&NbzeU#jg!TPozRNH9I7f^=s}P>BI)}V0X{BQGjJarM7z| z+NpXH>Dzmil%C$vTZhcrp_HTOAw+3Ufk!-2c(;L+T6Pch;sf{;^I)#a+K1mgjJmhg z91RJKH3bzI%peEzW{)Yb?Zl>}uk~W_-I<@+ZOMgZyn65A2fA{@Jrc|5th1KvP@Sb~ zlWL7ICBeSe!V_U@0YU_~y~A7zZ$B<+8hzm%Lpb;gPchBHhe(z}C zU~kWGpV?cAAPZX0;OMY7G%_n&%??>4 zhR9&6;Ls~vW0cPg=R0q;c4>tGNN&KyVQB-|v3D2)SGRE>wpHD^<}jn*7%~^X$l9N4 z$B@I?JOvi>LLau*haDL4VU^yzURS_K3JWy!QR((kq<#-Y`Qf2xf3hN$-!tN*g7!Zp zp$TaT6|R&-;<+beTHVlqj~J`;5S>|p$fi^lnf)I*wxbd0Gdq4Fku&CeSfZ>oH-)m; zhWmH4GgxMSrg2vDuaQ=Jrjb^^Ado13)Vgs z?tVy&2&PM=!ddC9a8_cE=biF6j*xpxqaZkCaXgRwvob(n+@uwm>=qTl=_aqYP$`{G z^2n0oL{K7~7`laN%e5_eYjR2iW;iJvRu8NIlFymF2+{Py9?={CVA;y7(nK>f&R60> ziF5K(;jE-24#%aocXygG6j*-5;6dY4N)MLNN~4hiIJlEi4YakJt-MR&z=!dsQ5jVX zunywmMcSs)n;~FC(n@?eA-OYjr-K3&2ue!1M5nS@qEpJnE^W@5F*2G&@9B1WW=-hN zA~@G0YyLgmUT+ayTr+GAGh+c#QZW!=BE_o>pND%TfcNrec#xsJuP2@UBI*3W?9U3L zeT-Sh7ss2uVU#=EPT`@q@_e(0;C{DEAFN3|5lDC+4kaXoj?+9v@g2k*5i@nsc3T@u z65l;GFkqja5bS7GjEG3q)Z9y=F_*M&3>FHAHA|7;MYrZr3~Yw#PJ4Ys`iF$_!~JWTul~<}Rc;BNIrB(w&u7 zfyTJPhwd5oqM-!WUYQ@?Y9&52b}dG3?n?!4v}fFGK81$e!=C+tp`NWb4|I&C&f4vb z368IOM>{(4F=KkEKoQ(^g1!!XP=j(}JvpF});+HpY1K!86rV^BjF>~^1mEw)Z{Oq=F^8nKZxdeli5S zfzmRbQ0*QX9rh#&(cUzXgiJ-ARFpn=B*e_Btu<8+G(H_ePQ}_<%}J8TK_y^rd>VMO zMN81zTm1fd(n6^BCWfM9#m%1=jD)w`ijt6La;0-Up?LzRzrXS%z9xBsC`sNhYLZuq z;rFJ7eEDNbTc%WoUzrJ#<&nU9d=UxjNd$rS@b{16YHkm|!29{VQ2@U;L;FzgJnD(| zXm_R$qNu7i!<_F*eD^p$Uo*Qmw#)Jx$gN&M5f#DVSYy-hF)>3DTH%Evu(yVSV za$73H+Va<$X`~abb-NFnKBp4%i=B1rz_KQxn2cL%|03txSg0&~>-Mhv;MhQmS*T)M z-u!4vVXcXAjPr3?vj@eA1us`8zo2O`(~YbW>F0HWDtOzyys5yF7qb;#7_4HX!+He4Dslqn=XBKyRJ;%viGmJ?Sj zo~1Yi&dcd$EjiQSL&sc?eR6C+~Xa0;AHXR2I-(<#?oyp;si z$}FlHX9Zp(Eu9I{EDi#TOhNd^9`TCbE!p^q;z;d6Kx3xPN{O{Ir-LwZ3Xb!F%T#_m=cw@*MpR> zlYxTO$tr<5jxWm4c$qUo|b z&gGO8pD)|7A(Q@Yli~JedLQ0wOBYpO#|B4mt!z(s-W;TK4TGZacAYmRQWPa&r>`lI zq9_R`olTK6slQ{W>z4Ftmk4tl8@o6{p);Qn+}_d*Uhf$*CJ73ayCowOq4h_#vFbax z(FJ(0k{6RcKf8w@CE&L!0Rq_RNj6c8ggt@~vTqF*5s^Xm5EusQ_#2Z0^B#|8IU8~b z(CjD3*rm=%nZXgWI9DO$ym)xz#lv^~T@6wTQy86d*1fvzd=AjQ|D7mLNg>)-P>A=G z6QXfQ-mEhMh0TE!&c3COY&ex>w#7t^4B_K^7s=CWMnc7WE)sm^LRie_BEe@)b7W9Z zbX&HfH%d<2(c4cv;F$Us=Vb3)2MTit%b&2><#D}ZKmS~8A0!vpT- zlvm+$W==>PRy2)tS2&ArZwC%Rq_^vd_H5S^?Wywvyl~12H89TM6kwdC4q!4*Y-*Cb z5hHx!W{#O-0~oI2II`z~3Qb9W_7PKz^oen)BZkt0HY7Y(ZPOxH^>HbEx3uwt02F6l zIA$e|O|rfgP^2*@@y2nIV5B3DuNut0Nnt(NrzoBr)SA*AyrS6svO@CUmzm-Q+KQQh zx5jn~&%+-`k|84j4N7Y!#W_4=$ZW}!an2waGWh-|BLvP-CPN0_dt}JqJE;uHwV4!@ z)GQ$^hh~zplL04KGo`WZTOUb<+k;eU+Od`tPGE|XAnX-suhOD?;)V|11C5ob0 zpU~?VYMNE0ZKBzVIh6czV$1mF%O4q%w&hf|Eu+$$Ch1VB*3l?k4u$1q87eNm^Hb$4 z-a0Q7YaSWx9JW@kNBjDFhK6(Q)Lo-JLqSdQG#HxXX)`pba~Mr`e%#D9O}Ysbethkx zqFHUvkDEQ2mJ^g)Gbvubq>L{Vm=J)7Pg%Wk1G|@_QgC}_AW8E1sHISMj0`nmCj^(J za+bZE>~d7db}TFFqvDP!-Yw^kD=xPj?9L)7IbT93IUi}Hw*wjD&3;A7mhu)2DRrw) zildJ`-R^@(IzLFowNU-`5oME_zS4=*J-8~wT8fI1ZWsio*$Bm)W-}5avBuRgVvf3F z3Z6;GprEJqQk;%UY078>5YCJ?0F;a-0F;atfZEWZd0Pk2M1@V|zb2%zSQAneP7_i& z4*~|OqVl7i@#KkW7`FO}vR%j^W>psWnNe3j$tdy(#S=zVs@=9Qmhr_pZhpMQQ&DlI z##eX^Sx;yT*=#DBA8SQbl{rJ!QxyzPRL?KYmtVYC$}1K5 z`NCW&AZ@O&kgpslRW+sNQSzmkwV^Gc(O7#2idzy)yjcFRYi3Bo7aXDh|9n&mxgti|MBgM zLu5_x`SRLu5N7{xuMy@yz+Hy>n=nf-cSV;7{_iUMPUZd&xEDZw6lN7>3%03hsRUmI(G(%#2{gX!6p(;3=1e$1cA#+_mn~ z@I-xW7}eH>yY7arLx2OYzg&jzOzZqip*DjGpZR+ZDAxmC0r(l<=cuDUKQ{<|yb9(e zL2wETKff^uz5|BupMv|;Il<3PoeOhS@bgob1V0AD&rjV5+ACn53cd)2pPf2&F3eS* zI(6z2;GXlSh`b?VeBfIr1HgJH^7OK}^b+zYdXNmdQ(2k$e(_cJGa=LF}Rahr%T zcW0?8Q>dek;=WLi>XoQi(al9+Vzv~KD>_)N&qR&2s64;0SdR+xMLH^rb-03{v2!N~ z#WLHIsCH;>qB0xpZ>+7SGGUf$Q6ZYGR8YAE@AQ17TArVdii-=gWi(5rNVTnC?^wT@ zi9kL-IYN>}#q!it3CRfm%6F9@LH^0g;%qURuhbF#LJ`jSIyex{smGvSYZ0NcvL|@t z*H(qmYgUC1!Tc297+?wTJ_YS>Srx7UJo4sM;RyvpFgE~B{@$wa==@ZDREOXK0L}9i(ESv^<$xyv=qC8+s7ir`3zeN7 z(ta7>JOi{IZIb?E15hP}o7tfKzX)~>)Jglr0Je*iUjtaH;8K_bx@poMR3R@=mXMbN zfca9jJeg-T$QO#md}SU(0a3_<8U_c_nxCpx=0xR&oc^WdWsOlXHO-f0rsWS-%k@%z zdbToAnAL%>xI{lM!&<2pOH~<%Vri&qcQ#@H&4_6h1?mgg4o zjkTbqwQbARZQFOWU)#~y)s5EYeTtEzTkJ{oBPFM=9Pm1k8wrc5X6?@Vd(&f4M}+LjdC8Mk!| zlG_*ber8p8Enown{8y{O*MD+VNF2@2eR@?m2KyrqWY>``)wLnZBkKX-W2h(xSy`er z!O@MV^P5n|u7SA$bsFvn_6YXCx;b;nYyYz42LumIt z0+@mBumg_28~*(nOwdmN)_`|m3jPD4_d(zNz(c1C$QkQ*?SE4KEqr$Q{A>BdFZ1tA z@-NjMBCdy_{Uqb%?IQ(VQIrw)R z=Gm72W7P3Aq%+JXvizsoH(8qVa`ac3co7Cuc|9))Fs4KvpJ|;b%Nir+W0)sZ=L@q@ zsama6Iou+ZqrjqG+7f&d7?kOW+H7fl8dE|)Z*6CUk#eF(+!5!u{clPrspw{ zE{dFw>W3CeNF(O16Kxg@W|#Oq`pByA^MIEEzWn1=;VS`O{YlaeU50fV&c$^5L!on@ zfbsGEAK2|r^e=Y%bL>0*_U9=1p5XEEarX59j*r>@>hUzk0vz{>F+rO>K0cvnsqrzw zd-NpQGnoIW?GN&;`(U9u74@)z*co*d=GWIzb>%XUY7&}lp4`+FrpM8S#@WS<(KOl; z&id+@aYm^Br57)vxxw-f8V4@mNVaD9bEfTBk>P5SGdnAcee(wjv*jXvTb!2@-D0#G z=cFUx7fU-)zUiMO(-kiuiMSOeCaR?a(fs1v1j6p&pF@K-i%P@FtJ!n|xq;0RC$);O z(Mg}NI8e>S(!}C4XWyj=y9qTc(npO&1kMVZj?Y|SsXT{Cab=-Y6$|>c2sTtzEc`FZ zJq|?6mR%;CsWgxcq)65{H0v7|*I$Fo!#W;21$bAPpFMJ>dDn~&LrICAp^*qXSymlv;#daGOwDKZ<=O;^YbFdlPHqBfx ztN_(~u-qIp);5d(*mV?aBP{EF<@&{XlI(&15NlRDkmQrw56OWWjk`@*xxVe#pK0(9`9A8)rHo}fBDo!2i zuTzWjNk}c6RI5;8cTz{l!fCc@9A9pgs{F76pj=8~%8pM>yA`>rQ%YnkHlEFNXQ*v) z10xmCGn>W0NESrO=135d;b5t7r_GUITASONw*|NL_jR(Iuh34V_RX>JyTE}wdRVy{ zj#{udi^XTmLC{ep(-8Dr<=G0iW#eBH_VBnaug8B+)clicFd8_XYT1qUN{y{(9x>d9 z;U;kX_PIiakebA@Jjx_a{(j8y!2aUWmU0|48&>1JDf#}w- zr8YKy=X~YheAG2G78R`~hMTlxU(x8&Fi$;)uC|ALa*WVO6d7k=o%fZ-$#hg7PEqMnY9o)xE9WD!`LuN9^cOnt7!N{0*` zW{N}`_2uQQGw|Hbp;z7Q~B;&RaeO`ZMYDDLsZCBpg%&Rf+Y(%4V3hY^9t0Lqk= zshcG&!j+ca(AaS`R-x?K956uB5KSD4#9_MJC_hY+>FCqN zgg-M)j;?4p4;}K!S=`8rFzC`Pswd`ob7h><5G`O0TdAm&5Il{Za!+U!4>ZKdc z(kbu3$z z?-I)zhF|J*lo(&feqxo(7#EpiCyY2M>~t_Tn%vxogA#F@NMB7UoC>RR9fe1krpnWc za=}OU<1RN70Np(#yp<_SD z^BehkbO;N393r4Q<#90d%;MRVmEjL8|4 z==wnp{E%$ogd7WmD#)V1KbFFrgjbA%xIl4;l?gpQR#H2A+Er+nhKhHjvRK8?R1MEm zK*SI%S!KK?!iY`vySidJEU`XlfZwW#P)+_&*GN-i@f!3qIE{x&Eqick5(NiW2a%qH z2?Q~SugMWS4-~p%`9xX5jKU_40dXKUjX|l-r<#sy!m6eU(3@gjPO~$iF!YLuuc_*zEocC2$qkswDN>nQ1qi;7}r_tYP{)+q3{jhQDZnU@GC8qCKuxnvg?q=bfJPAxFfi3OmEn7 z7%i3}Cd%l>u~KnE(9D@%eup;eLGuChRjqlsBmmde`~(UE2L#OvvmnDJEhryyK@{ep zIVivyw(2M>N4{t~v4%<=;yV$cR@k6TVWxxTe4dpJ$8*}3a6s$oM*J-**V4|$C56cI z{FXRJi-L*Mr`jdwnHxA2n%x*Q*Jo>avC6xs)}}=Bhe>eq%?pB|R|U)&zYI5roMK%b zzKE*PtWUh684zMtbrxa%G)Vg=S&pX?BE0O?9i+75Q&D^pC++yC9Ty+v zaZ^Cdhx>pMyXG719pDXK+Y(Z{vf_Muc(6VI3$!3H{`{U5Q_BIe9B{R*%Y&n^(?Yf zBCc-WZEv^^BF2oe^d!!Gd5Sn3L}~R%sI(py1z=5G3gzmHIUSu$d|djWVykjPmv;(@ zgk{i-6eJ$Eqv^;ZBDj@fFxRKlfZKA*yg`*pq8Fo-h<3N8S#;uS7VWF9sG6?b27Sb; z$zYHOLqZ}FkuFC_<*;b2vd|_ikaj1bV4=?MG5B%g zD}$jFiiny%#E3)$&l6b^(w%rA-I`yNJkeO$MVKh%Y0RSBaXGZb;&Nz+TC7?e%@rCJ zqcvokW;7$ZtsLpOMT?+RI!vMoGAbH0IxeF+kjPNQE@$oiCa9(mN@(Q!kXdi=3P35n=i;EPCh8NXGkMd8Zljy zlp7W`RZ~0@UHC*>DjR0o91LN;c3^A3b;;NmmCkLk*`pCXH%Z%eW!!w5vS5NB zRBXRlnmd%UX+T*hB2(8S)Y!i>w1lY>M5EbJjo}wsVdUPmg#@wc??bw4eNSxpB z7riJ9O;`uF3CGJ}cq{{s0zdS}IOFm^aaIK;fo{UdKT7PHN7K&6TmwJoj|pd@#|)zm zt80?S)T!wv?!TIy>9SmyNI$9ag!bOQ4#SzhN?`wk$bY~?fV)46Ge(~b!|DgZ@PUtq zVLO0!4U{8ZyM5-#W6%X1EdbLWEw}D3QN9%TCnIfQ~EEMcZlq`UfR29t6r9 z{ZJT=186@6y2<}|*s1s4&xGL%P!^v2H(~fe*y$!*@Y%$!ajr=@7q^_7{2G?y^U+?6 z@cHn|;R=x14tT~-!tnJ!4Z~LeXrEJN2=gD|{@kNs_%^^gz_Fi&;e){aSAk0qp3<`~ z2#20~LD;TkPqzk5{{&<;?(r~nn5h4E;NM%6{=b7= zj#`qx558q>$Zy#B$phikE6)jTeA~y*4K`nL&Mtl%d^Nsn#W%rgHsbt0UKgmYa-i#X$p@2?gX8xVdx1p!Q^UM5u{PJ(tyY2jYWCocaM9>@9@+>iUVzLeCzoxiMqPk8(J zc;?@(_u2W^@at=SIsSZt$Dg|}_I$j?pS%li|5uXw*Z<4<_k`EK$20$UpP`w5TcZtO z!Irf_;!edPjpZoE@hWpJA-w5-WlsOrFUBh|DE=tpnz4hS>PQLk@LO1N; z$u~W$?ZL@6C-xxtSK^cS;?vDIrb6P3|3sKCE~<1ig_+JwZvxYRZvN<|%wZ*i>mG4W zQ0bDf1hN3`8J=-?@S#kLbb>Dpu1)-j%Qef(axy(y#z;5bzsR2mi?oWrIzD5Nppg&)+*T#6MkdWc%|qM~3Xr05Hu6W_i>8d^KQ5SyVk$Kh% zGUpvl`}1tb&_6e9+Ml&r#wgd%0Y86&M_S{*tfyCK8KZ7Tii0w`ZO}rLY1J~S9c7rF z>ygoIBV~F#GFNzHbX!lE+dMK?Ix@;B49YAxG9+B3m>3@&Cfz?!=GT-=a1s$B;MXYr z%5>8*x*k&I_q2>5^gKf*Qg&@n=1+CljI>_Ag3QM}G8O@J z!H{WkWOUewrp!|v8Pa(^oDx)fFH7cA9+@3dM94(St_}M0 zc}Iq{cEvz{B7hsVfA+|TkJrGPCG#UkhB|iw_{);H;1A+9UZetLo-ZV_WuE4dxo!oS zYdkW%U!K3LuwCboxj~9#%Jh3=Zd^g;1s<7QE6B`xWI9%md6`G1a|M~#dSt|hr;y7^ zx3_v^x>xY$-5!~q6=Xios^W?Xu>%vVd$XxD` zxp@VdMvqMY3NqU~GUDO{$Yqs-9*@l63jU0FWO6IWOnGF6R**U9k-23BnY%qQ!z;+# z>ya5*LFQc^nNdT=H>S8hmf^TuGLL1*u#IKE@SsO#Z-xxfl=-qpX5R`j|E6V(@xge8 zj1JqA{)egyhRm%QGDI_Mzv7X(&5((dod*5kZxdu_S6#43x!VOrmTNsvQz+rjb=n^! zG~@*71%`~~rK#g{vyw4s;?f%+Sbu!}+@bwhg|!X*qwEX$2R~isq)Yx~8Z2lT6(Lgc ziYZIxut#RUBcs!cX!`S7M~3u*A*1IOMCmkmibmHCBq`?`(~a+5hqzG;A#;XI3W{zQI3=7(Aa zIF>fjX8`=Ud8%d4`@?j(E=v)w4D<9dkIai!kh#($bLTQLByI7?%q}CtuyuN5<_sBM zdAkKNWMNs;cb$dIOU^>(rDq}Yva^tR`B})k;w)qipM}gTm5go!wFSU z$^AhN))+YMrxDhHf$K(3gGt&`VLlt?ufSXl^C>VncDNko7MPd80F(O} z>tS+_;%b=Ocen;7$Bs=fxj)bhb3e?DFuC@>2`1O`pAPeRFrNW)Jy%;&;vf_Vi@u4P^c zb2H4VV79<)gvoWp=fULK;Po)MZgm69oiJ~N`FxnWU|t8a1LpNGJ7L1hpbO>=FuP&i z2(t&~E||MvcEH>NvlC`7Os<3U!R&^46U-i%H^XGv>4&)o<^arIn1e9;VCG=n1ak=H z%`k6)*$;CVCg;;5FgZsag_(mn26G7JUYMMp?t{rW=Qzv}n76{*0Mq?_8g=+M;0u6% z1bh>467W;NIq$&RSb)m_&j4HjxEinxKs`_?%Dk)7=N5HC$*>-<>_^I^n`ufnO}gnp z1o+^;;O=MmcN2hipuE4MC)S1x&oP+P9eizV$og{_ChOG+n8J^LlJxz`JPMQe6EIot zc70vC55p94FsWz%H>BKAn8XJUuf>6N=vQX&&ywB(lX2ap%pqm+`4|Uq)@2KVI0Iv{ATqjF->kCrW5G`RH4GM@E(cTV7r`q3*WH^HOYaBQOIeNw^Y_0->*;vEu${Ch`saapDHh@OEAQN72f}n*^Hid@;MKS{E9WoGQhkPKb#pc z={$2{y2-=*i}{66^5>lQ+GX@fy|(*TQ3;t}`ghKUZTEguPLm#d%yC0-Isca&`D2cM z!DEcyO8Qqy-<9MMy?946s8im4wc9SgE0%ZU8_PG-n`Y{Vb7eX&NIT~Y^MA$k zar9qu@|9IB7`O{bz;D~? zOGV#HyKZA&^}XbK5z)_rcFQ~D9rWb87{Kt~VcHKjFk<};g9yxU@7Op~E z#NFa};ikATxsOg>1*xtXGdQ60Oz+-D-_6dnc?PnLHFS~a(@dZ zX%7J&0o)7l$**+2_QWE-H+(tPt5-N*n~Xzh2MY`OMPJ+;CI&ci1SQ{I6RD3|!g$RI zE*{|pVSFc7xcUaWd&c49ZD`_dwdTcnTw9Mv#o|lW3=D5E!zJnk#%taG#J9eYTdiC3w z#vRQ&mf*;ZC~ISTb35-lE6o(~!U~^J3-j!wz7J0}vLD>nvqgkM^yZv+YvNazZ# zQ8}IAy>lnTjkss<9>qcUAEn}6J68wd?(m?ooiD0SMfkO#v>o6xIl{IO+r;!FYTLA_ad9<@qWXzD zkM9z!XcubICa;)moaDb?b+>xMVMM+z0zX-h+gfT-uv*=}7~wH%-W9`%0qAH15v;c6 zwk4V`xMgrWXnyhh5?)8aOiR88 z6Fd1R&7!K)4l)=S8rvKkEYIVvAnKMCA6Jep&XzXg_C(a~{=UI6C>I`66JGV9ePLm; z>A;-0*ikuZ%2C^LZA;Tkd3vU4dZ8+6_;i!N)ys1wad)G3SBjH!hziw7hDs6l^5FW$ z7&BS7G=Pffnn9l})ap%mGp%r^fvg?E6CHC+xGr&4VtLgdW{d%XzfddI12$(tZ3b^* z;o?y~K{Q>QK%(Krj)0FS#qSo0c18DgBfX>fJ;S-NA$d2ZZnNaojzK?fMa_5R1_pA2 z0a*vf`ul|i?a!XhzR?lkKs6C{3JhpSw3Tg(Ad5;!>F!%mBhYpTO}Wt?Wr_8$2_bEy zm#^$73D&`8Hu0@?;F{5Fiua-F6?7KzrKkzyNC*= z-c1m1p5TH_eVfkvo?TvUx=AeG_BjM>-FCWCj<>z?6w8*>8 z<5DETuETm8e+8dP$YGPR7^?|^Wz2v-<0 z_0>h~+H;Yn@`h6RMhM$NO_Yy?Fi%Et#k+joMAMK~y!U-5t`d+^FYL$*j!D%w4Qq`e zZiC|0l*;1tOjNDFHwFQ+1R1eKDoPEbkck-p(O5%7q0=!zRwnwcW-;;xR@xPAH$4=y{0QEmrEsiSXPHx)d~N+=3A4P^_?M@PVsn27r31-kXfez%>ybi^3xb^2G=B zpc9^$QiW0E{O!yV@wgPzC{ri9HY~rgHIwf`WvW>|Y&krbvVwwT!;ukoriuIe#f7WG ze*t_B@E*Wr4XeWkMplQn8*sm2C;nZI+vKJF?iJ|wu0VJ7J>KpB{;$JX9iQGc3Lj?B zU6~+*?~(tHC5z`p|?1w0w+C~E;v2Q&hj06PF`o}A~`q?m7V zqMW%lPyPFUvNk*lI02yh*iT{p3~oU5XtE!3SlN$h+|MO#7tCXTUB5_psYm~g0_L0b= z*T9zJcWM9e?Tf{J6#b_>{qICR>$NzI>;LUF7LI!OcB@{C(|+?^R~N@OV7Yh8pXTFx zuzIac|FI=L+{U0|$Qu-z5CdvOflnaa;gSrz6*BiF>&U z3#`G96d&!U`*YVzmrF~Z&Yhn0b=O;&76(yIS1AQLzkT{#+^g6YorRp%b2rk5`NyC3 z_YeQOyc2`@r^6&U(tq7GVaDYjk*|7BUUS6ZZq`O*5Vh zlh*wPgp+pSSl-U&_gm1bWpz2f;$PG2>rXdux(wV`mSLitmOaxj{LE=zSpVLJ_%p6? zokAqv2^?uUozB&Xu!4ttJ6hKhoxgln+Qsn=YF+O%AK#;P%ZAUpvzSwJ7%J!0LyhC& z)fq7%;FC>izRbnYp4E8yL9AtA0)ydcJa6V$oWtH(3|8gz8r-6v)pJ<+^gBk9>l-K6 zr`g5$k&jTQA+YfjMYKVT=Q*htmW^VltS0-CBqllXZlr@!*N@OD|b#iWp`iTv%_wyeLj6@i1fe2v*23?v`uY zrz;`H|KdiB(-#r`U<@E9YPMXBGYOTO%f!KA%M7>8CBurHBuvvdu@r9tITL!!iaDW{ z51Q%`zL=CTZ3g2s);m|4g+dC)RfS|eE5bJFS;H?z8@M7=8H800 zbr8~r4@x3C+lzbyD%fl3wz^h0bVvGgR~ zicA)ZQ|$0x>5NO1;_>KlSQ6P~Jcu8LGs2Up$07J+m+?xbrKs;}s>*4%j)y1eLF3R) ztcZxMAw2Zd)4v`G^(64RZxd zvr$4=_Dmi;O3Wp&n6-#9v`??M#YdXB=!hbOCU6d~zZzvyMFUO1w0Oa*inS=b$i*e6 zM0f+{_Y{{8BFT1)6(Q3fuLpS0Z+5n%JV1CvQA>2_Vs6Un)j_$hfJF#dJh7<26$z=p zjIXFO2xztrxvnMFW*R%$H!(epXGZb-E7srTR)~l)UMS;=r%qs}Mr(N?1X@z!5JnXW zx%P)zif4?)${-S3^CJpqY(1!xpF0kW6qA};#7{FN)VaE1}alLe+ya^qyxgE(HC1bd$=WjCOOvTti<+44heXqkU}CQyPn5GxVq;om2K`u37Rd!6 zJ-iX~?m?6cOsKhDEDsT|kR@J=R*n&-{uTO0kuGsxg;?sGXM)Qy4d19R`ZLX-tH1<` z?=%`nG>jOVR8X2&MbL(Fe8+KJlXx#sujNv&?g5iFxz;T58SQQy7IAExstZx~XkKkb zvmzAir+Fb6w_nqfO*#jo%7T0!j|VrfnLo_k0jgV^$6JlbUW1GV-wH*pu9q7QOgB9A zjJC-fAIN5(op0Y@Z_hAxh~u~B?t;R;!J#qia`kkL_T>ii+;2vqSsgUvZN8wTiMx9^ z`G6ZCtg?!@PJaTtEYQxxF?T|&6_*0X{RX7b=d&~ z>_C!%vg$k7uV900ax!09nk+5U^K$UmJc(E7K`06Xomy9a$H>U`t%0_3UzIy<#;ap| zn-1pJ9>F6vHH8hs9bpc1jNF`) z)}HaM{;}>JlvVz&{|we+KP%zSU=rqld&%G8ZtMRo;l$@whlKk8fB$#5>-u}(|E`1+ zFf}{`{JN8?!!Q4Eb@=a(O862?!bbsx4_p}DtKbMs!rcJ92Br@DvJ1$|bvJQ5nagGp zha1`C*k7HmL9NuXtnmDH0-aDEb!SG{arT6BwQ~VH+usQ20u%tR27D5*3Je!u!nz9c z#V2D@eJ&1et&Q;g!7kVjg8@IT&52is1H4qMY;mCEC>mv`4zDG@`8Vd9oGDG-iDSuC zJ~Uk_su=Lhjf|WacXK&VphT6I1kqe4d~(A|e$s;Yue$J3ao&3^OwPNX0h3eTjWBrz zZ41l@=8Z6S!5n~j80HILGI3r^6M`?H3Bgy>#63B$6=rbwEat9FtQj@TUX4CDH}N8l zD%h&w1b4AgZHhM_*uP?v3VWRFLFcd=$DKB{)qw_M;*b~^hz1BJf@U#DD&x^X{l@ps zNa?N@rqM9r9bs;@p@Zk{t=$iq97(}J=AuyL8R%r)H(r;WtSlUg>1Axpm2h-R7dkCh z!^Mizd5*>s+CrgP!wGq4RZ?elb`QJtJg+5|0+4Iz-KRG|8I}ua`9vS zr)x!miR-G|f>FaB91_GUv3N4|Y|hg*m1dfRFl!~}z@jbUkgKtCLu1Fr=VN3SHESR8 zIF5)X&E;Ttc9w0M{L-%&kL9K?CM=<~l2akAhP(f0E736ebjjglqKVLMESgac$m%>3U_KQsf)F%5t0BA}a1?MDFavljh3IDQhBt!p%0 zn&TZ^q%r!8ilL=gR#P_QM3@{fj4^&f6rX!{dAZV%LXpAMOh8 zm#q0~+?CtBDm<|nZ>QjUQoc3fzF#76op@{H33$JR@2v3sk`}yMqTerx@Ggn({gM-7 z2pjl)@0aZQExcm_IC5n}{C>&tcSHACykBzc@=L>G|B&1t{X=7ahM8*S-|4(faymS} z%)iGk|AMF3`Nuq4?sxJsj`!@}nU47uW*4W+^Jon*E{ddMXB2F1ZWhl-1KA{zViIk8 zg^zq2Lc&AOldy(vk`vJ>AIyPStoKD+tIy@|Y_ibnp?;p|5dP!jWq3twx z{gHGZhMjQycGNl5ejIK@+X>u}Hps%hOSy@QU=IK%u4)K}+8V-RFwf-uqr>1o3Hf7y z{gkB%y#%%iG!Mhy1^TUU`u(Fdh))C{pMZ~_9|kRm3-svsk97NS@(-Zn4JeBM-F_U$ z`$#7MYw%Xm0^UC2`$y6HpbPIGoq$dkbk?z#K_S37-8S)OTMLaX{IgyB5$^3R(r6XN z4ia`K`!-41Q548xSsHW7kj{E>PFUKBZI^=A(ta%-a+XG2n1Zo}Q?wXPSLXRpd17mY zT#SaJC0N2i%UOI5v2g7cyr^0}I5)RcSB8kp0rj^)-3LUR4s00^j;->q@b$np;n=1e zSnL@e5sJ(E1_s8VQ5aI!7ET@GISr>ToV;MIMR(j-Ums#{uHiNqmW!~|CU&wcHl;sa z8%hquEiT}EFW2SOT#Ji~$s!hqF5b!+1QEhTU?qGWfWJdHZ$RKYlU4D=)eT|GH7MgB zIzK%2EW14+{nXRs-1NMsOY=gQoRhCn=H<$KhBB{E=0;^UD|4GNuUBRlOorhmW!?gl zd%(BCd@{@lWlk$|UYRwRjzX-65Rqfh1&9vP-HWtiqZ znMXV_%oEBme|$36JSUw7Oh3vnFMTrmJu=K|$}r!3GWU37SS~2T^6is(z$3#lL>ZPR zpUk5k8J0K7u-^D&TB39suxwI>b<8IN^0L1OR07kI_mJ?%F$IBTjOBS3+N}iu+b`0^ zH12A7xM62Bg2`J=ejy^(uk>!E`pQ8ZVrV|&c_bE$C%8s-reiI9Z!=wj9GA2UlROQK z8Rel0c4x4x#yum!kgVH_FH7aB6n41sf~xP9k!UHPad~-=BS24qg}4KiS?rRaFO<$a zmK_;wd=X*OBZD%E^YA%DE?7T|U5#MWJ zKfr0w!o)<7$C>tga9v~VhG42Ni;oiV4mx4pJ{--W^Qgm?pa0`Fi6bC{1mxTX$@2-?DvcJ2YV3 zpUd|3Ibkf+gfSB6t%l$w1#IITnyW0JziDsJ%y#Wz|KozY*P8I)t$W_MtSj z$ec|Pp_p5Byg5XyAOzhd?8{DLIUcE7u5nod1GGh)O~t20(T3@(uigmeL)arK#*D%2 z;v}-CpMRqbvy+n^7QP9elABowdWWJ7g|04-M5#C(^mOk@OJQ%O34^j16%G`FoAAfS zf#R@duwyh$nm-ss^QD795#PENOSAZ(A~=ArU4e>jzauz+k6k5}u0k!qyrvcu7G{IF zGPcVCT-+3JPZ^d)z$|MCR{ZgKT4|b}*@>^9^Y|7ITM>mh{JmbGisb`Ap?H9<`b-{s zt>vkpP*6^MP(2k?D$0dj!vF`7>sa2#mpuGBWMM%d@S%f3G&KctbHPNpo-bFbK>GAddQ-<_jwZQ2y9??FqG@2nIL$wmh)mB5VPlZZf`*j_)vrpdS> zXMIO}TaMbA3YxFjdHof^hLMJ_9ncFH2h0GL03l!<;NHcC@X;FPgLP@remCqdH{8T& zSa(3$X`WQFGsaYkX;S)|F7_l zmo|i_17{PzcfLfX%SV-YHaeD*G1LCDFKYi25`LFgZ1^WUq?JPv2TQVEA0`!y?|MzeHT8O zfSyCJb6)UrnD-EWI0)WE^E7|&2JfE%I7fXy%nvI2dla5(KBVxp{{`%yR6L)7d0g4Q z472T-7YjWD&x3u-CBohZ`(|ao1NKPSZ-xESjndyS*q^EJx4{1QSE#u@bpFGYmx#E0 zL)jV5ufu+c;{PV>i_pWceOKAZ^BvePRXpE^{q@jGo}Vc@d42@@<%;L0hW!_?Yk$v& zZms_!*q^HWdb+Yx&(mOk7J&8$<~v`vM)-BLvJ<}v_I1jyX4tQR9q3@EvXkd}*f%PC zud)+=GwkQ9boeIj`=OoqG2p+d@RQ0;{1ohU0Ib15WheeF*f%Nt&qsRDPW-EYf1a|x z2KLtiDEoS4C(jYs?*Y*MMwm@X&rxM3{;jZIsr0-Z_8jsN=-`i)oje2h9_3-UiQj=Y z;b%#vsT#2^XITXNAY|VJP!bX4x;B?EbQcY zP~mC+8`yPu_yX)-SNz|CspB;y2cZvfl~=mK;DdI7Aj{V-WBhhVbajlyJI9EZvJ`2v`%v-@GP zPLyD>K2%^btq#IuTD}s%a{u399s%e8ZiLSN2kzeo{2|~z!219n27C(ecYrSeG{2th z>B%7WY%vv#HelLOFYM%5YHsA>j!(?Fa7`4pUu&4A$YY}u1)kW$f#=dvX>w7{7n5n( z-Yro_XCDrfII}bDv)_Ev|H3%b0pd*fA>0J=Y5Phh(l(vpErc(InWL_@s}!a>8IoN>0L?gbY*ndR?_Fvefl*{ zo0Orw=lu=gUn%(A4>W{RA8H6E?r#X+3ApCN4Ph7HFrf2+hH&^(;007a*%1CKVB#+u z!Y={N{fmb1BmZwh_yd@ae4-(|3uYV47Xhc?eQ>+*Q|KjV{E?3|gwOkELwG&lb%389 zYY5-}F=@Ww;|(F<>3`J_z8>)O2OGjS09OBXL-<_43jr?!d=TOMqJnS1B)t982z(t7v4`9CNZyLgX0^Ii5hVT~fzWVEkE1&=v0^9>w_w9!8 z$N&2H!M*>6e1OiQ0Mj0Q2Yv!(07n4fcN@aH0j}TS_atr|^gM9t^q>H~EI9V0iv;Z? zc%nescb$7tIHc^Z+%E9b-@~Bar+7}lTyxGv;R4_&z?C7ti_`9hz<)YGewR<{FllQL zK9`T~!%t3!%aqTuZ$1mTry4R}Iq#yd`}~W-)d2d@1^0yj*S|kdxVsG6Cy@`@|GQwX zthp%Meeq+1Jxa%g%KX+Pk4@j1hGz}@+i_{)=VgZdduuNW9|WwV^PS*%nc^Ec4SrYO zYLCok&oXWAf!xE$lK}A|&~Cy3vo8wwD;S4KAdb)rXffOxe>SGp zO>@n2E(%`*^IOWKUBms#u6Z<`<_7TV(a?9h$^)abHm; ztij8`$Gt*rQt1+K+&j}IalZ;2_aU`O+}EIo`*PYO?%Tj|KTMmj2IqFm{a|f!KkKL9 z<6hec^iq!FXWwrPWEo~{azAVpaP&i)q(2)t>d_{w!R5g5OuaUVdn~^e=wljale*Re z$8WB+Nu2LDg?KWY+T=`Sp*GWm;$x)}T+xYLmDT zh0`W+cL2wH(owZ4v`FlO+dd|swz6Wm3Ygi8G zHs{xL>-j3_gfF73a2})i_g!^y_(l~D;*P>@y5A1>I{=I$^_g>6x;ZC|zLWT`=f2v% zKZUGb2O$4@;eJ1W`9hu|WIql!%P;A#!Q6=RD=p78n!f>^c}v`*KfE~nJly0ZJc_*g z8h|vquSR${FVpTXf>+PuN&gDmobPM8xn4uMxn@K6k1z-PDAJ5}%II|*E&n~tMfF^n zJpTy&oWHX?(QU5v(EU%KKMY`-Kpp1XpY&T0cg{<-{_lfVuj`QhL%8)C4&8bUNb~FU z9_=>QLx}q^hfm^Rtk$x%M zTszVFFNb>_fZxuL&NYaqHYVwBuDg)F5xmy`n16IXh_vK7g)X0Z-9o!xc=wvH9sEph z{%(N11Hg8N;dg($d+<2Q8^fnf%~OD-7qV<4wK)Jc>(T^ZAM9*9wD|(KS+981s|-8C z`~b||Fg2|V`=a7ovm0wEaK8#}_6fXL=7^$oE81HWtq9s5EBg{?eADCua5HQh;yv^T zZ`+h=3x&zjMzyCO>>VAIOB(U^G`7H_17h_;5}I%cbij{m;w$447xhW5gaIEZa*2eW z-|E#AxroBu?#ar5LbY7LeTLOieX+_lSf0E!cT_U*O{J zbt4`Is8kEMZScxKT^xY}4LFwHzJPL`qoySlUDGw%%nPwxjW!FNS-R|YScEzC_63mbxsurJOt z8L*p=G`cc~ZkL_~h@m>H5s9=Fd$YU|Bq+}naA22V4|eX{6hwJ^m&RiO8-kbMbK?TG zP9uEKbY<|eojU_{%w-mbII6e-8b=JoL5mWf?l^=!?R;JwuV`&+j}K-cOBef{kw8R6d0Rs&@sG+_lDO7wl%&Ah9Fe=uKQhW;P&?gTET{%`#MlvXXq5>Xgr7h_BI z$(ps0En!Lug|U|9%23EYS+iV>T^ACH5Jq;wAd)46kjv6&x1QhYknjDyuit%rzxVHV z{~!Oy|MB>r@qRq#bI#{;&SyC@a~fyP;Us~{10|}y64gYBYMNxq49V1flBt6vQ^!ce zU$fJr{KlhnyVJ(dx8fIiKdUi)+|tpUA|1Z`ZE$nu7dy_>Uyt_lY-(`f(lh zpL72CITuakJWt>Z>PJCNANZ$5zfwOIjsKM@E%qz1N3*+g z!Gs^PJC)A=M}2?Jm2naGe_BszmHy?5#3KJ(rnEZ$M`eCB>E9P(TYsI@f1UAvnEs!Z z7tix5JumnlmqS;$ioe1Z&q@1nZvgRk{#>k@AEN#||4Y1Fep!k4&~9Q?yZTS!WQv~` zd{Is1a?P@U@xj4dVd2Mb?D^@ocp&#Lrtm;Jt7*gp!k-vM3?zCH3Zf0sl&DKM6MtQm z__SJiyCvW2C%?r(f(26bIva>Z+rskrfPtaPGACn=8c zFcCioi^(*(do7c#ul!BKrhemsO{UgziB(naANM^KsDKCm;pk!NC=ov!zjfySeRvjQ zQt3xs-&29z=Jh16EE@f|_rphlV>a%nR@EB1{We45Bfd;h$@STPka@gzNrb8;nYU+63`p(1Sl$9>d3 z3iBi;+$_VS_RssNam_c032ii?bHwu*GpWG*irnLj{Nnx9z6e4Y5BlUBA>L<=<(ALr z*jnTl@3VGU5X!|+{xIQ0n)THb^ED)#i6?^4c?GT`#Cz`WU$^tf`r~h0sv)jl5XV96 zYr2j%&;PSYVq#jx%-q7#%DS{%SsPnB`*MH3l7F}S?@Ru_vgAM7^RuGT@)aspa;RLz zv1&CZ=jt_T%4*fF<5IU?{RRyiHE!bCwAp{0zt^sPhmM^(D?GY%p1&Y6YT=^A(My&tTfSoDDoxDlHEY+c z-w?ZT)8;L|Z{4QdzGLUE-Fx=#i~D2$frIgf5)L0ZnwWI#c=Cypr&3OzIjcLDdj7)2 zOP8-)y>>nA#?4#$+js7!-@BjjAoJm)$4|1J8lF9Wk^S=3>zp@#zJ2%pL$2{-UVcGg zQE|zq&tJZN`_9hzYdrri+wUJRhGUN4apNb1gihqFuqjhH*>Gl9_^jDK+yD2=|3A@w zQ~nbC&yTKFUCg>z@i6<(^Z)DA04q871N{3(C6oXC@t<>R%KX#ARP*0@{9_HKa*1P^ ze|nfY{Ll9FkRNX zZQIt|)uOpv)|+E-*U-r`RI;A_<3mHaln!Tt_w%0`BJ&6oFF^I*8X!fa9p6!z@xE>* zNth=-H|O)rs`R;qM8@Oid^6@tCCWK=e19eVG5^&^2j4TGv(v(=W|mN zo=e5&|G2ik?B|to`I~|3V{qUvUP}At#S6vDF^PXW{XEx{b5FSj2WJp-Yl}dRh<{w+ z=U4X9b^N>$2$%7d{95VMG5@%N**{hgz%~2$i%+~-!>@I6)fVw$Nk5lxwfo@dDnguK!$u zKiD{B_1AWOmH3;v;&EY+|5RCkcwdMA=vVQE4yC>NA2Um<`?ItEaX?u*m%p0-v8kUI z^ZH9CxVnnHIZfQN`L%)T%8ziJmGo8&dPAc&T1U?pToTD8p4$iDNy0X?tDq6PZc{t%tS}!SY$u}%kkZsbo2b=W~e;q#w{8 zjsmShi6*3z(Uw?F^d((Fd5+$!xDzYiaywYe8PkD zbC!$s8BTDNY`wa4{AZDFOZraf_>U*ukn|B0>$`;LMLLi2;&=`w93)aJQG+F%T8H!=6!S+CT}i*9yg2?N2>RK2ed+kmA>E$z z{nGIdAfapT{CFRBO@Fl8|UROH)vq`rjeXn%G;nf-JWzt>G+3`ZcO?(+7Qc# zKBS8&FSh6JUjMgB$3K`n^~rw-#qBL7dXmniyx5<=UjN%l$N$&s|7q#?PbN<@@}I?W z#45szv>=h1n@Fmdo0wEIFE4R2H<6Y%Hynrs#xB!yt$=V-onA$Uo5YbnwyE`%TzLNE|!;9 zFt-!S+g3I|_p?0T0#y*-QuqeNn!5*-<+$30V{BXgx6F>e9PK40KfXsI%YQk^_)m|2 zbNv4=5B1BiEpxVONe!&ox(!<`N1ZD2?U57T;MC!+^)0#6JeMPs@C`KA#oH-4FL@yz zv;UY(sN>Idi1oLlWK~Hm?p*J|RrKad&Phy6=9_R(U&h4D#KOeN#MVS=;%Fi>k(($? zl;R4+zZL%ZQJyu3j|!!aiqu4WR4RQq@U55lka8FL^Z!)-SD9aV#XOaHRN>*sqbiST zJe+tq^Qg{4!Q&s_Pgq%7mn~~!W6Na6WY1KNNm@FUFP$osP8Cb1N`ILg{xVhm%T(nr zljFacs{Wg)+P|5c{`KViqy1*)<`ztrOjf0nb?H?0FO$t*Cb7T%)g<=izna8;{+~?Z z82wKs_Q3KLDpaf}4x>19zlQ7AF#UCS{yH50ru(b?>+W}Qa{eDq)&GYRSAgKPWX`MK zoL7nYk9UJgXiGQ~rbGood|#?YSP+#7d!hzmLX;=0iK>M7a3Ji6>O>i$B4I-~5tc+1 z;_oK$ZAA>z(%{pEb^N?%G@q0|N{XfV)cp~B8n90B{qtw=X+T~0tx#$3X~VYpfBw?o z(~r9S$7D;%)@FN}*9f%ZSF7cHxB^D4}h*Y9Bv4aR8o)Z;_ z)x<#J4$*=*LQEy{h_b{|qBn7kXhi%$Od$Rwsu7zAU*aLrjyOroCO#7u#3G^xafzr$ z>>+}PS43rEJu!s1Pq-1sh?ztYVNa|i`V%*arbIk3iTFU&Ahr^th%BNLafXN>z7rxjX`J)$*{M9d%x2|Hp1(T})6xDp46iNt%N zI`KO(l6XRNBu*2*5#NZ4w4fsYle7lc;2<1?ckwQ^#FlszkK#0(hWVI}HfV#(a2fW& zK6o9kV`FTL`*A;pU#?kl`pJHe1jA!vI&ck^qpn&4Lhk}q1N?FnzFNl9P z{dzzA<*)a}U;cW3{H6FF`OhJ~SN?N|+v5|D!)R-ZvgS5swq@*0?M*l){uk4)_v2sh z!@u5tf4%RD@3rFlD}Pzhe?R}9lD~#|@08H5oZmz6Z5n+hp|2(MuY|tl985w@XbBx* zApWcAuiF>j`^BCUw<&H<+?I?Gx1k`EgqqM1;)jX)|7HbZ+5ZP7ah$|{6Z=ZMHwE9I z{y5`@lWRC{K|ISs{Hj#)6-jHrutb;p!9h4JXyj7&nYMJvpmj3{g(c)+S}|W69*)v7hGO=H*!d9Xhq$=kiglW z0=~VwI(Dg-pGl?6P>V5RI+pufXlJ$JifmH*QPS~!vptmercMdoaXY(Aho0$XeZDQU zyAzUBcK7FfNv%U;k94_z_0%K9r<4OPLLao4;rF!rExY@Vhj+Za|A0KRUOP$F0QG>3 zE0z8AXOjvNYt^}MbjZeaCvTP8eL8t-vS|aWX!FrWGHoxpys8*TtAYU`A>7!(`GI`w!v2zgy!Y!YLg(x@aXMFEwP5Il za)p;N6UKVKIbPw<h1Jc4$P@k-PIL+0p+so=@T8{2p_K&M` z?Vfa)V($HihiQGO)aJ}0neElON#lkdT{u~0ogQ>zTekmA`%hV;Vy|X4tR1UQNZglk zxk|^Q!{^&2Hf`^B`uM@nlR8;s^7~^)&u+4Peyq%XQ$QTad{>+zNcD@ zA2~Fj_O5zmWRCePG^GuaCi}ZU+xd+4ICAsdFE!QawIvL_%ud=6ZQ!-fh`AVMf_C6HVhR zthaP_vwyoV*m7#cp%U{2z0aiAS?z~Ab{RgAX8lu-mTBu>FL-ZpWu?Af&+)w;g-zE$({2~pI(}J@|t|j(LsB5Cc2or=})e) z$hgsPXqL~};LJKrX9pck?(KiU)M?zvwT&k?YIDXWar;W!^G;9AeOKg~x{B`!9?hMq zE(maIaek0%W3!8)f!zzjep|HHcgW@S9$r>UGq3bIm3n(=PVVRHnFTLwy^;>}i-=EJ z=^DB9mUHal0TohvOY39~x~nP(U+t0WKR6@4X{A?5Z8DN#o!3W2nh%e4THqKb+5G6U zYr>}MZgC?=hP`qQ4Hcet_DJ7q?|Wm1OVqj-4%?Q?dK}s79~O6J&$FD5ul4ykE|FR1 z#~!)(@Q?VBBj0Z8(XByR$mH?gR5Rm4nzzmMZ6s@AZD}*n-MK=(TaTwlEJt3N;-h*m z9~)9ooZslwvDD@}X2duzX{EK)d`a0><>ZPe`&n6Wb=`B1bP#6cPdnq8GvPOs zWeqd;nq}-35%6ZQt5@nJXP-wVOC8oKPT8-B%&D^{HPij9-9@c?--1)MR_$G1_U8H( z6|E&{exA)Ux-Sd(Jn7n?XJI}gPn~oK)$Y9Cc}4UF`}Hy2u^CzAfG$Or;FQkC+q618&xpNOBvMX=nBt)s;sfIn&(C+zvsVteKz&m_qj3pdmXjc(>}W` zjXY%;vnkvs<#5}vd-wH;jci{wF1Gg7&q>zN*W;yLBXdXFhZgj>(K&PCa{JWjT`TzJ zo7VC8^PDR5oZ2JoLC*}g4HmClS6)n#?2d|ZN~yNgW6FqAzT;wZ!n$T=hWggCdXgQ{pByBT&x<8?OZ;4*538IJyTW%ImPU% z-)QM+L(28M?JM+e1G2v9>g2x4JpC-C(pUXnyUvkI>qQ)i>3qUPuPSl4KE8dAS6ya@ zeH)P!GWKzSZ^Xqm)`LFGboVSi9B-X$+*VPuab)favxSwt%##OHv|rW!cDeftH`qPP9c&x;shahmH4m)Hx^6Aov8SJn zYG*y?o>#N0*9hBDvte~*jRQ8#oHqNvua^3Bzhhz2_^Ma(T2~Nai!1J_ces2^-)YiH zz8xIu$iG*by)wCSzwFsn3_bd}XEa&WcIE1;?N5~0wCnJpTW6c7MV$t=({&i@ZQ5~I zl~Hb!f7{Z=?fk>mCUK6fqRtL&e)Qft`JW+oTRbr--%|53#AWZQxVqn)=hnYE!nI!C zegSpn)YsOoz44XIA>XA|gT(MgHM34O?xFnJa7x)u4GNs6xSpSRw8^F`g-s9cXwyu$ zVw0-)^{^@N!)r|2*z)mI=eldc8hZ_xIrU?e>D@Qqn-TtaNrcz2KJzMD+5J{4;MUw- z)77)q)aVj^O=~v$+qFw`5}KxjF76gFG3&GYE^O&59`GFtR3>aXa2&SgQjZY^$jOdD2C(dbpLF4dPW>*_u3 zqffAD%fX#eW(>8ye|*StUCE$Rf3zF;ywY6ndl6>_~>!w)asHLO+4 z+mU6yH1zZBK6%u{W(P;BomxLTKBd_3;nv~jnY*XG@H^V!RY>Od*DZpRUz*#^&UWuz zFSnd5`@@i}JKp&hDBov4Z#dz{5!p^3EG zXQ$Z@zI3^;_0x=azY@Z%Ritl83O&-(p7 zfgAGvtiA4{+OW3da>}+_2P3wwujsyI`>fBuyG%}st!N&$vG=Lwn}55Vze(PD$qLKS zeU^`UX18+uvRkX({jOg6sJP3r1-;CcB-ObT9UZtS@~r)^1+NlnsBb@fJl`j6P1Kk@ z0~WS(tg_f{>b*r;{qwjDCuRF?ng#vwY0|F!bHm@p_o>kEP=y1N57xbO@POm|k9(WF zZMkRW;2FC-Iv?MCp<#(OziYege|(#}^Y;yBcIc;FNP1n>BJs>##jzzf796*IbmK_- z!{v?!lK>Pd^;xd-i>+*fZkme{66{ z^0F(|e|$KURAK0bfK@GwS#2JV4yk*>J>&P>28kD!dRhGzXgEFDWU)y`^4a^npFEh5 z*D~y>VTg3hux&%DdViMh&Z)Fb`guypfi72cbDkdDdpWqP)zlgFCf~fFns;!WgJXHu zFUNOv-l}(8TtDYlwJxis?KmL2lyJ4@Y^zR(T4+aHS?QP*+`g<{viQh&ckgDlqu*_K zZXCXF@rIWjZ!canHqp@TiLckHTb&!U3|l14{_{oHuz_|D-YdqP9Z<5pq_OeBwhf+* z>&D0Hthng7ew%h)qxw~Qemgl==3%;e zRe`iP$8%rDVU;!y>%6bdF-`U6cZ;_#nQ&`nrE>eO9e8Fr?@W~Pyu}@rcGU4I&aZ|i z#}#yV>d<%L>(tu@b;Nl4X4mJ0c!r(dQO@rA<#C6nHN0%*-&dQQSr|LHn?|_%HNrdS zgHxM_L;BS}Vc$Sue(X|i!mgdsw$9ZO9?hSZ5!^N={7&P7nv>R)DX!N(NV6$2x^uIb z_rumS^ig(8Y;IX%`*dHw8Ygdk-1F|~>hDXEoAwB7PvexVW__>9)t?>> ze%*b{7H#K{PnRR_RvG7ZZfd!uv#z%pnH}%_%ugZs^sgJ6Q#37lS$yT(HkC^h3(S76 z-zmkV=9^j`;e$6G$}lXumf+X2{juTiN8NroI3dEj=e?@$gwR^;1FU;2e)#%Liz^FO zu2iLOec#~lrvaMLL$VjNYd)-9r1h%3uO_vuX?1Rq-NZfZl6E~)oIbbct9i4Ay{h!? zUw9~gX6+X1%Wqv8ex`A3^~?>jK35CEo5p+UbSB^K><;pn;5=%5@vOFuyf&=gHZt#H zotNfSL;5KrG74AT4tV|cSk~x)E3H%8yh)m!*+VierB;gm&*o2~R}C2>_y2Uiw%OJR zn@;aJZTaAw$yv8ai3bN+TRCj%Kef8h@aFFFi{>1k{_JwO8=2D8`_3F_)T4Y=_c}9o zt7imVdLT8Kt^6K;YwG5!)2`M2xNB(7^^Uo5Z4Z7+8&$r$#fN?~$1M4Hb49&wk8?aq z0td`$_Ni5kH69NS*Bf;9{-(EYE`2(>e0z7B0DEIq%kh1;pBb>Z!y~u)QLQ(wUhnq z;E%N|7KC>5@09+>&1IKv#kGlW_n3EoWWDo~jxL!w_x^`#7bf4YKD_MV?a#7nRLY+} zYhRy?@z*OJu@Bqtw>|Yl+e;B9>hEz|UT$=7v2oM7O&Z|5a&P6JMX6IBc50F}xk;}R zch?%{n^~`Wm3(+kFT0&JnjUuY>~yEA>+nfm&KEs;vnM8aK+U*>wAnXpr?2%t5%kf* zJWG82hgr(kf3Wv&veA0LNy~{Bs;VXwta>wMck8Wz>vq~dif%FMaq=$1y*D*B+{ui# zKGwH!#NoN8Unjd-YR*=VseW7in-Jkl+czoaP*8bZahu6!L z9~h7&X?G=KfcmW7zjCd_f}|lwFVwkpa^1${)4R(xFiqY%+C19ol5OUZ!!~bRnoXX& zc-XkU<#g^#d}bf(IB$a8DXWPcU1I`6H@q6-XA%-Jpum~yNiG~Ke~=d-=^tvb?!A-A z?l}vr3eFXlyD)TYLgu9k$KQA_JCpq9*Avlm1D;fW>hRFD*Ydk_^S`9`9oz4S|FCvR z18(k2kxWlNC4b)g>28mX57uSux_x2d-TMV!x{iM{q1B|!uLpypdpuMo>${n`PHS1F z`pZAc_8tAiZthiY^C=zbn|l0l#zrc=YAahbbX-zh+2n;sPXwh~-}KMkHY)3reZ$PF zu?hOv+Ltr-B@RE@u}afKyZOgY`?c4d3_bWhIa0Ri?9pRojy<=Xe)!I&KkxNy`}>`+ zLuQZaIZS(8Ir7CAn+j_K+eg_=oX~0Z1mAtx_P1=-SPQ?GmBiQo&2sBuW4Sfm7F+GS zQ^O>0+<1%B@5KQ_N2ZETP}ob4O@q<7k<6Hh0vJd^vW z%JDN@l?f~F-M_yxXZ!6n5$+FCFL*u88+iLv@W(wVLxVdfSv>JP;@0PZUE_y`$~yIR zE7QBk!)&(lsWSKczTl^Wn@?Jq+hhEhS=arKE>8)HtX6mO9qqtz&)w2&!`7X$=~ zY2_1x&FeM0c(VPOBd2W|G*0wg?RRv7S!#x`H%Wi1d6Ueo%SL3ySKl0%n(%H+UcDI; zc5X49xTfqDYm2zI_HLc0S_UsPmkh1A?riS`&y#0Ynsc~uyzMb3_tke+Zhm?1jNRPF zxyNlDJ*~Cq?w$0H>Cd~2dvdg-=EKNI^UqYiQFNl-h{*|I&m52U42!n%eI=BepbD~R zf33WUjo+%VTZNK<`0@TB!rjWDx4LV~J`c~ZyYr#HS)@D zr%7Rt;%`sroq6B)vEr#sP@4zsjd3aQgR)L-z1Z`}t$Fe!;mzsOdCu2PrY;?HbdB64 zap#_sdN=bM85V1NvW7OSlNo&WXwdAY7yNrCj~wS@+Guj)wTU)o+MKstx!u?NsgtW| z?h5hsU)8C(M+>)r1&v(?oevDXX!cuJLH8lPdlz|mtiOCEbE(zs)Kk4a=jJSZQIL84 zK$4ejQhY?et&y%P7soo^>YZ9)z@W@J((nS+UH@E<)lK6w2DeFiRmnLvDZ@N6YW)JI z*x{QcagGVDpC84!UElO7Y~)BGG}JlWqw~`nzV=(!MY-%)zRlsq-XlF^XX3*AKju8! zlasH1eLgGF<>AF6V@HmR|D#)vZEq)sq&1kS`Zm68^N@I1Bi~#bOY0^ToZTlr?ctVx zX{69Ks42`9>Rh4ZiU+kk+oU9v{HLJssT=!}DvxEsb zo@YERI{h{*t5FBzEHCpn0TJC&y<8VR@^QYj)?um13j0%vJ#}&-&$?%(x@#}m)jCzs zx9s}8t17Nof736GpB!g2_nh=OU|HC+LDx>68tJoB8|o0fqVxTj_4XUGGGe_ir^S_j z_w4hX!q3;&Oby8J3z_w*y22+ZYq(d`w#xPuhLv-uQ`N;?^{`_dkIiGhh3uWn7XU-A zTi5NccMmj)iQnnCbldZmd(&z)O8KTd=<@7PVrTt_Z51M27g-+(z3S<*Uq8s<&o2=@ z8a^KzHm+IcSw(Ixp2w?OJ54vM(5Q8vK`D6yJy#r^H8xA7jL2>N`c?k-@843--qXj- zO}nn`7`fE#^QIWfQ-@Q0!uRbR+qQjVY@gb(ab>NOK3|o_UymN0JJPF1L8$%2%+5Ea zr`j*i_pQ+NPmemL=R#HI9)x+QH@Ic=T?Y;Dsc z`7fQ~Qg_LtVuBlP)7Hzr7@zztYul&$`DyKL<$Rl?jtfcIc*OVHk!{wU_D8wTYvSyZ z(Av`BV~s{VT39v@o93x{mN+0pUpTu*q}!O0N5Zau&gg&V*{gD&_yWL?5w+sb`U<^| zt*B%3yH<52>XgTlGId7wsOBDO+1#P?g$DNa3xmC4yF~cJl^Hziv#xKz_4)JNFV>8$ zQ!whN{oddIa9IENrH{nvt5dsT|( z?p-lXL8q5Cs-Jf~#qd_YV!Q5JRzT*f+&Yy~o}ISatN&VWX=LZlF-Ia)dY2R9uRD}< zdDWx+h;L!DACC=5x)|YG@L`a3n_^G*naS4ihqqVQW?b4it>qe*Z&StBze(zZHf5sH zCztrO6%Z*6V;IkHz9Yu9qgcW4xz*r4&rteOqKDtk2ORCbE%6z75_M`xaIT6kqs zvo<>psy40AO&RvOcv_9&@lzkS+!(f|uJg zU5gKod>hlsui=+6qb7Iv9euFb#AmIY)P~|I$Dbd*_2I>|-I=dC9QAwsJu~EGa&U|6 z*>>i+^?JL1$d;9Rw`1#&_sRnQoMz9n-@K2$`*y$E(m%)ho&Hua+4%MLoy*@hgl-iE zTf}{?CT;TN!EC2bTQ77e@r$34FL~pcml`?G7}c@f#~wq=7g&3&Exg`%XYq=4pNqVN z8=2uFl@Cs~8T#<+68lG;UbM}cQke4e=(c4~3TxeY+@{aVj1b!g_v3Sx&#PXkyn}y1UhGnx1ftIkaA(nfNtqb>l8g*Su*^ zb^V@BTQ&sx>|a;=&%Ct;^~G%|mrJ%r9K5x~z2f@cKhN48n>5*FW0-lx&CO5s-jsj) zw-rlT%a`{VZMo9!*{D^wmW^Mk{{7vuF2#?QnDtr^eW^}T?n*aFW z?Wi?rJ_`rz8MC;GW4lH7rrO0l*K7C5PHy-k$n56+U6Ve=zYU*zs9}XZ2PYq>aNyvj zx_dv)cihwRZL?i72G87myt9Y4q~V3_?YidgocryM9cMQDo^)ZFKGCA;>tl+&XO1tp zvE;~&N47`H9d3WPSGj?k6rLHpu#Jga=OyPs3Uc8zUX!U3KWToZa%zpQYO>bvaNn<>?&VmEg;J56+ls)%C{B$@SJ9 zoTqXv@95BZ*YPil9ratQ-O8!IW7?`N372FCtY-JTs%>$oljF)OBg(c9PCBw!qHpHy zK7PZy(Y6bR8=rT4xnc3xMT>7gX=g~hwaUvktYw4Fe`ZS;4ICEsLh=5AUCDs6NVl+A!yOGyC&lo*~!m%I%nTc-&=wv&#)LleK-jO^z-6 zdRNeV2=a~?^01AQ{fYYhj+rYO>`KVJm1#1&9L{0-IPAIC6>)=^xOAz&&OLQzpsA!u1C}4B|e+01i!1VGM!@dJax5i zv#dv-)bcUiUk?uHtle@q^75y1ZsV%VT3T*u_Q*EZ{hoQp_xBMLMLDr`8qugHyRx{v(LS1 z`5x-sGwVFK6f{FQ+eA9`R{ZyC)2?nFy6a=@T*vi2za4BF*S-9xw3+=rSls-$WX$7k z^;QIyc;tL)Hfw;#ni{PJ)jRy~?WX%@kAAxJ#-{uBE(d`@iKnv?Z)`N%01T0N^A7U$OVX8EPP_Lu4Ws{5(P`LY*=n3*H|iYoSc zGyL1f!JT457g*Fv@8sX@(z2U>M6`*!b$_0R`=s;rM$VnN#Z_W-n z;lDP^+~T8&Q zi3%&BOpzzJqXCDZ5yy$kJ@SO*s7D>jy5tFZOu!P9cFhx<`8kXhJ<+>Io}fi}&phD* z>d=6CzdS+4&xTYZ$%h6EMD-}vkCM^kM>%Gr0t?U^&G@;A5-Xt!T~Lj!P=no2i$0iu zfvCgjsK+Q&EAxacsKEoM#S~1yG;zK^+e2Ld_2gt21IopdV#eeN3Y4KYDo}|^RG}Kx zs6`FxP>c65k$%<$<_QU;m1FY+@n=WIg_K9xBFduycZuo6v>#QNjcP1FEt>Ij4Lv%e zB${@kaVhOX<#OteDtwGO{EGS&)R)uzB`X<6RACeva39K7F^;Ivq0#+9Mwk{CsZ7zeW=BE;_^iHv#zW+iS?lJIOBzqWcE{(;VzV8 zBC1i3I(&x){ECtjtfw3KPST$!ImPx+e~H%vO0Te=b!Yom^Mt-=z_}>D&iJ4@jebBQ zia)0@=&1)L+@&AU`##H2hdE+8ll{LZ^?R5ntVJCrqxTc)gIa9hNj-z|^hOPaq7I|bh+EM6JMBj`rlA%eqXEC75pDTdl2%}Sm|&JKXi$$@l$+-Z z7f^+d#pPIlIyB?wELw|vp#$pC2W6J|f(i||7QL3FEl_&y?ntB)wl%{FcA%yhDLlWrW@u9 z&V%URM)^W3RA67!p$ZKcjrzvi*Lp@$W*#g#&3KW0hrbI_nV*}KpJ0_qf8ZZ#OBk6Bcq6XEt54D(# zdeoyligutka)P@=g^sAhZm3?EFDystBJ!gg4d{(VG@|op>baQx8Kp6dD|+K{)Z#AG zV+u-E^EyHqzC#6?DanV9C|$#L(TFP4tfl`&*E3G2#doOOOn!gzZ6P1Zx3YdzU>YW1 zi8y~7{S-ib&>i)tM1z+76s0@KC%TK*(HPo`bJ2)eRP15DLU|nH6-d1g@VZ1LKEMPl zK*>Sg55}?`Y=TM-R|gL+Ir18NhgUl8?5VmqiiPPr6b!(rll9s3{3Fd7pu5!IJy zA1W`?p7Ct=HvJ=dhyFpyUFwC}boQGG^v`|jkH$>ahq{N<9}Rc_6CTk|;`}FUKZN5$o5eBk@q#!By z!%>0J=#8QUCSK;VZ?5(COmo0h1zknTXa12Mm=6YO(^^O0@4%N4^gIKe?j96`bC@{#(E-I zFFK+&ob97zHuXdeYS3Fve@D?ibVtP^+KXyji+W5(@5Q{nQHx(u9!>if;u2m@s9ixj zP=`5UdNs=zQ6E&Gd=34HDhwB0OMjvk51?#4?ODwBHnD%9WHavvs74(opdNK-Km(Sb z5yeY8NVl-xp$z3HM+GX-8|yZPaHe>%%4}*V1lOqYAaCMjdLk$>$3bp7XrvIQnQH{G$j}Op*IcUTZl&Z-mPCF` zKxqv9bd2_*{5ab|11=ZS$?Uh{a(p1BPq6>4ra!R~YEX^|DePycI!*tg^lX9PyoPq5 zH>z|6!dx+ZfzJu_zQX4jYOeD>yq4u@Y#(Je+22r(;i$l9G~hmz+~RdAE=Rq%91W<# z5>%trI@*1Qen!<@>W}ht#tAiOwVr-J8A|Wbzoj8CGfCe;+WxbE+A5@_a>QIA{$J7U9Pv}o^eiq}kk@}!B8n6i(u>;DU z@_B^b7>Zhq7Uw@>zZd6Y4oY7zj+WG0u_zSwp$xBJ0vb_Ywoq`~ z!E&2Ip#e(K9hLTlf(8wag+dN$suc=~oz%mLdZ0I|QHdJVRxcFvs6zu9(1@Dag@Sw+ z%j;4fG@=^i4GM)sG2MuIqpWeEV78n2SP7Nb1U1+V^%#hfCWXRWl;K)bH>Le3ZB{6} z6X(n6uRYWQr=t;h%Zf@5lI| z9=o9deb9)3DD6+XFaeWM>s2UZqqjHxwx4~Nv51yz`g z#v|lAPCJjX9+YAelwk*yV_#IDA9`abDse7qaXIR63#yJWKBC8YouT9u?N26+3RI`i zPV_!aIaHpZ9;m@9XvBA@(~}tp$;FT_kH%mGpr9CF##Kh>Bsa3N}f<2 z<)}p+rl2B=cA*xn&XVsb{elYYfJ*F(8uUXwhN9fSel9M@L~;HL+Kb-VypQO}kCjl5 zE+~D;euduXjYbSd#XI(EF^wgt`arwSQGX0Xc`o%uBR)pWXV#O-dQpk;FYH&MU-|q% zrCE`XgKCQ+L3*C`TNMfJs6ij(x^+Uhn8q!rFIyyBL8)Dl@D+{N-~!9-i-f*tz;WnZ zu1Hub>QE%4psaF{kc~RDx=8;y7749TR<%g*!-N_|LL%y9MZ#lL)FR&{){jllyEf}b zX}uz07fR|E33}8vV*8irhbBdWx2S88Fc%d~i-dh*dSa2_c!hHFiiBvCMHLAKRHNBd zTvQ~;QMQWqp|^(ip**HYC=r*hE)rzds0VgK`I;g@g}SvxLM-Zkr=Hg-zm+Xs&CMLD7i_!QG;eT>94!g z2My^(LMSTk(Qa`*E=O5bk&uk?9LDt)^WTskYkm%VSx}X6) zQEntZYEgqmOhm=UBH;lh6w$x8DOb#Xg5D)X!U0r$V!ToJnSQxL{;!N5>c5i@jgn$P zi?TAsfthIgW;Hf(Wu8*G~zx~ zS1uOxIL4`1=tg}M&c(u4(()R`g3mqbTeDcupdM3DE-MxuqY=4?4EtfRAVYoaV!;o+ z>rgLI7uJuGy2U~cYOw^B^@;`O4A#?t{HSPDENnp?K0s;XVxa)l==^~4O{f%ms2@5=a~s#~#e0lm9ZKT*$Op~Dlli{ntzyI5F@N-xF()tH7-Z~6^Y=$J*j zP>y=vVnKzf5!4%HevAituVg=ZO22AYA9~|1G~xwRt}YggC|yIp7?_WJQ5nyEDSC)} zsKs=YCXgRx$i;pnT5N&_?2EF)#X_h!A9rEG5ykc1BYX0ND+P%JdS1ni3vNr@1M-Z&Sv zxE76g02L-B!UfdeV>Dm^%1uiI+t<_sT~Lo5P*$cy@Ie)Zq7I`_ZdD?*%3(fwqaLTD z0i#fB&Gt}MwnTU!E=Q|3)B_z+VP7J2LpA!K76ZlQ7$wdxM|o6ADUUiVKm(fn$^7yq zLIc#IC+ct*8Y+|sIx$_XM0h8rok|4RTe_usiJ(MP%@Uym6*AiSj{4Q2{^*TLRHF(L zYL^IG#N~BLgcLE2*<#wIM3BB`z1RVjb*VSX>Xit|s70f=9Hk%FZhh*BGE|@vm8fe_ zB1EI2A?-vXJ`m?OrhU2eZxhO)%9U|MW!Dm6pP24mBBZ0vvqWfOWIH~z8>NFwgm9D% zDG_#|3U#O)O246DSc%~Lk@k(C-_d&{>sG`r@v4YK)v&*cTkDojv7>o>G37P za@03xYvV?wl#eRSWoG$vB`k^9+`k@NbQH$BA|6h!~51f=&b^pK2 zzkPOxY{t4#s;G~Oii&nrR8*`3yDUpWl1Z{jNJ8QyAqh#)jEWHz%^3b#(To-q6?Lj; zQBg-lMa4Q5BvesHMWvS7X+@=qeN9{Z{`gnt_x_ywJhQVi&!*+|TFyQ9p8N0IbI(2Z z-22=Co(497iL;dd?`K-Wz#MQ6u>L#B17?5ExBx4EKt6!}e~=&80A|jSKY6yb8d!eb z+14>&<@sk@-g)}vkjTU&uOU{&!iI@>w|?0fOq)@fh~=wBfIWoKIj!G&jA z6=3b<&;hfrApL*9b7x!YfSE<43m-Y#Y6xFSeSe}J;4EMkI2V`$E&vvQH}s4ub>=Y;Y#`g?8`$3%mIh{ zX7u@2pKVP5E5P-@CU7UPc+J_?eqaN50+^pT+nPCJMqd>;ADF%FY-=sBx#DbVFVMg7 zZ0oq-P1GNo(U)6!wlxZ@0=EG(H&Z{b3_K330WSdSx14RwiBtY7={K;iKzo5caJ}Mz zJAifI5nuy&99X%PdJ>d(8}z{3smNGXS~x(xz~#Uua3wIe zlYGE3a67O9+y$%w_X8WiBS8PdXIp20IbddxegWqKOTZkk0$c&C0gJ!}a4WFyBgiYz z2UdZ3U>#WbDCMMS2QUk)Rp28q^Eb#L(BE~obr6^Z9tGxrCxB((%$cNrf_i~f;2L1# zlkgLm-+i`KQ~IYEH(&+mUqm`^A<+Lc?F1HpYk^f@8JPbJ`~p^h$ANu&nO8&b?JJBo zu(A(&VDW3nGq4Ff0xWzTxxW}3xKeOG>A>7K&$bQ&tH4vhVvYHkp`YKOeqi=t_yNrP z19JB$=z(*9P2dV(;k%3ruo${0#a_s0Ua8mVvu~^?zcVA49v3!+*hlMZSU6-%^h7-@}*3lJ5+11FZcCz5%l> z+7Hb4ooi)hQQnMmt&PA;;#}*X;J~?76Ii?GTx;#0Q_m&mT1SAT$DV7=c^u_G;an>Z z%+ER3Dgzr&JJ-4ZEI$2QYu@9b2Tlk+<6LVyu<*=tt<%DRvu0EOv(B~V0?WV^z&dcP z;-7u4RRLCjhk=E8v;)`#4nG0DKZo`L^S~Ui23!ZMJoj8{H!$}X=UOKOZ$H;s@I=~q zH|+!FUPb;VQO|v}3s`$C?GnEBT&o7GyqSEF9Rzo$N69k?HuIe=UM^T7Gfp#Foj3s^dYoB?wWBM)%mY^g z%fK?Q0XzcCeUJK{2@V_wmXA;lumaoxtO9ofo4_ML|NHP8So{I}eirG#IlvllKCliP z1?GQ9yMd)2!Czn*cnVknUH}$=ffe97U;|hN`bVi>@xW8S@=qC` zdDQna=z)Ddr@g?;KQa%1dEoGKXcurkunC+1=6-RmRRWfQ`xOs70nGl>xmM=6j0eyM zHvgG%0`~p#Tx$(53tSH@1GfQdz@19}7s>(VfG2>J#<|wQzaahBw$g0As?^+ ztOB#YWt@RUpr0k*N%{-S{5$dt%mI%8YrrP30Zcp(KKu@PU0D{O{=(un61* ztO5@L`%aM`SO?B}KKcH@yav{Qd0?pte}R4fd9Jlj@&C_)+n%?INw?etN}MFK6$>i9hklNeCsH%1Uvz(WX`uTFQT1~ zKi}FRIQu-`B>SMWa4fqwCPs|qZ?=6vg<;@6&U&0R>l-%Nji zh4trKWnd9l0hWMOUgw<05uMqzL(DIH9`L7T1j-~HZ=)h27QF4x~&=2-07K{$0_ z96rn@z6ebXny|YXXv`>8k@CE=gbJhQ#`FhCD^`Tuz=j{OKo5YT)l8%=nDL&CQ8RH^sKZ zWB0?rhYuZaW1WRA|J{UFFgkx+?T=k*9auycZA>SisY0_6JZN+FwxB)B(y=StnD+4| zFnxtK_dR$9j2@F*>@r4lj6p#J+ao%Xju&TWqz?>b79Bz)AEwmr3?&xR2%mC~QC{== z3GXL_>Ca^w;+JlY-DB+>Q#&Q!7oe&CAfaD=(HO>VCt3L=YqR3W{|^)1j7z3%SNymd z&@C-+LHt}n{^E&*_kLG4{LG7)n-j4ILUvjkO3-C~o$&4r+HgH>PyKU}^Bwv3fER-FVanJKUIhO*VRiJQ=oGc{DDnQug#BK;@Dt$K4*WED zF2LuIo=8#;_%B^K%Ql33{+Q$QrSMtvd>(Y!e@}Q?-jS(g8La*AB`pUz9Z2%!2O*uYrGyFzw$QTdMWw2DA!toj5d>j=gs9 z0J3{%D6xbgFkO3`Jf)$er#V8imYP1kUE0{CUr?E(kGu5Cq|4sul5Nap_ana-C#4z< zp9k)POLs{A7J}!%S&k%sw;_HOKS6wv_@}w}TNE#yvWEBy@h7I&b@5%M)VfxnrD+?( zJ>)O{S<<@~`Rf`(TmMEF!(|bi9!bP2BCsuF zv;03=-)&h)nJWJ{`5TW-dT&6d+SqjE7f(JI!4nCq`ni?-g~uoLt54D`uA6TiN=SBh zkyazkcWvv|@83YbQ(IfV+qkOl$JM6UNweXY*W8i%ilSs5*1W& z*P4wM&S31!M8kO)JBji1Eszi~8br7`QK#JEQ>jQAr=h7q zv&hx0d6Rvk8zJl4FhY=dDsmIfg)TdLWT+6IGmY(|v6>)%c}~*P_S@z{PyT%DU?gwY z7WC+cVEiew_OzteaBYsT-Se@H(Pds1RioLEG$%c&pxhK2U71BZ}5(yjl{m!F&T zYL1>Y7I~B8BXG;o_ZpOrlU%HUHvbn%@4JMfsC!X5{^%%4Uy_c`ohE)bY6XXW zrO_Xlx?M3_T>aR3F|za$xBkJK_I^8a!{j<8x+-)<=ytpQ<~Jm+-V)m!k6q!0$7~;s z%Q5KumnOY^Mkia9{Ty;B;ijX;nQ%{<$RJD5UggSkI)hCFLuhO09MW?yOM1B1Y@W3D zGSVwDdYL8CE6brPE==lIa!qc{-dbhFn5?WJy-NC($gJkuCgeJ3R(uiMv9i$kYX1&s z`(BasJ_Im+phGsqHS=yAoaD%OT66Otv=wO81}IiYIGNgg$BC~I&(PZ%dkVY`KJMsN zQ={=;>n}fb+vn$!Ue2XyOKxc@XAWrv(*B&V>YEQ<0)Moly;AjQPA(_DLOkxzY2-Vr zY1CswFsE3)h#9B#$<;V~V{y7;4F%bk0U-8~LPHAxvA%jtfnO@pSBNtcMX?NoEVE?7h&J zu1b3Hw`d=RF=EVEhHSsJqil_91KRr4taXkyK2LH+BXgu(AkCj>+bW%Fumo)>EAD8= zin}Duf(jekhL*-WhY*x0<78;}^{jQdcwa1H&~adVOd6rvfkE5mQ|=DREv;b8oqq3Z z+t^TLM*MMJxA31Zb+c+ z$M7#8(adUo+X?<4@P%8F-rHO|BG%o4Z5xNC`pnRqKT+?xx08#~vfz877n^@?8+A1c ztZCG1GTY0`*r$}ct1=0O`g4T*wOfhU1cSkbxd%l`6 zSjxl537XNjp0o;S*AkY%U4 zV~%c)FO}a157Ep6OFJAsD)$uh4d_4b%4NLsws!m#jbgmb22i_(aT=8GN_sDLbgz?s zQ~W&Q>%>o3d^VORLHcQw`0VPWcPVp>b_9F#*e79$ZO$3=d&AAS#!7O!jy$Eills+O zm#3}Y(P(W4^N6kSyP(b7lhm&zPo=$Wl2ZLU0$uKZq4S|T4P6nsPr33;24Y)-0c0bi z_RYeP;@^u6M&Hqu*lK95Www6G64R<@Ywdh!N1?6U=j=%9zx74F@)h)DB;dl5^vxiF zkHYMs_2kPIlit;iZ=2*}@AREW$FfNE$oojzV!KR<(X>xn>Xcc2P0}k6HrZSzl;2}*C)L{O`AV2Cua|zr0BGMpHTjF*e`_D_S0$)_{>mV z+p_nYj`3P#wuP@n|4qrj&!54Xab+$bK1=*9BufUy!OP%(P8+q}nY=7F|M^%TFH6($ zk8Aa5%Z~b1B42eq`XQ8o|D(>+I;(nX3xInr0mIC@rjP%TZGzZPb%Z-8S>T1 zcME<&@~z877fWe#0%wcFa&o*UNH41FEy&)qd@sZwFMFYTkz1UOe>iGIMQf`MhbcF|E$M0L z@cBCiUIcHS3CY?;#ovS?mWNdQxByKZnims>e{DTK3==Z%49C`QkL^6-^TgA1lf8xD z1@K>h!>3LgMa$W@x-1l#dsgpS^5x!@)UVG|uYZrmO){{J_#*MkT|C;zTz%G`-K5n> z3;e&*+1c1fC-vF_@*IJt^w1;uN3-#pX7sXFdG%BA&2rLvZ8#6RbQEhqd{so=)#M!| zZ}B}z??++Yh&jAdL)xXWm!(%l4D@&!d!&a}%+r`vsVl!d95dg>OmcOY_%iX&2<=d_ z*C+h}T1zl!d&G*3={KXMxpeOu%JrWJ-`~%^6k9P`Pn2iGzd0CDGA7_Z=`6Op*H{DN zkGs;xEmLd@rg*_d(<`T%!SiYJQOYQOCh4srOq)0BJk0iv_jN2yi_>>c zu4rz~%zP5|5&5ok`OGf3BM>p^Tk$^&O?FSxyN0lYT$?||j}u?+ikEFvAihcbX9-8l zk&jPpy<6|Llc(}o=l?ODn=CRz17EZpgtV(?EamuBTaJ?7|6I~j{j_mSs25KWpC`U^ z-kJXMnK#5spDpBX7`zOAGF)$aY!_w9AOn@=zgo&n!L*v6Z& z>o|)ocIiZkmD&7TRWJEo3r>4vX>LwnKWs>9TOgBxvPr8#=YQGlt4%g~#wHg#7a8pDMhVmx(OFV_LzmoLsfCtfK=HpjKjrV2gcr8kK1UAA-%B_7p>AlGH>9rw`*An0N zjie{NiyB`W#&07&*A+hxnq9<~h`-?I^V-egO<$8S=)N%VJSlGO-Gp!hxhWHX}j@WMjvW3AAc>vYs)dxi{$$Vw4|FZXYvJil5C$(tCpw5=fu;Pvp@LXX*K_{&{m=SM|crES8}mm zN6bICdc1cnbaQ_rW%~b=^zupdQG3nsu1Ls?(X{629_WgVr1v0n(RG(*#D5<(Au%4` z7+0&hERaQMU;US1{Tu2B7_Znfz9!(61WYnK7n(dY-*z-xkaP4JYtn{ceVX(F=}ZN)ofFSMmcRj4{xE?W_`AVra}3F45s|mUrOzk5&~WK{TG&hf3Uw%67Jb|Kv#keQMdWL8@vq8)n)Q! z-Tr#qooBp(tf5YatnVoQ)%sK3Ltz~{lUhG`!0v{K*@x^po{fFqGm&dAWwwuGBLiOO zzA(x%)egJ}UhBY1;Pno?4Bi08HErcr!21R!@hZ3v zE?Z5qPy^3`OIMCb&tY39SlveWU+E3f^V6hDr}jOI{*iteK^*(nhk7_%HO8?UjJc$% zzgg&O(6b$I{ReM!;Cb-A!O8RjxZi;n!E@k)kj>(+1fB<%Y#V~IEW@Gy8^+SN-rb|xdb2Jt@e+82vQP4FBzs#NvaJrl*tIaDNG z@=tthg4wQkpZGfQopz_<7ZBge3X{oZ4pHbv`CAWd0opGR zCaHU`qw@z0j<#Jeo?hD(v&{MP4pNSPQOesAT~7D?ztQyV6nuc@1UCo7CoQm5$_U4G z7I+;Tmx;~4x!_Ik54t*RJ)N}CA81d0@n!;*>N_j6NOu4U7xr#riwh=$(;$w@0u{%zD?$1-E=b?XPNPn96 zBJlu~V>X4#nTaE*LcHb;@pg`=_&LPay5cj$FC@M}{0)xY_>?Cu_qddIJ8_I@;9E7L z@cKz#u;b}^Xsgiv((=o`r!d$Gq2symLH$;KI-ZkwR8D#&gFFh2g336 ztL<1`d_D?oc6Q1;H^oNj+&|`H-;7|hDw|3EVKzV6C#F15>(dCa8cTA~!iXS4Ljy6$r$RBYU#@?DDcT;Y8PRipdzT+!1!}j!; z+UZ;iD5PXQ?6^<{#RqLRpmZA<*jz*PWo(gU8Oz1?u=tE zwEnzQcyG&ek#-l{Sg=DZ>F{IFl%W}Q{F|ysN-Sha8d z^N^S4q`Y5;yzTY1#Xm15GUcXh85gBl!y=6Ek$^KJhv;f>k)6skjuq;vXH(v(ur6e? z^NeVmyI40w?ag8M9g&qeoq2|GYcEIzdvM?O;97Gt&sPWAx)kQK=HB7f<9Vdzr%4+p ztujs8D$<&hY4=d3=?m3YA}#mAl%AT`e7c`BJBL)-PL&yvCLOnrw7wUmyo;QT+9Tgf z@YimO8UuDF(s5_VpLt2j?sN$EUclTAaPfT>cpiLuA6U-rPjt&UcWu!*J$lUaxb#Pn za&rq)9-j=k`NO^yCBhNicli1S9l{Cs0Ycw_3y3i9EW@Lhr@UW4&)yJaVeXIXHtDvb zsS7Ofj|4$H2jbgN@)TatUMICe$WLlEm41V!5|Jhz%$$#0la?Vohrik2P4JV185<0B ztaYvjaBoCQj?G=wH>!NO_B!}hl5Gr$?kn(LZc)nn0pY2-_0!Dj$+OX`I?hJbmL25F zEOt6tie0VDZAMA zsS7bga$_m;1=Ba_p-haAY-D@;)VY%M3hA#Q9Heu|A1EruO8qQB<1bCwovGR2W$*&H z`fPc$w#c4mn>c@`mRiQzrpT<&vxkm z%VlpUMyCIvX|70l{|Tw~cbkzkEsgToeF#D=jM^J6AbqcBZ%BpTakXtMUw2E|YsHfE zn7!*O^@W$w*H-Go}Mhg7nNRcfMYt%)%Yv{wiaBed(SZ#FvP#5r(xB(mhw9dp0|vY5PcP z(BROFW4cWR2?TXS~}@pa5 zwyxq7YeiRWrdKp~M_-EGctgt5 z=csNBIJSL!@RP64LB^&<=2 zUg)xKN_qc4m^m=jw)1c9GVPqMK1rUwH>bSgE|2NH*w38mQ{CRnSi?xahVa;s3c)3( zn;VPme_QLs!z^^U^(pUxY3A?PP&ppYXachsOfmjYDLBkcVmj?SxG34!O1ZTMQeHn{ z;XA3f?4o&(=Y8f(n*&<>DsNWSIiHyAX%sNXW{+Z66;Cuwz|7FzUSjzx)6 zx$*SP;XU%%WZ6o-2Kk;%*z_6|-8STnviO-Dw43zI=Jp=V#t%c%&KA(l3YjDF>OkA7 zANt+25_#l96t3S-D}xUcp3UC{@GAHc!a<$cw*-D>@oe_X`EN_g?yIwI!86>z+Q?dUHvdQ%B7UpESRm^1f_oIr?s=N*vVSj0(iY`VU-FVM1ZrrYfKo?v~9+UwgN351A42ip9Obk++D?EjWtr6n`-M3Xp0|A zdCxIgoudTjW!hD!1*`sFg<$VSun+*B_51e!I_=RT2Y-(zPlqw_k=rkEhX(6Xe&&P`OX1yt`4rQRBdz zUKH=QMYl_@vpgoFg+lErP;T`LDeqRsz{9>UPtoAL0z5)Hk%FEw!@Fw_BfUi_T|9%o*1D@%?*Ms{V z_%`q?c&N8`g6F^ij_{9re*l0it?Fn=eZZ9>a& z5Mw+OkB*DirpW(xs4HgLT|d#!BECTUQysne&eg{(@nzyeJ0%BR0mr0t{%`Oq_&dN& zR#?bz?Ao4qERCMAMlDVIq_2lIcK};zlGcxPT-aBA6=-VEWC#ndg4e+Z1H1;_09XA= zuY)%`=o{dD2Pe~;;2H2o6Rm#svG`}f=MjW`b{3$zW)WW?evQRvO~=e5u1?&?;=x?* zvY*F>>R$W<67+5_!lJa+*)`-Z9S+aheCL-TUUO`#$|mhbtIx+u3Kn7TIsECjNwfcu z^6qfyd3_V03zAyYaP1sAK)mXxLsx;0C13ry4U&;GhgssyDbgCGsXU**3*edW!kZaJ z8}7>wkq4c<)V{;_IaKk#m(u4^#@{S>4qWE6%FKb6I`BMr4V-Cb{VITGj-3 zCrW>?YAb(9`AJU_R=djJW$@P<{V+C^?m=;bheaa%z-b<7`&91tQaYsVy6!&D5QYOD6R@vOc(6 zoD}R6xGfmgv(;2QU>;5G0~gjpRq*>c~epbp%=fq3zt z3SIta%9B|LZ`}C{9MS|(Id#&@q|Y&#mR)>{Y!?g$K4%D&_+04DsJ@@#H*j=L$m|38 z_P4)whec)1S;oBiS-20#FW0(ogV{rG3(9nJWjS=!pHJ>LR)W_8Ty^UAd+Xq<2v3!X z8z)_%s*k@N(B_V%I=+n$OrMw*0ohcG-S@B1HK8k!$M_M<1GA{0QYW-_o`kOWk8WO3 zcW{5l)=s-lI(6-IV>J6x$|jF=rF6?Y@XRk#9;~CTthRJZWZ|iA2wVZ27eEwv{ejix!oH3L*_JO#b~&nbIL!uW5t0N0n^*x?5Y_RF&_ zLyn+bNj_+8zsdDs+izmF1iL4vM@OM;Li>RZT1k;jOm>JS|0?g7PWNiAt^==uKZY>l zX7?2&-(}((#B1(by_hO@IJMH}6IUhO{};|};B(L}?i;de3RYOn=cCXR8g33i6XCkwOyVbH?P*J+~2ypE1H}7J?tF#D+$x~fVYf}yIXf<_uQO- zZXbCn{XY?3z7jUumCEd0N&coNK(Vb?uUe0pw?qsfjkAHCEq4D#)drybeicumHi(n@3E{iZ9k!NTXgKu(eISC1KM2Eod;O|x@;|E z37<$r=iFD#u)cF+?D}>}W&UT%?!_;pjtk&L@Gnfe?&aeZV^!BgLAsS+zbl?So${VH zt$gI-gHid}vx*<<$zS{304f&PB8b;G%$9gprm%TcItEJ9Q8`n@+!X(w~E{mxJkUiHYe$$|7`mHds1 z`gL3_{>r~@esLfC2xULRG)}M(}bo7&04~;7dFQk9}eRRPLWa0wzlL%bQh4nN{a$ri-W1~RiCTgZ=gnH^;S0?W}@lz*WES8n_RB5n+{62hW0ELO5)<;!hHvkBINP4xUED&mz7Y z5uYW#+7&OIFiw1(c=;WIG01Xm7ua8VRnoT3rq|a(n|WHleV-eS7Y2aQ;s6dt$?1;@ zv_)u94efHV9*uUCuUTEeqv=u7kEjjMKImvCZ4vHJw9mQC_-tPbSfXnS?PKm>-5I`~ zv46TNr#;6s4`mqMZg(nd4*1lQgSH7RRg2$lK1#j0>k8K2RnX+0(eIU@p}&*u(rJ17 z4$M;f-nOyzRU4 z=JPlXt^a(t_8QOZ?8R&?J2QWvi&r-OHzCX93H7!QUh2TJ;AQYo|K`9e;6t=We9nVc z!2$4j<~8!ua!;NfaFfh9<>YD|1eq7~+Z|Ts`GoE{OiGpG-%e;s(9m_`-yZNX__M){ zf4DAgckDBMA0fR)df4{k;B|1dRlGX|-T?nFVd*u_jO|S(J~nM1r^!y7Px`Et)IGo7 z-nFBy&iN*_^ibD+-|SPLe0lQaUfA#DoUP&RS^NiTdIbH!Ac|(K%6?J5S0Eh7LB>9r z)Mg#cDp}b9O#_+*lQiu&7?i$`bpOTu;eBCO&&|%(R$q^iUM799$$J*Z(1v92xzOhV zfj65^Yh&VO>RRCVib&e`3L4AV#Aja8?|q4|>2|l5u{TJWFcL}Y&nR?t=%_O651)Gk zedZM2Cw?_F*_TeG;hLVYMa(K6YwCy!B+jSpY{Wu71=@tEfpO8IGZ25*bFC&EgIH9sg-_})@uZOhT>+d2v zFU;VCDdhU?nUDt1K+ep_n!7JeNjNYAhicSkro%nEHGYh-{{!~XddHzd$ z=6Xjbxyph2;CI5aXt^%vCT)*c@yY0~OxzAkbu2APqd0rSZK-`nzlXZYH};3Wg%I5P z)#t~$s~X-VAJbD+C?U?eq3gM&{=JDR)e9f%Vmi&lA7Xl^rq9bFq>*Jk;&`4{oz|daNl! z?Vqy>xuMKoOrK2=gR*}DP3;v`TCZo((><)J~OiPl4ov9Lj@^)ETvblpi z*+RefW5Sv%cK43C$n%l!2=a`j`Fc~CH4cZN&)hmyUR8I4_#E;75tM_kKQIMi+kVW!3ttFc0+)R&J}n2Yf(Q0(C+~whnpwU+?wJZ^ zJIT)3M*ht0*eryj=MsLRo{@9%c9^^c^1hV3$eTNx!)qZOc!IPFX}5m7byvM7LsNJxM52NHM+&QVECcul}anh8&3cLiK zB0QVFwcus&=Mu(7=C?Wcos=8gdM*0xq}ND)Hes!+yTF^^fj?3*Gp_rI;(3j<++FxH z>030<3h`9bx`y?qw)EXa8LQn`li%z}%t%?Hw!ZqLH%Z^;co!TLE#0JN?u-S@YPESB zy6Qds-V+J?{H*}5gG&||5BFV0hhJb0@#~?<-W$ree6bvRk8iQplM!pv7b<%fbeT2S zR)l3s>;?D1uV;Qm_nEVR4@8{>@Er*PC})1>G}i(s-7yn|UV1~ny+PAeuF0?7>EnJy zga8M+qw~lmXlp@>#JYZabCNQr?jwA5MpGls5#_p!){-?=`)qPl5)#$?e|_eZMnJF&WLpb1%qJph?$mT)3bXixA{Q7 z-A6Y$o!r+4-%Vs=Z;vQIa_&>cY4x|{_UI-%m=K&P8$;B1>Ec=UGUwjb-*s02?xXrT ze2I8L+TKIk4{E+nkhetMClmJhTLoSPmya-%Ra}x*pE@NywpH~#h>zaUbgmsipQ8Ok zl1bHhnEYk(Kb^48-!bqSILlwVPMJxz;UtsR%nQ(DH#pl6xw}TTi{xc^4f=riCv@c1 ztG3dKCjX=tNxx`@$)gq%ZgATr8%!t@NRt7zs{n0jW51mbO2-tz%iy1IWk>WgFH4|j z@VRXoal_ip$Agra+tlyzJd#~4#S}(gu~={l#_cVwB~54xo7;0lTD-lFpZO}< zMp~z>hag(VwP}{l&O+0KW<6o)^$m%!&GAdO*iTC_5zVI{9<6|`xW(BWjCp$>nboHQ z9RlP-yAj&LR%~d(p?sMCKpe-263uRC>d;IlLo=Z{0!{YqZe3MhkE>kp%Lvm}tv;NU z4JBk3oguAC+MJlu3aGi@38vV2$fQ%)MzHgcIBd4Hy9izdUygAU&BG$9sK?0T%Yzq419#skF<*{!?P1F8 zdmnN+I9<8<*ola-;r9A1QTs6QPv!bW=5M9n`z&)Ss=Z5wiqY>mV9_IR5j#0|*Lof0 zWU_2MsDwpqRUC#n91h~qd3tj^M9OEBVK65Dk%cwOHjUaunn*7;M z_j?J(UGvSH1*lCXUi|swGZ6~>qubS%&-U9rJL|Thy8p*u+AvoPST5A`4qpG_zLmzyHStbofD6b z5MLwyD&vXvE^Ri)Hnch6){HaI`d{g{H*;*>>#RYmfpoYWPQlz?Nx5?{^s3OtrFS*+}`dulC!!_521UYYLkH)DY*K?v?~J>h~V#3j5p| zPn+%SWaU3de3|&;gtb?0->1IA7O+m%tx2jVyAPJ`ukpoKT}3 zm+Karp4~_O$~T=&tND2tyarw+96dkf8|zt`%=af*)P?in-*wo8FgSLt6Gq9_T+-{L z>w9nKyTj9G0%kwGq6O2|e)V+%+Ct6w1%$5xFN0sAH2&6tSHbUvInixp{}!KSAae9# zN!LiQN~xYBlWXYGaNQfO>W zayvM*jTfiKVTkk5s~-!Y&3=dVcc7;qfxn|XBl1T=aB9EUy4TeY^q*|+?UY;oLBDs@ zwV}gydY3$Off-<%kD0K-9DOq4Mxn2hxA;TWTPNckc|YHgcU(^Gj=XmSjz8TzcDBl_ zHz1$&_B|>4-a>974Kts+9y$P>Bu`hS=-f*^S0&4rzJPq`TD5`QQcc_c_{4`lf8^ zn>@4mG^eLWd@ZpoLW?^6xRo;d{>hEK#%YJz1HQ)9G3o2(kf^Km)tmSC4ZIt<1WATfrs3z57ITeN$>k*|0BHrQeb-a*v;JcyEoJ{ zokMPRv-;ilX88QC{oxyY5&h0h^Sgr1Pmm*jo&2AssA!qb#Xi#8ZIkWw34^?BjwcIlTi_&Ag9!IA;*HdQx zWPkV#Rfn#|pla*+aa-?qL!0?`H$P_6o_*jx_)7`HGLx6Jj&;V{W26^IZ_j5KcwgWj zTu7cXq*qA)*fjPBwlEJY^)SPH1q;Z(;4QTM6npk*`B98t9sFKEr}ZLPUQ6EEAF$V^ zt-BEaN@)6U2cZ330gkcbVsY29sRc$l;|S$en(qF9Y!ow3+;7%|N2u++^BJ|_Kc}|^ z)Xv#&g@^yu?|rp*eK((!WG3>^n%%0qPukT`77Aber(FL+zgHm4u(*2%ix6gKh8WEb zXiCsr0Zll*oxT|LcRw_BXm&9M?!5NWaQTgeZ!Tz}OTV8~d4F~L-Xd6FJ=1c=#-Qe0s zxZ88}Z-h1%_q_Gf$P#u%NF9iz-z!n609*iQ22aUI@c|xF=|Sjfp69(GHJuK|p1v_kw{Z&n&Ui%om)Jd; z*>7W9F7~{&)FB?)odjOC;n<8%Ze`lJwQm%<8gzf0GM^`H5WSi8!-#%rGD;V1RQ^Bn zyvMLGBb%MPH$I_TXT*P*j3~i=Y4HPXC2nY zV13TV-WO5B()RdvE}xh(e~4fkib&%z@gVd2$)5N3VO^8s9{RG;jpXlLYIOY5Bhk`t z;?o|=Z9c{G-XE50-v@N|AshS0h(2gpMCtJ!>Ay56qp7-yBDZA~^;9H^g5hSN(%fmdPUHl5r2}6DUhTlwg4a6mjo|eT zd^>of1K$PS1c$w5yY2<=dzoiKG;G+ALm zrgU5Sw03H3m;+52nr~Bnw9FLaeIQOUUht^5s&{{qU-1t9~aBYl*89>?=)u% z@_B`4@1v;g^T9J$dXvBZsIM2<=1;Kti^mhB7f63RVbQMwFM+FHOJu9+*p@NY-dXe; zNw1Nv{pB!!+rjJL^9VB>_9lg7br118Rv(_vx9w$LKAiTZa7kKq9#fsr-aNif1;#caH$L0k4`#_M@UVkf9UhR2*aOFgdL-g;QYi*M*Dv&>S zjThca(Uyg;V_m=3lU5?_BIu;+wt<(yZ*z6oeh3T4WO1o35So2OC@{3~2Tl;6doiV=F%?rkWH5D@z43I?7Nxw^L@}I?vt>Wp%qU*!RH->4xR{r3kYKZ3i^SGq>Y1!VQ-q08Lh*%?3}cYb)+K=l_%&yl_h-AsC?4+|43{v52dDNZaE ztU0lpe9fEOnnu6cZ@kx3-b&Bz3K4I2w?%)9_#*KyBuxBk>Ynw- z-I*dR`8rKn;STm2mL|J)^0&dmyQ{L9Bv1Y}#vR&M8m-#FIbG}uYk*H&j`ZA}UiiBS z`aZ^v#NXN>qpP5)K%>37WOl8}1efng_(t%)yWAKG-wvJy7rl6~3%m$^HDOFi?o#n- zh;FzY;(YcxHy72`Bhb~Mdk$fKE@gv#7Reg996f9EpY*=fo_9Cvx7#0Iw>AJfa7tgPGQeM? z^7vZ=UJcSs_IS#IVYEJORavCH2i)y7F!gx!2EXh&*D`0rR-r4uig}PS`R&vyHj2@s5LH%Zf z2kUZPSHy^z^0b6Zc$2*%`7`%>lkZ!=T*TU@R_FP`0_b-_n}>ECVXJF$9})C58(SS= zU?}e~^47__H_Y3$S77{OyCU*VKtKEteSCxGeR!~^-u6BL%f81NhR36r6+LEDHcJ_O?}pFs@w^=Ck#qtVll3Oy z*yLjbxRC!91_jzd<2au@)$N}B?kRoX0+746sjf0nxH$7EbFKK$7N9M^w>_`N@Zh?w z0JB<)xW;-TG}-rgdV)}6tv$e{7&)f1Dx{T2TTPnrgp;1|F2Evw$i*8qmy?av5onvx zo@1?Hf60E~NpEOz7+_G3_dBqC?~JHydSC`>^NzHDU9w zB`&w0R}9?E#_Jq3g^zgNPmR|(x0WD|I7#jfDm7VDy=$P&RYJQaxc{S50TlT%z0?Cg zH2=1%Ug$QtHM3L4+5B5FRLDo_nD}Sp*CK6 z+fNPC;lgg$PIw;Ji8^AtYtlrbOrO6Tv<+zgmayq#_8|+Td+xUVYBGd+m2bx5V8uaoX^{ zHz-vL&KhVN&^Dlb#w!BePOc$=E^o}xqeMN*oHObhrOb6$*mNA1%lCEz(*}z7|5`&m8bB*w_})vv^vNFWFPIU>sz> zOLwgn?a+YtK`-Eot;e?~4Fj9M(X^(J6bU%KHrg}G9oGcwx+aELFJvC@o$2mys zCqcWU6z0*czV|ct9y{Ruh#>P9{fs(C7qafCr<}N4>HOqyT=JZSzCLTfyUfbYAjivho%h8%L#|N{fb~M8%Y*v!3>>fUA*8|!IjS|0t_!{xSKC|;ptMMV9t?ZP0?_+wbWs2`b0xtWd zqVk_U;Cb}hbmOGlm<_0NiS3bc<7Bi!{?aoB?Cle+i6#rIh|(3|7m{+4YiwtJfd8I3 z;62Lm7^4AAY5umA0gp#bSIvjcf7XDvg*h&Jn?kSdF_tN6K7R#ht1lZcyV}MWCh1Em8C5<3|&FPxwH6lIoQK47*4 z#a*fIeXlW*97#Xmwo$eg41bUY{3UH>gJwMMs$0L)#(`o)b0zggvb`fWey`qM7v}WDlCHgc&mD|FNeb9g$>nAvD?R2D~RuqkE<67De!67HE_Fh)zJsO&O$nMSgL1F} z56e>}kN?0xc&0oxk01L|cOL2B6Xa=<=h04=PR*0m(fX8%Y`?I8e6v3aKi&qvT)yC* z7wrr7&a6GW|JXabB}*&FTX+y1W3tT}u_<=FtOVxd)g7W_^LHb(jST~AG$eOLc&1Am zPVQtf$f^kaG*xJen^~ibRyqU1%Qe+PJ7BT-X^ufx-pcy%2y^COlxkvfh-b4Z%#FVq z@E#`2oa;P4Vd;rgx_H*M_w(c{zhfZS8_P~%j}?sn*IZX@U0(-Xaod2`n5KQabsvi# ziDBY(&1u@B^>H8h^A8P#zJi`NPT505{ua^5Blz8C{tbPm%s=)^kJe)D+|c|OF}~Nb zanNQ~I%$Du-_QJ?W}a|=c}9${p?WkaKgB&DLqB4XlujyBZsx-Sb`~VO0`7yO+D&Iw z!L#6)9){Pz^Bs5{ycpopu?_Gt_*TN`AiKvZl`M&hEq9B)O6>z^3#E_sA< z6U?{nV%7e`vPq;GtLzO0SV z9X@%tlehTkfzbCH*dCaBv{1@P>2WyKh9r|v}b=ld^4bgpOApHK;?#W%> zHb0RB``w&HdQLM4#d0p>sP8=aE(=?QX(0=5~(DyMlTgek{#Z z>x7NX1a$tF*mFRqu?hE-x`c-`+WKPaA9NMy=F?Bv8y#z9sLa`a9wnDs0VL;D@-)6Y z;4Or=vh|kQhd=l~mSLp)S3pV)D*w3J@zsIQS2|UP`50$eGnkF=B2?sK5P6yq#f^RlAtI!m`Hem1SJKhHV zR8IIpnxoM4ef^QkIRi}z8jb^lF`8P=F!8f->Sew$5Wa=RTP|)+%qKn@#7jqyg6F~K z6Q0H21b7)-V_fH`aZvViPGfmaAhxj7# z3QHFDgO|X+ge+jUYro2;;ij_LO}5PjqdloI|BiinT(o94gl}*>9MIYxLFEqbru~0E z5WEw{{meLT@iWOefp_w|)@f7C)f}|hZx48N+AulSm|AUrLq2|0)Lh4)Q9nxL?>jhP z@1P4WgZto%2>bk1z>DBtA#CHVb9h~=awd`Ki-T&zcd!Lq-(+x@@xN(!lNTE=DtdFEBggavs%^~2Z110i*8c}*6Jo152QrR!&gs4y@X^*Y z^<^cr#qSPyK4IA`YrxCkM+rysDyPTtd(@iQEZsXV%8;(BsgCar$bG9aJMJ`Ke6-K= zN9?yS*+I9zm65DoAaCZ#fcNvByv2^Z%XpJv@;0`{eEz4Ir{p_3ML&0rIs0DwQQ~d| z?fi3VmH&qW-ngsR)}-)EgI9QHq%^4;n+mkK`hdM5ARTF&31pnlCZB~^wQVx#=OfTo zel+0Sl$5OGWOdqeSR0bMxFH?t?vkH|uJ7k=-=}oLh%i6Q3vkv4hcLKR(3W!@r1{DDE!p zZt@rZZ6N&ir{_#WMme9)_AF{@yvF*Z+V!ge`yH*xwky}2jP*#+g++YZH2HSY1o`|u z$Qb$b+s{!ltGh$-7wHad_i{RFKkgK@_tsokN4d>Q2E7y0>kS=d_RIyYmfwWgB2#zsqH3bvA=fbiJJEpNH5PC4DJ`}92L(sQo~UpRhz)H zb>iI5lHqZK_MHc^#rdXm3?~o#6i7g;Et>h1C!noD`x94h=enyqwlfbP;@s&^Jj~#T z7aO53KYq}=?{NW-yUu^Km%u&M!(n&-yW20eIPFvBF}3$agTe3PwC@lF2C@5w@`7ky zJlMXUF!OWFHSpVsMg{6d5N{{AHE%9yRnjgdO}twGUITv<;ZAw-W5r2vB2DA4O64vX zoP5)o!e8fx!O}O9UYaIdvb#%lk-py5)yYpalht6#l_4#owk{l3y)PN`2B(#=Tx~T>tVxy9*e~FdeotaS7*4>OQD;LW8^3@T1^G@TK4x{!W0`z@J1I zh8fS#5Z541`rOJzdT34EqNJZr*ZH55;|hj zp!f7pM@;f3+$+Y1wcrd*-D>(|T}a;I=E2T4cCwwn`y-kHG!1Cfw{Q$&9J<&jqFg2S z8==W>84S+QvUY~1_?^U8BI5TF-;9VqLVRv(Z#gH3FGs{*Aifb1KfD)tetT~@^N24+ z#E%kRkBDDMy#H6d<*X&X7!kjX_*z8#F5)xqm|6}?ci(>E3&h`rjm4hkstrjy_FyL* zUpA?p!LUFi z!s`EKJhpMOTBPgmH|M7HU**1k(EC|HXW!zv-zRUskRm%rW0d(S|LqtI-{#~EUstEv zH;=ReX^$rC^S2PZ1TMQo^#}U~d4-Ix>O(>0ePGbO9SFzuje!nVnI+P5q(7dp+FDi} z!qG==pUyQU`w6@DeJZnWq`US*yYokBZ&RqdOjn|*g1xuSCte@nV^lq7$Xoj0p!ef` zH%^!~w#0Lk5ZbeCKh>OlwCQ86P4uD5{(4K-QGoLSt{_k8dZpQZBp)&f0FighVANE zU)Z~rBbY{B@h$r`WaMuLz3&r-7aexOh7LQy`3hD-+kmzKZLoJWp9^O|;c=qv86*c= zp{?y6Z2um~4)A7xtKQw<{-;Pcxv+h3aCglF-feE7lgu53HvegOM;NwUrE`AX*|#~X zd2?EIk?!Wr@JeTU&?-47RT6`sI%nem&wplc@_P)7FZP)B4auUkenEV4pFR$44O&1K zUp@q1*znjE+1*1}3sGs$VBp{8&P@_e4QhfN6;G~M3v6GsQ-yuDU1o5`Gey1;z8(?c zhL)}o^d7Lxr?{rtNtth%(oP*WqK?~k-U!d6wcqtKp3eOS^Yn9ro$t|S;DF3!Tf@gm zFOmK@%7snWY2QCgxIlb`c+GF(uUEXrXdUsjpgelyeEfX9a0tDsG1@_T-{%Ltf{l09 zeLQS_k8nL(Wc$1tbcO1mp07~(=)kcJ@s9h48pjjRG@#jKG`#zwYeRO>t`n+orEv0{ z*^dtT!k~A=>Mh`twugFk1Rk3GcGl-p)H%&ey*m>d$(A1%M#kBLS z5c^KVAad{R=H8qCXKn7WQzz)LyMyYb{N$kCZsq-c^)a zs1JI>Omyu7k#_rKO#BS-)nR*?bF*nf8QRkELHjN)ApVy@ zuN3GYDh_{v}*9CUtvoS1hZ?qkC+5PC~h^Xy=lh zJ|$cKe2Sd&E#&BAsC#`kS7p5gXE~a$%g3#TUjSM<)LBRK(00vHMf|DYq}4_MRKa8QftV*}&7dlkPhok`vHnlj-11 z6zoKZ5?jp22g}E-EdB661DboGmmcNJ*Y1HzV%>`9?1wCL`Bd8b%aGSyzB=7II8Tea zHH3soyeN{t+@F4g@2~Ur_-*%olW)8^r|CI6m)UA|_+iS;45aPM$S3X?cntD ziDB}M%!94~T`8Ro?`eeXnBd6N&LS4+w^^P0+{!IO--P~O$qO%o_qNe);aul*Wff`r zpli%bd-u)glqq}|!QC8=PGiUU=SvCM4joa;Ok+iNk%F7sKB^FwL#dumQ(!3*Fo zB5ZR)vW~&DG?){4(krCv&12c`<|MvX?y7Lwy6>pgLD!c-jwpz7de$1|ggvd&Ek~ix zZy)({V`5Y!`!~Pbfog8-et9Nsxk3*((b*b5LTPeqXb;tObX~t(U=IwKK#2#o$(43)O zW@*RwE3r=@g|cPZw%IY!-k0`PLQ7wD_Fea@FMtdK)(>Y4F1>vUk+Xce=4|SawT{J{9VCZ2n{c0b9gV+_CIr=-Kw%*n-1Un z-C*BZYpv1UipA+0`QP?$Rp{!_-4_dFphy1};xC9Y(Skiqll-~Yr-QvmCivYg-K~Lp zDB1DgqLA7@`(f-SX!jG=nqZf~&Dv`JScU0d>Gg4F|Nr*RKT7VZy#JG#O}H>K%LIar zcBNwolGYH1kXmZ;1Pl;h@(UJSk|kMwSU55!;fI2C&54?}TBjIKX-(Ue zMi1K9PDuz6bLQV@z!zOVOlKcD&e8N{#r;rE=(Id}Iy_dfTz_dfTz z&wcKX&%LD^lWq#kFxhIEuP*K`#S`12Rw5BEbX%Ly($R;YTZZoFhm-D4-quOxCrnSY zju-5crFG1#b=#QTh7YO~?Xx4VuQU7U<6la;W3A0{%l$cGjJK76gfY9??PbmSR37~N zmy-??B(mPv1$GZ`s~#IjZtz;TacLPE;`=se#{MDczF=i2O=1$lHk+TYlo|wGa#I1f zvO5{Pf737y1s~(7fn*CG2Cw*)r28~}>ksiy$)vV1r|YW({$q^>W4|BEG}8)(GAq|? z@XFxb=xNmE{y9z))rL#rq^p*LoBgMxt0tn`O=rU+AI3pWm43U*v?u9)!oMhaQg{AR zgxF|&77rg+`n~8A<01EtXr6F^>`{FnP`4kY7rP#THxDJF(}Gv#8;zP3-yF@(nUdqxOx}-eW53{$%)OnYYCyoBPi>2XE}_ z-aZgq0ImQ}!7sQ7Jl+5g16P4hCN7IB0muF&S^LgEc#oN3Orq!Q+#TQygR=uv+Fg1m zxT8jBQv3d`r~}|-$GtvQ9i9Nr1MjqSdAgCU4Lq08g$g2rxpwUCR*(~~% zq46&Kl$?c@fji)kTQS^O)lP3F+eZ?Onew6s@t(;j|sF=O%M*=IK=ZVjJC+V)Uc-F0h z1raUsoEJ!j@Or+Ee1dm%1Re_#5ZYPg|UpBw_O@I5A{rJBp-L8&(dRXr;v=PvOEY;^3(vMb?;rBKu#0#}-M1R;5^drA6G3{Sy zhyM!gEPV&UTdDRr4X2c>KK@M3eBm8Ry5D-0_GY2C&5qXGsE_j8O8V+|eLF0WSCs?L0g( zu}prZjbj5mm2^rM;$G>=86W2nUnJhI$7K0hQsX5D1m6dH5DH8e(`_rj8-6-j-=9{0 z(W=`%3_ECNaV2mjz}bP{=H0^a>zB22bUVN)e=liw|7$GY1zZ7s8-6R_wKkO7++t8A7;iSvpmz+!kE&)G)pEA|H*}utG&uqRm#LWjU|NW$U5`R?t zF`r;Xy{-8%`1ne>%>uIv)>_RqllvXylluWEAKl=Y1QX~%&}z}hE@l1YuTS_5sh$1&?SwYRokvzmF3I>b}%OBglL zG>cb6kYp?F7EM8P^rCMc7V^Vz<{^Jwxbfyz=nfy73hy)XI*FA^V=ld4GExR-0-Ve7 zBLj9@eXlOZ02Z$*#21cBHSIxQqS=D^f`+deB&W}STLJeecmp5o0c`O#T$zzxo)6x% z$Ea^A<-SMbMAw&ZsL{=BOhnl#{W8**-cK~O4QZ<`$7jPE%cZd@Y_5v4xU-b2&|FHJ4?u2kpPPwmB zHhm9mcPDV{5%k)mHe9Rh`6l_irJ){eHgqxm#mH*dods%l&F&Tj?QY|^>N5h};Zss} zj$QB;;8Fmq&f9=Tf&1|X{W%xji#?67UBp+3KL@{L0$arRbb#>OOix#MPXOnE-|X>t zVbJsQdBTf?pG3HL()BI!2hQUU^2=U?3?XIo@pt2~q0#p9a^O~4XezG(!mAPCMZ#mJ zHkU#8Hxr&EJd2+?p!WQJ;V9wxi17OeFGhq{2rspSi>HqhUM5_16i*KWSAb8!AJ#E^ z=TI{19!EBaKl@em#?PZg-slgIK7U%u&U8yxn{CV;H~UcLIp_}(KT15y8NN>~NKXcd zI~*TMb&1V|1&=Sv5|AzhyVCjn<;3{w*e&bni7G$B!afWM2h3eJ^UT$`( z(|0yEHcu_Q%-u|y3TghB^yngNaNB29Hw^b#t-nY^cf{+;u86!~>1#MHXC zRF{pJn+Q{$)Az3d%lndogCtgukNntq#q%!RFBhe zzCf26DsEJ?JH+iIE;ct6&U=`?Gu(2nL2b34xB_t>$6u2_#u5Y&d&@s0l_hQhyb18m z#~=2Cb-|Dm>d0x|q3ma-+=Wi#Z&~LRx#5HM;R@NrRp9{a&q3zFE&oBveKpXhHkY!! z&csNFsfLui4uL!Tu9Vx`v5yrJ_eG1Vwe3!oE1wF!t)`D@or=9fyH|vkl~FyLd=7$_ z=}p<$Y;2B&))$!&zzbe&=Q@+_uCv4U)+F0qPr!HZH6Mg0ZF>=~Wga3rOP~{5kg_`m zBk5o`H4k|G+Ba#M&xlXkR37NO+<{Lz*R)-HY8^jewED|IrSD_h!f$QN)lCRsU&=@6s@w`-hUyBB8d|O2J+c}XMt!c~+Z7tIwvI`GGcl`X6>-@%N z9;>vCqpTa)j(ISYhh+Qhj@kMDf&ML^m!Kc=d97!&>BSYqSBd|ek8hld=`yWPH}CLx z-7-p=(F<#`Xm`MBE-Rg{38C6!7dWw{DOcv7*2B=9X29r>;Tps|w0E+^SHUfV+iSQP z>{N6HJAnGDF<0`|^`Gbja6TG=(}>^h_xINIk$&`|nobGcgJmBq*w|E`90aEd&PRM6 zi#B)hXyhFUDP?-@LSCq}jR)Jmkv`iF{_wJt-D}Gx{vuRRuvT#{NmN6BHlhMv=HgUv zPoQ|gwvg$cTRj@IRL8@j2j02(t#7u-RWMg=A1J{W&u3N9%cTFHPaljIYR22@<3)hG z4BWycUJsy)nLk@y-|y?%pBxJIShC=kz^#J27{AB$_b&|_U%X8004Miu&tKE+(tE5r z1Xt);zu6B?37n@wo7?J#f@nAk`EZnOWfl7`Bl=S~7G(bmzFijTQq{$mPXjNFKyOIs0Pz#VkK!l4JJ|C}ZBDQq8^5q&Q1|23OW>APq=IiHn)^_A z!c0bm>NWEa?Qn&+lcY=L0q21K$mi2IUf6jPu5FAnsJETX^mi|`3<1zk9(O@=44QNB z=W*MCtH6Qn7w8U@CWD?`q1Uur%PSPk%e8jr*b^$}mDnJmF1C4CeV-d$nz&cGxLxWy zC{t$nZMEvP??MN@i=3=Z*|}ZK*}1)r4r|+Iw&WG+B(>8BxT9-Q?iKV;a3__0bf$aL zXesO6T4d6AP!{gBDfjuX4lOn==U@{zMU91Q0N!umEvg&BqWcnb3+q$v_bG$vgF4;d ztkiJiyGMLa(Pb=aCu?*IPg35EDYuYDHM++0dOsY%p0Wpi32K`Aaxca$QzF@Gbnk<1 z^|q9IU$_R*(!X^c_}R#&O#Fs*`>dH#Bn} zOt~B5jb%cZgEKI)lOBkY4V0VY@CfP0?oPQEkO8|(fDb72a0SEY?m!G}4YmaCtf#>p zO}YEPt=Hf3vOPlG$&fNex3nvJ>fec|L2r_AETS)=S0h4wU)V_*iXTh4<6WC<84q=~ z()Q9@8-bfL=i7QqyAY@^bbXJ$`>B-sOxQNow)MJ6X8q%_?TW(ob6UvC=n{WdKsWp8 zlzS^O8?56k3-09_5BO{2y~gLez%6_hecVyLi-{xA{54&-pY#)-OSwD4I@J5Kwa)-{ z=Rj0P7)UOHNNDS7G!>goS?3*Q?D(6M+k&5j8WU{`Ko=XCVRBpT%0%m9YrxO^ zZD^we_jha2P0LcjUHam|J>U(4_rLh-GDZ$Hd7d8sw z*Q#@%7c^d9ZI$X41vMTHQzytmfA;tJ^Z8VGmQA*)9u>8Dh4hKWu>v^5;1q?AD*}%L zUyh$THSS$v)~49q@t*=qW^Dcoe(wI1eIo=uZ$)7El6Dqur)U#*8Gfq9LbAsHfRCK0 zV_s+WzVzDT$`@R%`GdVv}g_(UnE?w|9-%D`}e8Z8JEpn=iQNDN~z|dEsb6l z8neKQ?F!c`GHv#&%Dx1gQE-%hzsk<4mdY-^3=&r%?o|Bqa5n=_0AGWjde&_f>Qh^P z=w%0@cJk2kbBuJwFQkIEZaI^qcU9PXlHE^v7bS1-vZppX3))ri^I!CH1(T_Izo_Zm z(RK^K&bIXYko2T|@yteftm_4>4Q!CUY7wi&dUZZRi%HiEi{=lgci7MCwA zcZcIqTN(0pVx*N{YAfsiq#u4U<(_RyZ~Z^yP2!;_9mpW7{&9fx#g|hqO?p3;Yhl~2 zJdXb}@*x{c{d6|CFDb7hsqhZri!|zKl}yKmysZ}hvv2|>+Oz%}IrY;wH4BW!cQ*HZ`iW?@b6cLvq?jGXCi2DQlf<<@`8H0wvStxMZI*VbR5 zskuc?JMOg(yU5<2TL$jvv1xY^vdCPfKbZd+mu!5n!(`^OcH08}L@I4>NHo&UUf)2P zhEqF?fm=wY?L7_O#(edGy@u)hKS9%}8BCs@05^AH+TJW_>H7g6ax1AY0@h-Ql3x7o zc@}w^mUg+Y&2`DrIg%4CXG%)?l6~Oyfj4?m+GK-#n%6mU@$C#daEm;=s>dSYED?MqutINuP;t$Ta zsG&e_D#v0y?bdY2g}H(H;j{_r{pPg2CuMwNt-klp#6pH)zRmdDaeI3A^*-DitkwsR zR`F%b43d5s>4#5FyMrBc5waV_cjnTjO@je>QEj_0{`m&641>umOI{W7D$Gdh_`b%G z&1?pZ$KwwKt5CkLKM79ul(g##^$PW&COY|%m^G=PIswgTKSpj&O^5sCHqL8RKHQg- z9G(SE8Jrh=zP0u9oMwBq{?M0HpI;-~x2Egsk$U2dfpHpfCE_NC6CQnq)okDQw-cT@ zE$!Y&xbW@+&IK@ddV<7sM1}AI;cp7?#({@{Px17w5T4Q>CcNAdE*%ql4m*MH-^JU5 z%K&F)d6>88{e6Mba>Sj5%Mo87eg!(nWTQ>D3?&M#eVmy|+9A@8<rZ*VPiY@* za4y4S+TY`_4ZO-3Y4-)v_&y%2w{rcMp%I?N?FO$jHyz#!qPDM0iibCgcpXp$Cw6Aq zWysUY+p-tS7(T%ULA54>uB+QkAqbiWi43L^f^kSST{jSFueZMJ#P zAK=L?wf>+oKM&6E*|c#7o-p5;5#Ogi*PyN0 zqog0dFl~GPl8-X*1n@lk#%s8`Ie`Wk#HbGzn8kpIgRQ zgDgj6H*>oJ0 zGfTDB?M)66e;>FL;J!7KE99VgU#OV)45mR_3-=~bu5E|SdLx&W0-ZPQCHlps^>WVy z&H=-6EB8F$Jn#Wv^t0_Q^W~k6kKSEVTEvNmMQ}5hrR^Oi`cv>dmr!-cPc~G4Qarp1 zym9dU&}im(V#f2Vtn`NCraq=V@ zsU>|6Y0IQ7Ug`Tk1@`AE*7yNga#10^O#GBkE+S~ZKT0n8lUOuulT_9QE^QAbAC+bH z%kaPG$HH1!g8c`@FCl({_)GB<&%OH0kys>=^`Q76;tMOI>!SW}5AmbKpM&4}19dT7 zhXmKg6=YOAeE{4lxV;`XN@v~B-Wj}1K2O@*sTF&{T+b1B4Bn-oonSf#Ce-fs%-gs7t#Zp*LRN7ibPhCU<3^yHA56P9 zptLF9?ePYC{7~bVjlH4z?Et@cowtRp{=lUG&Jw>DxD0$T{-B+*deg@m3VG=x{4hAN zb!qoCj}zD|(zPp_b*-R1@QMYpK5q7{L;h@d?q~2GI`3$r1Ml9`%)8~_W!Ar1pU=lX z6REE4^WX67T)5$`;m*&0p_?C0yOlnF$s~*3Ea6&Z`;vSGp<}3~d!GPz4BT8xSu@xU z@QDd&*S;)qT|cLt!P{7;nXR93r5=RO0;hPrpJz~8Tj!WhSc$OTC7v)%N9{b0^z?G# zD#QhPSLMuQ2_Ggrzad>;8=(nUEwibWDk+?8;0%Lv0elI`S z+()cTMJ+n|Gw*uk%vJ(CUIDz}kypo)4Brf1{szy_`M`Gp7lFSL>Wel#K9J~--mA2> z-cS1M&AttNU0LtdH`5wm;|pxPcZhr@z$=6I#SZy!FHd4?)Of)uD$Y;04HztDn0dB` zVRIj16-?SqmnpwuY*MUv3pNytw7%X}uYBT3<=3i2Sn7Dz$^qrZ#rWRjc|kE2HRNag zL*wB%`HkI{wtE<&^D8Fewinbg*s@2Yqg__Pmi&BRV|IQGdp;jPMrNG|_e(oNx&jjxVE&{(xWx*W~J>XN1i>^Pm zYW%CJP)l)?f#{_Yw9CiSb`PKIksjdeCs>=IeoWq2kFztHoEx{Ruw}g3xyvo!4uG5A zo^}s+&O0$TiWkgFR|iaP>_CX)a_jDhe`7dzm23l@A*v}@%i5;X#wkbUGigURSAVPX zG=6UbOZ)8`%_G9y!5UTvT>!rlmqh8D{-nMaiDIL@y}qmqx_?=llegI1i9N8PNt%}= z+w5>{=~Rb~N5}hqeD?(qkCYKFOd;>oCviNh@Dv3UV3HUq!PT?TqS)ErlBZOnMw^PD? zHUjSOV`;lfOZ|2W@EGuw9ou+jq8inA0{d_;=`)Yl*W?ZY=YcnNq?b?J6Gab6kQ_{7 zfwJ;#_6_j&;AR3(0Lvb+_R^ToPSTZ_2P%Ib@%ith-B#C$@7pIOhN3gny4V)dSHGKf z1Mm*|5qfl<28Ff`*K4;1C;Lj5isoZ|iV?Y3igs3|rxlZ1pIT zzWUR&d;c+=+BTQ?uze-fGAJR7GbwkO^u*}t3BlI|M zrU5<-oCTf=P09F6z`lJ6 z^)N+HubZJCJEq$`L|(Mz^39X&tQ?=Z#cvPSv#tK%jf1z>Q~MlIv1@u(*WPhd1%$maC3fro+jhCFFogPWE3B2QMe4vf=D zKS5rDiCf({L{U!_Fcfoe?ReEi(@bW8<0ILD8Y&iIK3G8PPUn3iPfqA0(aG9kqzjA}e z%leN`&c8FkcOpXL#en1XJ%km14lV2_yV3zs#@DEx|7vzGqvP+3UOC)a|-}2S3nd`{29o?lPNo*Oo5(w)qpx zp|qZ&b^McX`Vka6Jbt3>F=YX?X0N%yZ{UuMcG)~(H~%$1$m34LF};ob{FPVM&nBF* z=?Xs9lV4fC)_aN?3+#%d^xcJ8?6K)1>E^YyC zDQ*>R18x&;EAC$0{kR8lkKzvDp2NjIPI}x7++5rO+)~^s+y>kx+*aJZxchMr;vU5v z!aawJe}eS58MwK)1-PZSRk#hfO}MSNdvW*U9>hJ0JA``<7vD~L+zi}Y+ydNE+$!7# z+$P*s+`YK_aS!4i#T~*uhl~FS>2Wh~b8!oBOL41k8*rO&TXFZ|?#DfddlYvF_Z%+% zr=-Wtz|F-iz%9kC!fn89!fnNc?ec2>LwT$oI??^~nQpi9yC=E|ZswCGy32pk?J}oD zr)G)NWa-p1^d(38FZ)lE-PqpAF8j5~ZuF7KZessrm)kelm3B{d#XXZ<{vRg07_Nky zm_Ee~zj2BidW7s>UNzz%}symL^q0S%w_c2DQ-MD#ZBN!$4zmCVccry z02hGAufTz`;qAw})Q2)Izha6jUpB>MZkpmo-=ovF{x`84{{TSWK^;GYr^{*F&hwLDts2#%t2QwRFD5q`>~d>ffN2sfqE z5;OWB{MlQtYfE(O+k;bUJgUW^eA)wRu{BTSU~^m5B3=hi{@ST-`D1nZRmvH`*4I?d z!3H|7L(!T@ET^2YZ`RBCp&7@Uo^C<{crE7P$^SK%h!>m*CVIrure$*w4mopsvVMXtSl zN(6>&^lQ*QCEBMNv`_hUXdm4duX?{8?Ngymf7$jaKJDA+7qw5P5|LI!Tp?yja_%&^x*F(Skf73pv`1bkok9>bqyVicR zk12s#KnKr%)W^9F7{5~R_6GV5fJKsW_#{Z4ur{0ZJTsVF< z;)VWj{0!l?|1*z?%%>4A?Ekv^T=#@G#)W>}^B*;ShVm8Sh5z+dU+9k-Kf}22|NqPQ zSw38s73t@Ymj1uM+&qNE|Fg2Qts!R4nQ7 z3aS76icEfON&bsv@Yv=SXIQ#UGmDj}P46fWb7@M=^ed{*9?>hf~WJ7GuHS2DebK}|# z8?Rlzt_iq`xD9KEgzr7WLnESmEq_PW-pt>t0f<_^X64Ar*qpV4S6#hf<#lVX8eBul z5Q@!NJ+gkoMzZt&-m{uWNUpr@+SO#Y9y0uyW3)Y;RU5%xz5crE)~*}T5dT_#+Gmih zp}m25>_^N4kev|z6sKQkI|y$8ya6JziU@w%&(QBJIDOkEJne4`g13Z)fiPbG<+RkS zyoINIk6jAHI8j=X7>=emvaq$bV|eV7>>`o&N5Y?Q_0zX8EZf>1hxRv?VEj}G3-eWa zxjvlsMC8}L$ZRqh#UGYA#J`9zj__C-?W^ntFAp5X>%R;woxKY2v=4IxJnhdYUiAy{ z*5X%Lbv8-+Ks{{W1OTa5AQScL<+|gI0`f3ufRxNaRN4l2 z7c(7Kw~DRpkG4>3tJSu&r4$tZ@%dP^k_#>Sx zgr^LTj^`>oHFy@|sl~&;%ki9x=XyNVc=%U@XAYh#3E;0z1=u%*Qhq&lPyw zzYClf>cvDn)SVz6{(T)!C7#iEF2gecPZ$sX#;KtH-&uIO4$swi^6{L8=M+5r%fl0r zH%+?);UqjaIPfTh=i|8;kLZ{a|K9@2?*Gr9Kcg`Fz{z-^n*ZnD7$@~SgkN#qp`M@n z8;h9SL9rJOdOyQ?A2BHIZ0G$fgqIGA=j%CmsHeqvPQv5b}s_#HPh zLZ)Apk^VsjoSgw5$fz%i3hew5-@=Uizs<95dfWG8f*jT6hUcNYg#P^B|AS7Ix(VnL>@TD@~4>QU?oB{tJ1K-FDcuWRN zdlb6D@1uPi4b51YQQz4a`G1m;o)7sn-9OOYp99bO+jIwCp7u#b`F$DXspsw=`4Py- zKiIx9eRxLs@(g%RM)}t>;5`}eqZ#l&GvEg^@Lve{!9nf&MMnNVX28W6Fm1g1$M*EN z07Am=XXH<2q&H^39MjxCmVep>5EAxh^q*)3{s|fFI~)1io%Wpx3;&ml{IQJu9U1lg zCL{mN8TpUPpy$$z{ILwUE~ESt8R^Lkc(6@m`_IZ~Pjv>q9hqVIQUd%l%H&xslM z9?vLWmC?Rq8RhTJfM3jjf1iP`Hv>MHfnS3kxS&xvfOF>Dv}D=RInBnr<;I*j+MFv^ z%(-UaO^ch2h07}%=QTGkY}OVuE^Au26hZT?OYrZ)<;#~XCyM#R@KtTjUe;tRUb=wba+a8b3YIU3G-*qg%xn5;i8jA+8LC!C1U(skW$j z;lf*(nJr;O^KM$$y!f_-$hoKmj5gQ;WAPF;cfqoVp)C?FNU>!|BiJnE(WXVxR#s*# zi!^FW`Uyg1T4c$*=39i2dCd!1oA84;*!HG*Mg!}=2@Rds+_Zf0QezQlXmn|yRLR6S zbKDqYUbu9H*4#XQ-qJ-B!o1}-kw`Ry!PR;5aZCMOXEn~L%D;H>s zRxV#`EYuc(94X3HFI%)=-mOp*sMrz;vytpVNPbc~7Kpa71c*cYx0)%w8=Du-Lpu1e z)Bqb6E?Kf{1rReY^30n*e_?a8pa2(uNhv8B3pI6=d&#`Tkc~=UUCW?3D;7CyXr4Jqh9C9 zfz&(mA>J;q;SoFoB{!kptdy+|9v+i{neqHOemM%+a*1$Uhtn*v1g{vz;O8+Q|@( z+ir%KWIf9e6R5omFH$4l)E?hZ&;rA27ru z@d!fybBoyAtQ!oV$RC&EcnO_&(^eZhL|*k8Dhd*$?!bPnHgfTR>N={=G6=_iK}CX zN$4zwm^9Th#Kd?m!waz%zz_~p14AfABSTEaniyi@YB0paxrN~bO5`L z0&ZrAiQHC(Rggc!%OHP-)sR2K%OQV;S3v#@uY~*=)HAtsE68P0_K8DesHgdrx7pD?@*@^3^q8}esZ5BW2MW9w%LpWwb0FCaXNaFM_b zgy#|t3fxGzfp9?JCc;gGHGvJnoO+}Vv!9&PLb#Ri0fAQ$ZX>)`;8wy(!tDab2tPo0 zlfZ3+*AreZ@Lhx-BAgUBNq7_CR)NNgN*9yFz@Ls}UfgdE? zL%2xbhX@}a92EFb!ZzW6z?%pkCaej(neY+9hmW!STM5GpK>G#WM%YJqufXku1BBZJ z-bpx*@FszG6AltyFYvR33kW9#-b=WMaI3(7C0t6lN#GvBVZw6-eu*%rqN!Se4-l>; z92WQu!m|h$32YOdOE@U-LBb7$0|Fl=+(cLt_yfW%gbyE;{!h4-@Bx88A>2lIufVkE z4N1c70@JcLJV1Dpz_joU>j|$Hn3lfbA;L+4Y4IC25pETjmcL;u;UJ?P$fX+&B79;m zc0E?7pT)l&$FibnPgzg%>4`0{F}5U6?XDam@I-fdXJ6l$FwWHy z+u*IpcosdFx8bkI8*evGpqey8&~0<=+693 z3QSA?J6YVGepTg6Y-hF6gN0^&C}ehS@ZGNaOe0hPYI9mI(ITgr`606|XFTUo4B3ykKip2O23Qg z&kah4(>FLhHWTT;9hCknaA;8ZtxUfg=|UJP@tWR{eHxe^?=^gE&^(x95;pf*zYsnJ zQUT%iViZch?1*(Hyqnw&ZQ!jnD#?EhFtXNX)`a|4O(+PQctzS>*D*3nO4|qP4@zt0MBW1YpG`BLyAe`s}KU^7>w@Boqa>9 z=A*to%CEQ`srvox65F{5dJ*5(4<=SsEcfb*s?27VDOPRUKIUY4tMQXI#AcV+p5Q(|uOh zmpvmtdvbo+4&&^x?a|#H=vY2z3ZnXuh3cuYi;}8Hq`(AG%mJc`BnNYr#k@Xh-Ac_-A(Nv1g!C@m@XFN!6Meu)=}WN6A4w#wGGe>U9GX zugSNr0#EZj&qEo5)|Ea_M;Ts>pv&5Fur>^mD?wRxbZ3ogzRGq)Ub1F-tt-7|E>${6 z<6z$aZG%M!GOjXIU|&VJMy!T+CcBHD@r8EP5$Q@HkN|6`$Nr9x<=7u3Uv9`g3wf9Z zBg3>1)O=}g)u^yYEHZ{@i`tP;(7I~$XBX-*n(y9I~o!SCBX>A+ars?+d8O0 zIe1%}(W2DlFgp5{y3u{DN9P&CTaPY_{O_V93Oyq=r9OhV7bS_4)Xi6|uw!T$sEgl- zZiBQ?e2*Tx0q>$msZNwp_6~H=W~y>%75iiH9+bSl16&KGhM|mGxxTg?wd-qljM%Gh zX-|zul3o5jERvWL)hQ2Ru07bE&-kYKmzmSe7gis<3+)GUOA|(@Qq(mTTF)qNXafg@ zzFI$MDYd5fObCZv6eg}OnM*A|Da15@IgQZD;`Zom-Wu@3-mct8@36Hvgu@&kxEhcQT@ARQ9=lC~ViZXFOCFsUbi%vG?D@jDTxxV?c3IT(hp_+moBo*1c*UCl}+t;c)3&sc0-@F3p~8D|vtI^&1s z{WA!l$+t&C^wBO)+1rt~HavuUjQjLG41nb!`$L2q9(5vZ0Npvv0&2AG9HLim%)vLs z_Qs8@uH!%!F};3tn6{B+HVleT4R`%ioEF&FL^i18pC`Wg@($|Txmbz z>%p7_P?lK;eQY`F`sk1&GcrL?7w?h53kAx}f9kQH4)mAPh!N~4PYB_KR{W5D_gi>J zcPUK!$&iwX`rUs;%mz|mc}uOrP1aO;U9VZ1bw!}8IuPlxuJDyr`yzWeOxB>1I*d)A z9*Sk(`XOWj7+w7L)QUtsv}3X_Q4?B)I`R;%Gtyzjc}@Bs9l5jl8h( zCjy!3M6_d;5U%j*u^CG4P$oTgIp2vK^+SWcMGFES!2UhNW{o2ES<2j<_G3Ij#zNsx zw8K-@q2F;3oJoBbBMMp|-NC_NH=}fF5fX$8s3*P=S(B;JWF_#hqp>rgAJm~it3r9e zkPGb(U=+oxUv&+lwWbHy6nJ=jNj8PZ-h)w04F`HbGFcpgraV`Z1e^yjIpdqKKJe!n zH~7&I;3x-MNA^~f1oRl4c2ow2&O(Fz2$ zIkGA=3;kk5w9l)@=Bh4Vhk{{i4C}Ef#AQSq`;va47->a%>{G0q>c9I4dKb>dxK-AL z_Lk^teh635++}v9PfD(C35YLoljpNCNuz239r#tmrlNp@+7DX65V~iS;?IHF8dHSI z_1HHU4Z%@|$-8_Z%NVtxnmIvVAu^P`Z3G}`y7gYO zFl7JkoxVQLr%p@nJPA3@Zw!Tt_nEdeDi7s8`UpKb32ZPI_T{8IW zFnjDu%;g{en-f-5Sg8G5>(wumikq9Ijs#+*mxKIQ5vnN z-zXCYQE?SvjbTiD-$u?7^w`Ouk0RGe=LI6FLwfxC}= z)3-`+c)&7C6TXo~Hy;I)VU41M>BUq~0ak_TiVs0Kihxu@$E~OCDWg~fz6FR&WX1kW zeSA>#(d^dmd4P1F`-)!$-Izt6R&`s^%Nn>REL9h(K?VNcPrW|sYUf+9Tiy>@ANg7N z0R|nJLFvDPLt~9$(~-YKGC?5+9fID>_ zj9H>^Si<`os1u_*{+(t2>-}Mx=m7PYVs)^v)VB_TEogdiJ8g;ip2!XB1Lnx+4sWz0 zuk1+V-EQw15`>~*^KG^o2h zCb^IqZ*LiHewdoU(W*j*rY`Js5t#%28KC1|sr8S1B+}G#GFt*%oVyl*=>=AHZ&j|> zEQ)-M9hjmev(-zq-HYtOXtp<6;q{_K$by&j8nqD|)Z(y$jbd_1R2tko| zLHJbQ@>{piBKU#cqUJF(V4q!q0+PdL1>*Z|z1O--3VsrBJy5lN16I+k@>*AT%c{N2 zfvEI&k4)D%A6;?MK+J)xsO{-=?C=TTst;A7>;@VM$1wCA7`h(C`RtfFq(_eijZ>mW z!^Q@ucBC$a9Z9@_@a1OMYNpmrPZsH}*&(>1BfCAPK2dx0MNCFN9$g|A%m-Pv0^ z1EYL5q)vcEUX( zz31Q5E6Ku!AdCHXsAg(0a3q}s87IT}i<0RF6~A5DpS6+mV&rt#>>@RYl+7Q7n3dob z8EXF&x!oMss2tnF$0KIBn`0GnpatOoA}yB{H%VmbC_BuRUKsKF+f$dYPWXWp-qi7U zWjGZfmZ$QB{g`|LPpxn3BV_TL7zYNVaT%N?YJ2g{4xq2$f&{F#*LNk> z*Sw**ke7Y^8<b_p@hJnXT9n-S*auh=T_O67!Y2WTT}yhD z;GU%5s`JU39kG4JV$wB^Btn=Y#BNYGmV&PqX$TgfJg5pqcjnDb`G9BZFVV{MhUC_t zGW=0;>$W#X`O@D{Zv7!)Gr2X%aCLI)2ltHfrB;ynqV*2@jGJ86J>hCoX`m+z@AlcgsEUtjIz2*ogbq7)xB`Heg`PZO45A^4` zVW2_I`Z?{*C@%yIqZWj5!$OL2Iz(}Xbq&{>u{K3BbBPj%*Z%gK%G4ySDPB@q(J!a` z)I6kNy)u6T(P0)M3v(!3t@20>()dyb3GFrWhb2Eugeqtp#|3nk@2CVgX1WA?0)=F9 z(n**8G^W1+^|DTN5gKr!qI{ZLuoDG2rU0K4rS!iqum`~M}s`f)t_`WNtv=D*+m ze61d8yl}8Vne7sA4+;-hrQg3vs}z|kUB3?V2hbXX%G(96I{n<3JgAS4feOK7pX}Fryh2e1>ub>veI>7`s>b;sXfsF2e?Z~gj(qPuNo{4^?^Zod+$!?#Jyw z3{LCaIWlrX9-_*v6PH9zY`xvHBr>Y?_N--*;jLJ>Gya)W*(kR3qpX(e2hoG&XjeWf zJp}(EdQ{Wz@?$ALzxz{|=nbXPJ@v|*a=efMV1;Dfw2KPC1#g~YwnpVL;~r!9>T1jq zJTjIbUL%!bey2vX^?=a}QI)eO>Wxk+Kru~^a|Tn~XTF?(M+ZAb2NRnL+bNygHwG*KHbA#biq{1k||2!Ek+uM z!U}oQA-;8R~H>pP2rwv2KS+gif zf8-A2EveD8Y_a* zZ_>Yqd}Mw^Ie_dwiud0*kp^AGN>Z#0TtVkbQ0ebE034UA`3klj=vW(PY~2a>(0tK; z4~h#X8+rfW+M6?80Xq8RYWij0Gl2FrX=ur}mqiK%|-WMZl$KfHaIX20<$ir#~YT)Q`wo35B_K!%u} zv^L6Y+m~OX#sW(fefuRCwj+I5dO*jT^fWTBIB5fqJU%WOc?MYO;Dev`3H-DTJdfTj zJ$DRIfuNBfD4mpqjqKX#Sa%K$Dlw!Yr2eH{}ohn6+qdMDBfrP8nt%kaP>xVUd$xLb)OSQXEz_wtop8Z za-g?*tPYt8*8ooSLAkd+PVC<%_QL?XbLi6u##aR-69+h?-pC=z@)WW}Cy{t9GB-L& zIETgCNtCM=nUB2!NEAARUBl&DCqfZyFHQ%5j9Vf>WKZW~#QyV!Mv=TZYA#-W z-lU+PM+n@8e`Jmij+GL{tH)yyx%aV=D3|U+Uu5NtJAYaVAi*$@Y^kio_

vacvQyk^HTj9-Q&etU_%UX(^MVfiBaJbTiS z6S$^7^6R$GFEb~Ir+Q{V;+t#l_^sdS^e*yhG?q1s#?-LDkBCRxl8Sl5ZNIlNZzl73 zZ!vc+iDBo{to>-}apZ|jL_5be8jsh0OH|LtiT}bc{@3HCo$Iq^1EE|qaYNpowR3&e zZ+VwC-%Q@Hm9=5{Svq;o*3RWwv;4V6ncvHwYZSBmxyEAifa2c+CVuiQ{z$y?=N3mw z^JS!k%s+bbXC-E`W=@i+G~;u9{#>WH`7!d=?ni@E<^Ls^*?7Nc%)a3f{P|o-iv^r}pI{uY`CZ7p ze6zD@hwMD@-tbv>K1upW{>jhs*RakkZc6^yFe!opfAZ&?B`*D@&I-9LQw3O+(W|77 z_+jgpr0-V6>^`|@kWUCV3B`3soYcw4i-c+6}WSYz^5 zXe`~{hT+|@-1bH4-<8B)(mzwDh~#%M6FZwu``bhq#Y1`f+SU`Bzw$12zL~tCZR?$- zllQdq%SIvZ_F+sdVyGThx0kI@ui~fyfjlW?#>+B++EBua6Kbl90Sw}4X51{YxQM+G zgjKy}0JZ98?HE=+U5_L=wX9c-UvtTo{3wrK7!la>1cp0J$@4O(S0B@rsB8xN+DZ*_ z^vjTDxUJli*XGU&C1Q5OuZ3yt+~}^zGe>&psNW>hOB3><3S$bhFrpSalwa!c3>o$q z8zrg|F5atRT$D*D^>Ac;XPe^Dlj3{Ip=EXN+aV0Z^;|$PPbeHBS0e-Hfm*ItNf}9) z+#DeeIb=n{olB+tWu=N?nhY$}*gkJSU&gCFln4Fbs+I87piIKtnn`23GG!q!z_-aqJ0lNq7lbkZX;W>zm9$&+kqv58p?v(e7$A}<2Un}yj_(($q(in5TV zqo>|;^2|`^vM=j;+`;ad9F}@QX4$Ba1ool0keYf@Z&_yNl82Gwzi~5Dq6|#|ck)QG zyd!u}C_F{o$+IZLJAzj_EmeItLsc1e+jta+x>MG^fEf`Uz>3NPQw_~aSmEg%K!~O7 zAt&@p#nZ@V&3uemT9lcYvY?r3ko2=-Z<~+I7)~1uFwCZeNZIq!@MyA3fn`X8l%eHz z-Y>IdN+umCLNb9GV_q*?CQUSG0{YbpV?6N1cwJ3MWtpcjz87}=5R-1lq#_jcr=SNs zI2eh9j0c2A6}7AzwwQZ)?d+glc3=`h7f&V?WJW?e;Ek`UGX%7_8+u+#&CQh6!m85K z^9(9)moYuBS4vcrqd}gX?oHVQ&a2UuUol~qEpdd=ghJ2#QA>GdSPb#nmr|2NGGg=a6O?F5-l%m0rZbcdE2;Y{Ps2euk_Qqq z6W0L(7A?=rUH3;~J(=D}@?nMQEHVscMlsuIN^VH#JxN!52Dq$NCiiH*GH+PMm?@Tr z=~k)ieWOa3OkYJTZO%)AYneuun+%O5uvMUk;@eLHNyCV25~DOp6`>6k z`A+1za`m2}oy!$>Z4a1jlam!HpJ{h9{-|x~;&i~R@A8`kY^ex=+^2)#%(P$qz2!Cs z-B?_|%hyl2U>87#tPY5C=_qeWX4e{YG~_K)a&@X+aFBH4A!^ztuY91Jed&Cg%-buO zH}1~D!KT*sZWg;5>bjcRTK%#rO`$1qDtHsnF@bU_%bkS_o#T&p7AzVwHEs?9HNWYskLc@d_wfmEoe<;^!o*6ZpT>RC|tvm&~zhE+Xdqt?hw z67sTQN_P~FbTnCk+VnBf{}4R0-pGPlZ?8Wz)EkPY{94?s=uO3B$up=Fy1}~Un$FHS zvmN^>3$?OB=XnB6M}`d6k&zF1SdWbkvezV;ip4XldS<;ZML2U70237~7B2BG=XD!d zQ(VGhP|aH& zwYAFne_IFp50)w#wPLEi5TcaYQq#GtO@B75sB7-7Z=g2i{(kTV^Sy6r9F8h@6tm}c zb2s;xi3;uePxJ{~(12Ox2PgXGeL$lf)uIve4Pe<36Mel$Yn+HGr~r3AJ<;deso|gs zUc=1Jv6&6a(#81oyq;QKm1#L`#*K1%Y+?2XQR^+QG$?ZRgHFy*-5gNg?1z!D;Qm0) zCX|6X5C9i|+rR_}CNdzNz<6{VgZBN|cy^G>`H97RuZMu2%>A**mJT_*)NH;ofznbs zB`$^6n%?_2L)SYH>RrvY>V!PB9SWKl$d(`-IVIQ2bfYp-O^UWq-9eU4FNm=XoskXk zKmDLmwO_p-RmSyaqRPVARkCKdzJ$-yz&lw`MNUO;X^k6Jeo>}0K{+mTG)=;H~9%QvoR`SeJ3Jp@v zIwg3h298}y5rnWX?G^5ki7u1olH$NkZZ$#>kldM z?E>zhB|ab6#`kfc*8|ZDoxp3i0sTqF%$kcT5c4TT@K6!+V)Xgu5)KKU_>*t9w|a4F zZ+ZS-qL+01eq;1nD6@wXBu@9M39;?a(qtS2Y zdovJOvLo}vNVax~6pYg_=es0!ic#YQSZe7Mc&DLzb*su2Y zm#Vp9>8Ayr_dWL8lebs)gvKfGKFj83x!3NVvA&VsXIcL``K<@3U;aiMMQSChQ&1Y~xK9 z-e+0-7;f*w`z(tOE%j|0%HEHCy2(GApWgi2lebs)gyz5b_n*tZ_2ic~|7^Y$Q~ROM zx7*t`GagCzhof4C8HJa5oD`Eq<;+-y*Mw&FAn7seW))xLHCH>dz;$L;RH!GnF)Y`H zY62iXpy=b>B|br;!Fp6L*}I$dzJ*Nt!^c|D%$)4(N!zj~G*W)ueN_Yg))`+?tf42c^X5WWe)yMl%KI!V*u0ZojDo;6<9zv^&l}fTNhwtkCfNgwxE_njo9@}K zD)=(SXeyl{Hi||#4HBO}i^pceYX=91QbtjcS!4bN#O*aIPHSehD9vpBSNXc;Sfx4E zXqc>8(Wx8`FK=mCfs0DfZq1URX=cnM!y{QwWUj~x2CNUXOK^^nWjv<4m?~5&aXDnh z{mk4}c0*q}&hBJcS1@BanH;UqwfD9J(eyp>OrWo zhW$R&aj1tIb*fP-j5-Td=oT2Y)|f9dYMW6{F=`*G%p0aqWpB;dsItEOQB>IvauF&@ z!Qbbw`x3YUTm`-dt_54bR&X2m9S}F~1CIc&L&7gt*BRv>99_q51QWD0>QW9T>0ZfytB zeu@1kGEg$nD}qlt6^__X$DClO*}NL1$k)#SeH2p{>ktshwcZ0@6f z2kiloBWO#38)P0v-1hgdnip47Vp<>J2vj=mUmHuX*tgf=RdbVsm$j263*7Q@^sE-k z3RQW66_#~sNsw`{TEIxfm|msJAtu9@9y(pSqac}%$61sL$*8$(g^YIfC|TBK>?IoR z;bk3%yZx~cXWQ7JPal+!(;O;|YM0deImy#j=kIK<>8O+AqV+XhHU74Ce`C{%YPmwj z8G)v`Z3W$U4oyo_duP=gzdRaW-zCQpai~gN>zs9GI8Afg2s9pN3c8`~l@nh3x{fyS z$UoQLUMJz`Hdb zd3oY>$CI1|(?i_xB&mmHNyo|lCEcxc^$ne>sIYE@q?QeD0sF?Lk?ot?JoYQ*&GFBf zEsSMsvljb&meP>?yuvh7ibz{@gMi#d`X+->n+1HG0-`O>qJt;8U4_$qWhcRPs0+}rb zI*fVtBm1G;AfO|K!_bIBS--j(yIX2a1+DFf zzm}8a{;Fzi;XkpvrQM%X-jsbcB~rDKb*#qvS9rshYp?io!msSTjY8Gjmf4>48D=ky zhLDUxL&K4i&xPEf@yMY$dET*=(lGc*2>$D3b&o$;`(umSpE?S^vLAt;4s>+?RrosF zn>llDLg`Hp70zrpMy8W2>+;W`n=2e&ZJ(1O!~Bv~6bT?FIQi)|j3QeGRd|g*-jwnB z(^ALjb5qJFdLa~J94U((*yF{`?zv)0Q$%)WU<`#G~m=ASb=kH4j}efF$MDIL1D)tFIBV)V#Ma+lvot5Kz4nbw)m4SUIgF;Y z&X8r}>!oRK8`+(uHJxmr;o6K=%GZ*n72WN*>0;e#t|#HD<`?y=xn3uUP*wX|kcmiQ%O>wAWc()Es~YA@W(ZDT!YBm?-CHtKp2Kg|F?*S@Q%xq%Ig z{u3$m&26nq{VQnNn!9qsZD|IxaZLnY(Mj8Dzn`| zHVyM=s`h}Ul404fwsDv{qtoC{%^tWjDov%-(Gk;TWP8O=yhl!7+!%#MyQ2j65z<%O z8JWholQ+&Y<;s+aD%Ghr7Nwy`RjTP3-EbByJ5u!ajP8^@bnlcsa!;3Q8Y2Hv5xz!9 zuhD5T0m~l`4J(t{EuD?U{mi(RKL#u2-Y9fg_wwcdin=#4op!GYajJM6bS8{UW8E1o zJ*-=!(Pi8lB|S3kjY5}oZ{+mIx>tlwvR$|3BEb(YYsQ`yyRdzx9Tq|vauskRQ!huS z(ea`e+@tb3I$g%SQPNYV6Yh;dmvyg5dgjHIW_)=2vUG)-Y!T7V^nkhPj(sLs8<*2H z)yV8uF`6p>=rnXE%jv#Gb!Rjhafgx9sP2qLBktI)d*pcOAzCpS9j}pTBz>$1Fp@iF z9&E&P9*suAGpk^~oy}7T&uBC{eI%WYW5eoIu6w$Sj83c5YtP-)~d%5oN@DF=9?p8c%u_kar5E<%o2ibR3aRmpzr{G#y?_jD69GF{d^ z)gSL{70nCi~oqUdGRkwn=g(RYNPW-@xnB@Vt5f6-P0S@oD&EmyeWSHpV=scnFC8 zHLwMUxy4StE8-=-mtrNp--6G8lRzU_jk%L7@m-TB@%VMza36RAya3(+6Z%Sh?+4{zG3W$+U{msqaXz z5VV0la4z@)_#XHLxF0+N-URO)DD_PTHJ}Tu1|J1q2Ajbh;8E~*P#VTiYng4VHl*7y=&$Ujjb>zXA_~o#0h4adoNh5KswD0LwuboDDt) zz5{Ln_kgFtTi~6MQr|J40el!F!3OX(a1+=$jlF8q@rUnMKkSEJBzC2&2s8@vDxNI(PXz{wyC&IOl%Z-bk_ zUEnG31~@259)h`G8SsNN_#F5FxE1^nyapzxpaly-H;99a!8gDS;Md?$@DiAiF70}O%<;7YI+JOEwU%dh8q|Z+Kni>oTmxQ*8|VY;!B@a_;CJ9J;7#zpPn7zqK{JSu zzI~_{g0F!s;P>Du@Go%ihEm_LpaX=#`QXdoC*VHtGMIc3c?IggsUQJ93BCz#1iuB3 zgTH}spCp`M0cZgO;6m^v@I!DL_#=1)9C&f5ZyIO-J>WcW8Tc{yEqD^V2@d{Lsc#l& z1z~Uj_$s&#{096PyaC?%Y0@0jft4T$E(RNqrq2P}!7ec680r}KHg>mw2fz!!_nA`P zhrj~R3Hrf$@Kvw{+y`C&2Yi;Y02YJOz*=xA_#yZo(2m=GL46HO+DJVG$AV=b2+jpx z1lNFHfJeaJ!Q{{3E;t^n1Vi9b@FVbB@C+D#3GRVK;8d^{Tmm+O--GADgwIos3ByLP z8Egk-n7xAfu5#KuumYR|YB28tz2GC@i(oVOHTV;7zCgPG-8QfTI2E+Vn9T(pU;vyC zz65>%ehKaeJHePsku$(7;KH{UH1izy^!1utd;E&)HFzG9lb1)aQfe6?Dz6ovw_k+KJ-Qb|hX^X&I&<-MC6=`u1>es;y z;5Xn2@CJDASIHyL41(Ys@I~-La0hr8JP(|&K?^EC12_f5!AHTD!1uvca4*;i_Pc_< z091oUa4HxC>%k@9D)3Wq7kCQ13QE6D*ui|z40^%2;EUk<;CAq5up1n_iM|jtfgUgf zE&)FRzX4BzH^KY9LHs~7SOtc_MsPLQ3ho1c1>?U-c)=Xd1Wp4<@Nw`Ja4onKJP!T_ zCR|C`1jm8(q;EIsCe$eEh4Kxq1OEe_0RIG2u0qZMHDD!3flq+1fuDf8!C%1v-=b{* z^T9F@07Kxj;M?G4a36RcY{SnTz?q5c`EAM`I2N2J-2+jjv0@s3Hfk(jK!Gvol?_f4q3RZ$B_!#&axB=V&9tW?2$=@R^-~`YK2Ee)C zi{KjYOYjHqGVpz$dJJm8N{|4b0oQ#%Ft$quh2a_tvJIwsxTyPBf z%Ta#@n)yzFuY#MwgP6StCj5~6L4PRfY|soo4Ay|LRmdHv-vCGQy#@7N@C?`u4*3!F z7%T(5;B4@D@O^L_co_T@jM+@v2WEk#AOOw*UjW|+w}MB&-@pOaQpdm|upFETE&^AA zTfl?hC2+uxNheST0^mIG6>u%M9qa(Fg2~sB_Fxg{0%w48z-Pc!;6|_=JPqCg@424# zpo+9W?EnLOuSPu&d=_j1*Md924)7Y7asz!gSP0rd5DbA&fp35<;4bhacmurmC$y`e z0jvaPf=_@e{y*~G0z9hYeH%W3gltHF;7+%=G!TIhoQ(%!L?Gz0Nj5^12*HX&DNZR? zC{QR?!2`jiXrZ_}6fICJ6ff`n9LXM;rTzbY|L?or@A@{}%*_4FJmYg_=FB+<*aRF0 z?gPa(!7tDh@B=0xExll70Aql;z$#!ba1nR``~*L`0;~%G51W)z;WOY zz;-jn37{nq4kQDkfO$Xxa0Yk=*lj^tfCfNYAPk5F1^^R)g}?^j5O5WE4(PU`-T@b& zBhVAb0LB9IfVIG0;2Q7(aNLIZC*TQm2I7H1z*oQuU?*@EcmR9=%5BFy8Snx+1AT!0 zz!+dQ@B^>~I1F3{UI6wx&~AZdfDaG_qyZy=8Nf1NJ8&Gh3%muKccQHUUO*7g8|V*= z0pzyM$Zun^b?{07_t-U8)zV@&}VfEXYH7zZo_3V>t4 z9e~?|@&uX#!9YAP1o#U00oVnDTOb-p2fhFn0R_Mb;67k;2-ji2 z6$k`kfuX=GU=47Dfd29jaB|0Z3ET%~`zywGpfwN;WC9a`Wx#IW0`L@YIE*p|S^-^v zWMCvP2UrdK0$c)~0=gs63A6;d04czDUj&fwm5K0G)uoz(8OUuo&0`90hIyuK=f$=;MGV5DfGM1^^R) zMZgB&SKum82qzxuoXB7JOoNyMcDza zfFIBU$OI+=i-FC+Y2bI@CE$1seGBjaIsqnNATR-#53B+X0XKn{K-ufaD-i6CIT_3t zAPblTEC==g7l6lr!wt+wfObFxkPM6j<^t=1-+;S-%}t~kXaR%)$-rpfTc7|q1^fv( z{EqesbO3q)xxh5wM_@m219%5izJ;~}gaZA5alm3=2XG3w2fPQW-o}^$L;{(>Bw#tP z8@LD*0=hfs(|{}B3&a5Fz!+d5umv~@+yVXuD&0jtK-sv$oCI?X;1Bz8n1w(M59k4s zfJs0sWNTo44s#xG8uraF&jN*j^F8!^a8;V4ufgsQc)=b63rd#1 znF)LiYy)lqPVG>3KrdhnumU&&6aqEcqm2Nmz}LVw;4;t%y57OmcYqv71-=Hh0k;6B zj#wkWPcNW9FbSOeGAOuJRnj_q3nDc>r;3#kxuzP~*4bTDT3FHD( zftA27z!l&vQ1vPL5fBYz1Ji-kKos;21m**~fLnmhfOZUo13ADPU>k59u=PfL0KvdO z;CtXW@D6C`1AV|iU_P)HcnDPR#dREr2POd|(V2Y|yf%#8tGAQl)7w1vDcFa}rw%m;S_<`bYoAo?V*8Qe+WAz=F)V;ax` z2nBjUuDZSUkIn>y`}R#fAy~s&)Un1oM?Q)*BBX$7Z^ux}VkO^_c` zOOPK^Nsu2)M=)DQFk45kLI+w0Jw&MNduSe7l5Zbcnr|Rh=tzbdF9sLURsK}Bm(kxp zJzZ9W)PjY#8puaEYQtLAT|9}Xe6Sb~oymhDE3PvA0sLc4@=D_wMa2ZQ@^m%Qvs9gA z0r3K6c`FrOE78q2C^B3T9nWhSHxHSrqE}KVQf6V9eziJLBn$=NJ`A7T(0e`P#UMoH z6BgcGn=ZV&Th)OD-;6FS2pFAM5Jcl80UG_$21Q{@J{6ZZfy8*szqCVmV~1tnP)db& zby$;zg=-Q(`3O>W0zo5@>d{D$P@88|A<>M|X4HzC{82PPXPByG3T$8?Lt$VDLuGIX z!zW%M!PG!JO9^5SDo@~BY09*vhS64h3ymLYmGZtS6aiR9V_-J|cI5{)mrr*D ztsx99n88K(1q4OX7ueM;D$ql#G%~1%ay%B|BASr}q42cbFv71ZqZovX9nSPKs#%mV zTaYNDLwV{fh$8+mQI-ssKkM<4&}xJvv=$@DJ`!aZqNF$SuoFa2jnlh$tVyj!if1dW zmK8)Pt9BE$PgTkM~h~ z5g8!ASPQyB6&G-U^N!TU8SE>cR*L?@0yT+7E5~7Wb&Y_|dra&7D{{k{hq+~@FLNBOb^8Aa_ z)Sh{gpL@%6s1im_yw%52TdLIYa=w4d{0MJ|z(&tF%|6DnrS) zR)V+2G0I%>&k!L1w5Yq3B@;}c7)X;?DIN->5sFE(9u=idE0uz2^huHN!8B3?!`o>T z)hq>2^I~rJ*RWVRin0haLNQR7zv2~Y%0L>S7>KT2%#=~NX@r!Mz##u9`Q)Ekw7|-* ztUQa)B>6=|8RcWSoL3eJwD|f3`{7+f@{EI(Ub-fyrSfCRq#*Lkils345K0lH-zQX? zTPYHz5P@*S0aF5QR|7#Q0Gz{Iy42I242zu(QOA*s114%zj#=lim51 zTP1uc2rr#eZfb^v#b7lcy?RrYZhD7gu)$l^0E$?5`Qnmil~YloR6{aR!U*oJiic;T zHLtMbX+?<@slb!tmg+BJ@f^E~#bB<9EG$YJIxI>PR(hA7N~J{e7Yem*xlj{{Txc~m zV^>3Pw0wZzGskcAvvPu^ktQBALeQER0{o)TWFS#x2qga=Q7aLPVpim$h?M|Qq)7z$ z5F|mPP2@GIL|&tZIvSrDjiw@rMpuzUqfJm{rCcze805=nzCxt3^a2@g&A)Qg7NbyYpBAanZlFpc#uln1qGD0q36VtfA~*FL z^TZ?=f`bA=8M#N1(bL$L-Ye-MfntM0DUf$~xde5MXJFattP1d0HamoHsj@C)*C-{O z--KWUlx`a^M2u;_2j0hv94Q(Baq9g@;#8H)2h~@r;_~wW#klie$Ka!+Xeq7+n+*u*wfrr|#2|DosNW1qfm# zwUE#YwzcH}0V{XBe-xlqnKgmx4uzO7v;`{(Luv7I0#!?taw@(L+|qnS0joKNMtZn+ zrfpZFeEZYFDy~!(T2U$%T6;djB4Z4k79nH66@>iOrZ#Cj%}5*1GZH7L(QMer;;@=L zQKcqqxNo?d8^2~VYO^g9YPX5PJK-|mOLr6$Ign`8@?D~RgCdyT!7DN>`A0)!`UkJ{ zkDGShigQ2oZg_8lhKdUFQ7R;FEXL>^5oPG?C!a|0DpADV5ur?x^3JZ10N%Sb-_|s# zMoQ8|UyoMZfhL+Uc_JFcqn?`KT8likwLlWYx-l|3=rV#>n>k?#|kqinWztJp35)#ol!cRU)mIP3P!&uDxl8ApX zqGeQ)hvMILXjR0@sW;vU?ytBw$n`0eiBZ-W5lkX?Vc*Xo(;;DbCQ$*^C zm(P(U|J2P{{)uP$=f9PpEDX{g$bTb2%d@IU{PY9fbF6M)IOnC=fkH})XvGG(OrY4> zQ}B!s{7}J)S`et)H6j-Us&Wzp%BBepS4LcG)$L3sU_~tj()22MIJ}}xQNWN<=SE+| z=O?U4gl|)*g?s{8p#%Xt5YmXK*fR7inh&s4N+NbZp=cTDmuiWnvZ%Dw;b{G!ED2&1 zlQ(Mk;5406vrgkZYEDqeSWP_&+jOj80UfvN_D5ULa-B^V6U4M==ZFJA*z0%#hK zC5$FwArh4$)V@$&n#g4mZMNk?b?@QtS@3nh%Dxyf*wyAR;W%F97{lG36pbq&JI=;+4pkapaepnul65 zy_Z~-1W@vuDHN1{d%1e4EDE$|wn-plk)gdvppJvJf+tOk$t+K+wx5W@5Uwd9WLiDD z6@#PvRXIoJQA~G5k9^6gykhiGAFw9hMC0(XCKUp&JWDP4NAEyVm_Z;?-;$C-Sr4Q- zB`pO|9ekE(zjXcY+ph9*IvRYjlpU}+L~ zts;R}>!B=1dRr}6UZhH_6vRrwQV@0QQV@0QR8XuaBwnpY;u(5y2br>=N-F{g0){3* zpjCx$95OWtyjGFGtMznk?k&F%QL|%hKk9t+-o6H7V|6t9hxZsd=ffsd+2%E+2Tt1`yZ z+Q_2SeH8v!4Wx+16$v$?DFiERhk~K#v@L`L)>&30;ZgXcqB34#-KM;&jtUUgXI5y{ zO?%P1`kuX{MRm(wq!}wYiv+z=UC)#t?Gg_`&_2~yOHk0jV5I|I$|8VwNx%pLO_Ed- zOeRx@WQ3v5hI_kfA88kOdA;zTaK)Y+YFHMh#M0)yn#PW}s!j2}Td-+B(BvHW4pGp|ZYj3tF+4DEU>~qu@zK0V;T^c&#ca6iKb?)STgyl7R}f zl4?k_u^|%h+IYaLD+oiSxRpX*QIc;ykEv)4&UGy{%WPTS4gDlume$; z&nV6wV4o0=8wbftmZz{gpc;E5+D%oR67R0%BaDiByzm)ORPnL~A@JIB9z5@^J>tRh zba^&LD+UM)kGEH-^{dK)_lujmiiM|M zXy)6Ovhzr4AX3+a5J1gRtuo%MBPG(ROw~bo|I%Vl9S5U>^8OheRF-~aAC(d$bT)Mi zbTm!PsWwugf_(6O_F!Md?ZF_Q7R_Vu?db?i))jXKErO6p`AtD+p%99S7CF>Xm_Jhz z5=kvwDf01j#R+}1E^L#^t6at__Uh!ke5*~y%QGO*XkutN@~gImSDqxW@X8G@fyX^c zV>GVR@@LPK68ZFADUnawEfQ9$C>Es3N-QK{$3hZzEXa!$Z6sl9BMDm@njT*Y)}_`{ zLSfmOeIvbbgE`dKFGkjYg@V%D?iFZN*AqzAy;niv7Z}w&T;4lGJRunuDN-ZGx)q$Ztw z_?8BFQz5m{s4?Y?3na~;ktMa?fY4}T*QlV-K);9}`PGt7GB5KBjf#-J9V#RwD8`7x z9r6wOBF-ou#x1O(qNMOf`9y*D>!UdzBd3k>*KjEWnn*=OMoqkuKod1B={5R!Qkx}# z*60>!jb>c<<+VwKZkF%E`AipN^Ui~*6VQjp@;gpdT<5MsJCAuN$IQYNVj4`B(5 zR5FCBRRLd3nktfC|Hy|Y29Y57g`Y^&jC?&TP>MY_ky3bz2yW>`$&z2sBu+8>OQd2v zlSsvNfhW=a6fcV5NxWrKOJXIUCB5V$xu{S>xi{BP^e6`%^ii%ucm=8lHhGS}7Rcw3 z7FJ%o7FNDp#j|)6RMzHrif)ERdq+hWeB|S}BvN(~iIukVgsvm8k%1BN!JVgZLDbY0 zIBi|=B!-=?>hwXNtuLOm;#+xLl~Ms#Q$~E8(V9Y{rB#eN8LC?^yjt`lwKvt4PDG5R zwepNI|2(B^sXV33cMK*tssu{b3HD;y1n-2+7e$)9TV!UxrE>=8{90Bl>yyEM_18r4(cyb{&PPmxm; zC2=?|<>~7!&mqs!LktWWk5V#N%9fT!3E<$4Mm1=~-E1*B4F`XiZ^}BOm;>yCu>7KI zHRVkypp0mhuxdi^ZAG^>DNuo=Xp{@IrkVv>qny7>8>Uz>QZ|VW@Ks%zB|)$?f$H_h zlK%i-X0*sIUNbD8W)=k?i6#epnn=RbhR4I1A;2^JTZzDm_8>oP`SV4`PG+#RG%AlV zOZmm|W@Z|NJKU3Cth^QResNi2C|=UlPeUgd?hkBp@OzT0XUq0;zUIB)aHi7P5ma zScz8bgb1X&v4uP_F#&jb$f!+95wA{&AW$VkAOlpX5LiVT1d1Pujq+KboL3w{76h2Y zsCGGJyke`fh?mb0i%5BQDDKQtw>iiL3z$MUIIJ%~QB;ic9|Ptdr^%ZQ?VKqeY#^SOO;n_o@spY9Mh+|YRRWIo#=p?a^g9SPFioMbHsBj zpPF>SCnHD1s?*7HES;Km4WFuZ?L%)RLAR1ORf$t1ULqAbEu_3T@GL3`1F);CLS(c& z2Xfkq7DWq^`FCq>Er7h(WdRh0tl%|@)J=!?&9?}3mQbjg{D9MxC^&72g48C8NR~=% z*~6!YyC&^4c4)#AsY#PC%BXWhtTt6V%T(*Gtq0+uJWYIzC;0e+Wjw>j^R(3>v?OhM zAmhgpnmB3N8RO)e4{j^KuQCTbrA($k8I}7%VqjGT@?KR{#dE5fB96L)VzX0FNwi{8 zC8M?J(!8*Oe4|xr(gjYF22D4|{h(-do8&o7P;J|dq3slnKUTHlhK%;PO-eVj(u45L zHf>V{8yy;n*UI|&8s(D|p9n}qUfJj6Av6*(gtC0)Av6*(gsPn7LA0V^L%2^D?QR#J z=AzsvnFK1W^0CD<{2|85;Q9HEg4=BMt^i0MSq8HTml%Z;1`QNws(d=2!XiO zAs~Qvip08*p9wPpB9QW}!F)!9Br^n*2F39=Dh{lB7@CFEkXiuEY=MwF%{eJ~a`;u8 zS|P$Qc|^qI5xewU4N4137^&tI@7499&jBjm|4tO6r4Y?(D8w_`3DGztFYhxvg_{E! zPWhHT@`h7s^0Anx$Z$NIuO{jAnyjFT{HaO!lW&9-`BRhdCtv0WNkP+5#~T^WAcMm| zs$=GTs!84_R>MrS3|{iD*262On|G=*ko;@2hZMrUHjj#z>rl4o(LRH({P-Bp8lXTG zSs-yxs-c-W)xLrl3W-xH3=8)QMGwSLD4cv&G@v30+MrT`vqIQw$LkK|qp(CqXi1zT zWRVP?9`4HLU}7Tia;%W<=!ujF#nss&vO+5^`xf7{530BnK(l;V5`#WN2i)aLUXcrv z*Mz`fM^jerBB$`z)qq0~+S~O+Gj7)t&FJ$X^uj4cs==rZr+`syb%3#YVp9^SZ^ZC1 z(ajurjfG&kisQ(P4^&7J?PDKB5?T2aahfBBLImz8c-pnq2Ene6S`yU7ogN54bEX%L zDGEm^QamjnilSA87lV@okp?54YLH)>M3zx~qJ&X{k|ym1UX&=W%OXh!zvLw@qZK)m z@rt>f$kX8u6iK+O0A&(4s}j}WAz2s?t6@}UkYr)-{E?LusE#tp!r*xiD`D`Qlod%U zs}i(SYk{yGYE@*t7;u8sYAEXk;ffcS$Om;7Vd1XY{t*@~ztoEr6&5bP&WofWGQ{W? z6RtcBDU(G8gebhvnG{ zt;VD}RMf)@Z>&`9P4vL0(ur#+Q%xKNjZkq|hBlXv=)wFJm-6chJf}JM!L!0bLZ*{v zg?Wtn5-1m`u7$ivH6IteYp=~b&luWyo^^FL_yiimjP!n9)dAiRK@x5Vl9!6eTE0vm z%N_qsEbm}L4|=7B^0c&4gx6y#UVp8UcC#wQ4L#Lo$z?$yMA0hdml`QMwFs%avdO}! z%H4psVFbcIj?K`NMc&6GkvU0i#%Eh%fDPy`655DP(+F15qc?yl1$O1l|uO_rji&x7VIPOvFb-iiTlS?x_?Ba ze3>MrQXCy+txF}L_VN)aUVO)v3afa07MRQpON zk_O;aA&RZ2B2t|O-lu#JD)K2GMv6%6aTy}zv+g1ZK9gWYf-5akqPlR2nyd^0NT-!C z01_)h03=pM0MdpF8gq1jjPJ0T`j-TnDwYJA4krmTH4gzMt9<9jIK!wDabRf977F8n z6`{4xf;g@86-cZ!d5eURMzK|^$HJm8tXvljKg{MSN^z!!)p%uL8L5$lwJyc*qu5au z+ng*cqbtbbW%LPIScX(wT&O?iD#j~H(F_$AP??nP-qwV|Ub$kcLKak5(^!*Q9XG5G zNT^u$c;puz6dq^@?T&j<$~(Ubfnv+BNTPZdTM>^fZP|6Ah^83a!5`Ix|q%T3SC zHpg@L)$?vx&(OqmV7=6Vjaus?b4;<>dUJYC)*yY7DO;bMKERZk9IwyL$x2R7gfree zuqoFpDI?9?EH*beHNIJ1MpjC*03RQh<}O|?0+pQ=*DN+UJvS#gHM?1CLVUAq(%Llc ze;h8&oRw%sxO&;G^`^Kub9S~q);uU9Jsv5H*JmW?c@IdPIW8wTBVFIHUTSLn=*1 zu5G>S_FRG~HQUVPWaXN>0Dwh|RWXdw;aH$!np7@O1SfoE8HN%v{C8y`q%Z0?n-K}}c=3XA2c)`PG(2<#A zG{VS9Z=D^=LK7jjNlxNAnh*ExlTGK@`bpnS6rDM6m3fc;1;swKiN* zCKnj4Z)o!IVT3TpCvtwi0oqWB>A5ZgJh*zld8Etq#I#20)_T~n}ODwre*_VD`;KC?%VaP!kvd)E3Uc$`%L7TZSlzkZbN?0PyM3{(} z3(L-p&B-z$U15kb4wWB9m6V*BI*1EHu_vQ5hM5NpfU7dM#FII2kKl*QaM6BH)G>{rOCI)r+b+c~*Gu`Ry1%5Z z-M)`wp%p*Yc+wY!Fa+lVC3XGa{{JdU94e{%H~3HTXMa#Ams+CvpXm5l7_2sPL_R5Q8Z)Q=RZ8~(zgaMU05}_ti?J=O%g=Puam6@pHMn1ix8=CwFl`ot zN61I87kdfbnd9tWenNIV$JK%9MfQ#yHv)P(z>c7tFU%gqkKi~Xng8;a3%>&aB!&AN z<_OU~NaRV)NRcP|c-SY3erCX&CECA(>Fq4&aerM(XAtd8VQ(+my_3Y3 z*04_(?VhmDdLj538tkNV15fcTg?_SAI=_c~g&6OTF#SY7>qI;GSqpo<=%)bY0O%z> z`$RkW*$(?|(a&C){UGd8yvJde^q+(M20(gliFVTSJM4D>vi|`yuP^ElzZasN_(IrU ziGJR~^hKGFAA6*o?Bu5;>;WQQQM40Z1@?-)1f3ZRop?L(wZXdruyP)vop?{!eMLS% zv=iS6_NJW$J$jS}*@=$;-xVNxcbFysRxVz&6CVeAB0%vtS<}`WXbX zH0lvFH&V2dpQeRQx?kZY{>T!+PW%{fUZT#)qMi6juulWX{x!@tq95ByPQ0D?;;_#b z{Vam{0|1))S+tX%H8T5p*roQc4fcZo`Tq^3lrP;+PPzrCC*n_nCp+mm1G}S`udAY+ z_#3d_0m%P-(N6qB*q?~}^yf~zo%rYAUW)u1(N6q(*oQn8>ZlmT0vps5@pdqEq8-kn z-@3w5y7hoFWMzShKqa6WP#yRLpt`OD)CC#>jQ|&b`l}mEYL_iwQom~jllo#inAATF zFsaY_!K6OX2`2T2C^8Yg7fdS41c2IoI?P-^O5kmzZ6MsEfeFA&U>@)t@Ds2J*a=Af zrNyGOmelhrNqs{sV{%Nb>%}(`R&ksGtF<&*kYcwWRopL#HDMD(kBtNKKyzHKu-vpP z=(>974c684AuyNGIt1t&{;eiKqKbR-WI_f%= zgFm1(xVX}ex|+_8x`;B4x){hV!u=K8zrrn{5_mOwI5_GE68{ADaU~sf-vW<;9;F<0 zm7N508|;L^l^k_Xfx(p>bV9vAyaKy{H9#RS(92QRt>yn7UP0Fg=;T^C z>g4tjaIXOl0#AUX){eS+fI9A^HUc*gdKw1*JM8X^JXwK0Opt{`*9d_8EdsYjw5!7{ z3KinK4!LuP;J+ixOyD@cL9Px%=~Q!)+YA2x4amRRpQJ-B%e12JdKc?ykn2&~r~U`w z@?>G!!v1{(+ATo3mxMd&QUG;4#l$cdWwLs(OYvVsogC}ss9Vm1>bOyV13o=9uX(~#N2B)ou~xXYpmE7unOO2|x7+7cY;lT6}# zz}d-6;%-1sNtsF9LvW>JCahfX%B6M1WhR!_+#C3Ff>{oFDICq8SwCllr8G+>>9Ge# zaY!b~Yk?y@k_jtU5nNfBN!)+)bA>)C1IZ*^4ZxL_nZ&Vv^^i|Wr(`<7-VB_)UMO4# z=p&hwUy9EYTsfIZ^|c6LsVpQDRxU^kE1ASaikxH;*Bczwn`9D~1dh@tnN*f(;N&Lx z8z6F$N!)O7RL+t~ocuQ(a%s&;_53y5w639cKyLZ^n%vTQmE?pAXe+dik^FbZT4c7E z4&oNUE_W}1dl^7^Bz^KVEV*e-*c;_1>66yJMk@j(<@K3R)Agz_j&pr63^*gmEa?AI6$o&BFKLHvONQZpwPjXM> zoz|t2{x|R|?dy>IJ>1eB4!Na0Aj!Y9-y^x@`ys?}RWN=4)E6j?^1Un4cL4ivwB9AZ z1Zn?8a_6ExXs?XI5*(mQ+DoDE@_ig~OZzSqp4?9GFYRTKTiWN6ABogAr&~Pk&&B)SUB7TPNl5r8*({G$=TeHOjA}`9d1afDJ?eM)R1cgdu}=v0}cbg zUmZ^0Q;3X14#fi>dcJJ=+qO7vq34p*Oo=$dfwXh2TQ}zPM&kf%A!TGWGmRDlw^U`w^!&9Q}t0r6ht1kn4LejnX|GovRdPe zO@wzDD?|?bLSHPFR2p|tg2h2b(KnP{| zpROzQg1)LdZ|>Z=bp4@my6xKXZ2~Iy&Y^3@C%{-|Z(X@rL#ojnv>ouS!fdBkx7Svr zYtV3@tj@NW>y^4C=o<7E7&g4B-O|49_N4ngE=mbLqiha_jVnfxzlYMaX}h?W(+xIs zop}jQ8GfJIEVyH`p)9>GgX^G!E2pa(&e8Sd0}^1s4Lw7#DjZ#V-gm$~LD;6-RN&M4 z2nkqfSD(96qA^F;il-kiC*#U+wQb7ce}w;F!`Y0$++u_c-3sL1ekjfr>uAH-?y}+N z+V7vb1lR<^9m8=IczFlT1_?p*Tt&E_ei+W# z)PlP<$5rCxA2=K2(FTQ68SV>6z(^<>3IA2#e*57=aRbU^H&9iO+uuOJehUB9;6Cu- zLz(FazZR$t_xleYJ|TaNfEvJ+4<9;AhB*_c3ER;@GcRNQPEwy z#dPn{vsdpv#=h3&Lxz4nZ1{+gqehPzJMN3|Urv}fY4Vh*)24qlF zE?BteyTwbsU%G7hij_b7_|wm;RWe&govw{G9Ld++`q4<0`H^YN3X&z={)`0M4X z*Kgjwd;d2YyVPF(!~C0K<1lAPOiJ#TlA4ACU;VRi)^I@Hz(IqB{9Bj*Uy=V}SV<`V ze01Kn-a7o*DtWf6i_Vq%*k1)3?Vr;BwBoYAV$=TBUy+7lu3VMkvcF~^>w>qL7APLDrBEcm2pYtxD*t1N_s{f)>AmPiselDjk*;ispj;=oTTg`VH}Qu>qU}R zE~Nw~c10dbu}oa3ih_u%sb;KDIFOxV!U|JJsH9670{O>jS4k#?u)@;(HNljnk2RqH zE#(?-$}x$hY9WOLiFDD#S7dQ~yeO*dL20oWI8Q94fiDCX7b?wc>N$9#!6hTXg)gy> zHL&B4aUbvr?g!j;)K$5Md!c{fp5G(PgTb!=3jP3h6ZdWbx8EIgZ2|5++6`pmfhtdN zUjY~a?)WX-dj$^OcGUd=+=Jg}xLqGW#|=ka63lx*0qI73l&-!s$<<*>fgPU;x@@kT zJ!V}xOb{@xa}K*WXM42n6{}Dh(xUWNw*_sZMOC4s14%4{u_HAGv2zbGL zoGWXOS*k7xXbATjm{6b_4+O&f1mQ7x)I|XmxQe>p5xxoRIY4vB4r zCYAR%z#s012#-~Wt`C6Ov%`GE9|!v|pgr7|5kF?(x^$o^+}mJcm7$vggu?w!tp6@> zmqq?Zi}l|hZa2vHKtH9|1bhnjVwg6-NWcL1O~@%d-2u$<9ljFle-PZQ;65qVe=^*S z;9dul()%S41otz9r}~TrDss-cVm3nk=fd3r@?XXJH^W^I?jK-Md5s19;Qj;Qss4Kd zSWP&5Bi8@taJPf|qFDcFaJ#_01tztp$v_C)ZxEj9pV~}$z~TB z4&2LNlK;_w58QVUp6b6RfO2-2CD#8CxZA*eR;>RNxY4d1Ho~O#G!f_w_g@H4`RN8! zmeqeA+$|wLD%O7@+zsGf1(V|Y0tkTnPlTuPGy>?i4hzKk9}ag1xUY)!p8xOc#$ z_B0g;gZuA)=>NN+pX$FapojnOU~<3+pd;KjAgB6|0jj_~U9A6saC^ahLahHJxEsQ~ z7ADo#cpwn&rwC8=Z>|3y66-%6e(J*iN|@w-4B!j*eS{}{y?`2U&lT%`DBNw~z980r zD%_vJy&0wxFbN2T`!&K-eOl}P`^5T>g`e8+zZ7OMU=-jD_icoy`se{vgL|e}|AXOf z4fh$b{`;1BmBgs1xN1Jr{1 zTe1F!!QCG2D`Nep!`&3_?J!FNQ-Dyo-~U7Z{{{Lfy(ZvO_+J9k1{et#;Qk$QN>6v7 zD%>+v{r{9$|H+Uyf_yzpO7E9I5ZuoZp6b(D|356&zZrh&!T*misl3JlesDiPc&h*2 zKux&kiS_?E-0k4LB-Vc#+%9l$g;@%i41~b_7U8M>t@Zx{V*SU#PaXJQ4wL+k27KVY zi||zcJ%Q?Q&lc-{2;6PpJ}1_H3fxWL-UQPTmFt|T(&UQ9jWjh<2@^)pp>UK8H zW$o;^s&+QE73~aMO*@;8&UVGQDt0!-D%gF>)v&YCm$P%=s@d7-D%p+XIwI-LcEu2W zB*Isv@Kws%*;Duu741wEzOS>LErl;$!Oo4syOy&nMd6()+3gm>V;8F&4Jp_Ga^OmE zB{8pd#2nj+D~|oKV%QV2;rGGdh56ItrpQ0c|35m_FOInE5U)K_;DFd25o;NwsXTVS zs$&PL4%dY9;M#CLTqK8$X>K&Pg!_g2o#yQP&jx7}bWr+BA!JqVQ_c;0ekN`tx0|!E z8EJz_eQ_IGn-VrU8z&oQn<_SX8&{i-HhoC}trg^dWubxo%87sFkrMi=ApTXvt{we3 zb3sUlCA<_y@=Jay;jc3Os^G6G{;J`xI{s?luO|LF;;(4`L+9X7vZSM<6Mm)eD~(?n z{G7#KS@Bm+{FN7f6;!{9s$V75ud?b_~-`38q1b+7T>BOId z_$#UUIjVkCULX5WS$^zC<^13LsE+=dA6ih^a^=dGr)s3Cld4OqCUy0wtK%PvzuL!( zzk2l=|K+ddfBD17dh{hb^nN?^5<7l0r~uOmr~woM$^kSkRRc-@m4MPfEx-mS3pfB( z0s5;5lmco3#ewpGBTyZ%2Py;Bel)BQiiyD020A#TO8|u=;Ht|5R|Dvz@lyb<21pB@ zB@uzE4dTW*0};6TA#IkQ6GBb`f`KEzXTVQDD)11f0n7(_0hfWcz&2ng@D3;ji~_uY zJwR<>F%S#f1j+$l0TIASz#UizWC72BlE4I@6Ywk082AC`2mAq41HJ)z02hJQz!qRI z@CGOWj060E{Xl(S8IS4gYvi&HUs7in2|6eVV;6{3Z@54518v= zu7{ZoGaKe}n9pH4!gPc=5#~ggondx{c^Kwlm`z|df%zlMA7Q4zOo90T<^!13VOEDZ z59U0WJz@5Qc?sqvm~CLTfw>jtR+vLz4uSa==3AI_)wYNE1v}CmDgm{X?&DSX`GZyX}pw7iVs&j zOrsr2l(ciSbt+z}SZN!~i9hm_#$#z5md0Oc+@-OW##gMYP=3OFR;-3Gc5*0Joc{r^ zn}#yuP}UsEmqS@|C|`~n0W1P`0oMW6PaQvv{Zw)kC&fo`=>dwPBhVKZ0qg?kVlv`C zQ9xn;7k*SvRBlvO>1OO9$Kwqw*tN#t8=PgJ!xyww%JH`?`CA7?EFC_;QIs5$a7zI@ zt=YK=3CVHExX*w+Z#r$j#e%`!xDb$banmw!a)eGR;bj%HInFt?F0HEp&@*)nV7dbx zfKEUkAO(<~x3iYrS+4eZpP5SkxuuK4+^T!i?57s?%WSbU?*5XQ@eAC?Un>25!R0}< z?w`3n{=&)GO@cQ%Y#+LIn7vEE-RU)VPK$TmRP&jBO~1hYo1b4b>=^U;>5J7K+`5w1 zCI58cfw8AXcb$`3e%FeW_`$DZ-#23NrCkNj$ z^gWZ+KXLJiTgBT3oVM-!er&0eDfuOrzFCpqB6ZF>@3V)tUh4RI+fTozo_Ejfb$CUPp%j0x8|;P8PVn3!Ahp%JM#-Sd|GGk`mS?lZaG$F>GpyJ1;rZb#@iX! zU2xi8_rBxWFNS6`D;t~?^J7iZ?shH-8>bmA4=B<9lFc^#$vKUk&piHe?ArdHe#2ebrRip;#!t8D6?dnwOG*mf-BRPc zt9fiF7yInd%o3?XmfBR`U8oz?ZEu+u`!B39hu_~+?vH{U6Nir9{O(%KE3rW?7b`v= zdTNq6`1IQt)4GtOUGiJ!aNCyLblrN|u=HA|b2HDkOWS+m`?rN>PxZT>?DOtIdUOBr zi9a7N=zB5S#n$(B&Eg)$;F3Qa8d~Z~+x~XpKNyNNaCUawF;4Gvs9t_jxAkK)^bV&J zHZQzoI$HYm)jo3$U1(H$&ha%HR-8Lfx!wBiBTH>)+NRg`O+Tk@*`*&{@Mz=uo!>a! z+*tgZlWTKY1)TX~b>7KuE7recJG#>4>~fBAzmI7X|8@I*X{A>5=r`E$Sm|5eesGx4 zU=>$#?E?GHeP@(;a&n38i=<~Zwf^2yBDr_B*q4VB%_I7IrdGXMA|-u5_0xY}Z*uC( z9)mABAL(=@G2`0i*RLP%nBuczQ{^*L*7Uu%J9PG37kIHrsq?|rORoN_Q*qC}gKZ7JJnnlf`dZ?O$5YbX2JJ}ppS0d|xZ3E1 zZHrE3)bqTV6frZ;=}7Sa$E}+y6|3E>zFqW=He2>Jblkq~s~#Jg*!ElBYx#$Bd)$s4 z&!4#9!e=#CUG2GMPyD?4&*C1=U(zqP@N%E_-v?KpFL)8orSKfQLz@$|`4u>(+M&6o?ynszr?)1=&&+J#`!>?^hB=mB$Df?l8d1~^i*jJ}Mq?r7UrB)hvv*e;b zPnJ3tHQF|G&-&u6O!X6&zpT{vct}8U(51Ze_MQ5jSarF_*$WAd*E&9FbG~Kds%__1{X_dn#j)_Ask`-DAPes!I(K62TT4R!52k8hb#;@oeIx?PRhnRua2)4>Vr z3p$zh7OS4r`|Bndja%+;-06^%tx-~l){(K8*kmX z$8B-$^cr6_Ut~Y+?Y4!Lw@e;WdeGIC^}HUhYx`l)^Xwgg_xgQaeV?IimF0Cbfv0wDwesJ=~Z{0p-#KyDeuj9dfXXW&*5;lc(3E3OIA&{ zxw&vcl~0c>_vrh6TjSL?>i+!a@eUhYMweTdy3S$Tk97kN{ZTRUcq9K|Z+!r;9m5~HGgEhuFyx&NIOjRL#2uF@`|`P^W5!h9R&9czf6uKwlIGmY^SN*#wMVTm zmx{(=o=)>!syDb&gKJ-oo3lC6ZSxzB9XJz%o>0?~$FIw2BVAZ}`uNPi@-}=b&vqRqBJGL!l<%st^*3E72uyEaQuQ5Na zsaxZ-rxop6xcfJ*m7V8izu`t^;EUraT|7to56)ZHJ1+Fxo5N-9+&Fn8|H$jfW6oXg zRBqO4$2yZY9?V?y?U#nFWBhy9DQ=(YRc&vFif&^|mu~1iCoHk}%BW$x-VBN!c{n!s zlYL$z`xMrh^X>A|>o3o$_(OFr>UIyeuy=D~W6zzB9CWmD*o~mB!`_6?bU8QVbd4ji z{UsPRP6LW{M zw+1brwKQ|;SKsfd^Z3q%?Kiencz1kxsScwj)E~BP zdWX$*k7vHBcsRL@{~hnadGCAXrvrln2`0p z?hNYxE&J`UNk2WNc=sLt#V)UKuz#@UaEWz8C))#ayPbsJra%*tq>;55L=RTX-YRXrK+H8L1 z*t+eXz8xILjB6j!dRJR>c(HadmHT*Rd_KRW=Pwsq*sQG5e9X>nZtKs?bp0dcl=~H% zvL4fJr_^0Ob!EN3-5xhM)YGMYa7b*OAq^JQu08jTzT)$`pEleuu<<8Xw>0tZ`>s*{ zlIT*#`Is+y;k;IkIPv#>dnY&64qrv*3-&4 ze)G=c4!r#3u&|AthgZ^-`ux+_V?)2s88K)^E$@N9F0vi`{@49O)->Ig`i1YXw5xBt zGVV`%lb$**Kc(lxyne+Z+>%;&Jx|sRUme?_Vp?3nk4;QncHi%N`rI<}@7v?!w-m3P zFgf{pqW7CxiT@5?zP$TrKO+A8_UYQdz=bOF$tDlqz_$#!d z-|o7je0|-2Gi1k<>Dc&Akax{V6Me#yo<=1W^N4Q0Ew`J)*-c$1?Rpit^@r9GH!BPc zKQnAcmwT;l_P7?Q?>X*KLie>_d>_+%`h(uZ-!|&i!!M&xTC<;xBdWK!v8n&d>wg|w zd-KB5?B9E>Z+j=@!ryn@6ANzJl^T4@t5f~QW%RfH?7Cp_LsMbjN4IV^yLW2*qx%y) ze|)gLSMncE3d+AfaPq{v1*xSv7ffu^9+;YD3m+vmN`n~<7Z7=#?ow#uQ zwUeK|xN^I5%gg7TQqDb2Sb28i`NyY6u5&qK`+e+jkE4rD^vk?+s&}=zC!PQ9v#-I| z^Y;#Gd~ttJ$0`SobnUk1ZQGf@EFN`g_sn}`cdb|*a(Lmssi>(#2cMR8Jd|Vad&DPg z+;7!R?KfdzUt?sdtmFsy4hoV}AQ(vwn<F41KSoJ z`+3-cS>?Uve>dpOw{Co-;CZ_I%d?JHMK^ZxOjPF)R7ru;+Az8+qz2SFG^*d8Mo;8 z&6Tsa=vN%IP59w;`u9H$9r$2X=W>l!m-{K>=X(2p{;A5yr^}l?@K`n=I`?}+hfPcO zHhQ(_xlilwet180$+xq2EIyvSH~((c5*v0b@3`^H-$re6y7b$+HfzhQk1Z3lHrhOK zO;YW1TaAGgx0LuRvcPTr^vxS4T-`SMdX4QD`}ElPsQH{7)c?(i+X^Ngbok-V)%oSR z&5oVw{^V-Q%f^&?o4w9``?%qTeG|fTpT}R{o?-Ka&AEb|XFFXv-|v}6-nHvpo#SE_ zcB>lx#&zkv3Jaaz^ndk}_rYC5uKm3HK%$Q>E4O~e(cdzM|2(r|m9j2xH+|n>!SO0z zG`M%Hn)lS~#XsryuQ?PjSl52F`=Xu)r&P&LY*X?$_rs?yt@r5m#Y^pPPUzJ%47Y%RRplZPTEkpH&VqZ-ybbfg+ za7DYA3iDz*tf;ebT1~f8FTeY;-?0G|%B=YHryKUecZ})#ONo=2i~4M;T;opnf|Z4B zuT=~ldw0)?>m!CGmu_}=NJ?PdFN@2RI(#5$ZFZvrwx-}k1s7h-$?%=_;ncff;R%0M zZ+Wq6NQ2F#8+NqYxc~8*@0W~ss!?strIEwWCAOMA@MM$1Pts=;e_6jx!nAKjkMGcI z`lFZ`jiUPcZg8`I<#cUDNUbf$o-TWM?W@1PENJSVSb1JlvCIY!w+24xf3;cgA=eSF zFGb(=i<`fwL(1y|qfb>%^4y(OX2PJuEqmWu6@H^v#}84V_2%6BD|`IJRh1sMtn{km zDBEuvwBJ_ullz|<21d_aeeU|iU)S{VXtS~Vqdq5YN3R(c9&o1W!w;#SwuyD{|Kj4^ z`|bxvO_`E;dcmWHYhQPnX6$-vRBN}G)}tM!F29rR@riEtxKe4$TIYX%qvQ77Jn%&B={w!ZVB!hua!1@78q^Zw-01Vg_XeP+EJ)T(jV z>{$zYKYLo|wq4bfkiNsty_j+$_U?m?SB()<9QL%lpFjA5KbN%a({0E9aJx2sYS%bd z)9bUfZ5QQ1-92pMKvhU{;mKD_i~i{z#v)ekJ}484&m7 z)1#B?`(D0hcopAeP_x&~Yt1lRTw6bK=h<%_+~5Ct{iN^w9AisAscN4b{N0W&^V(kW zY%r$9+^=SZ|J}6d+|5z--(9`8pj`jnlkzIvXnwS*=gJ?0CY1HN)1kP2mFjD1fBJ``6Zaom*>aedVffkJ^?ylU|K)(8XaD?lZ^qf0 z-Ak_h?#8WJ6`qeAw4(F58RqFqF_O7%3EN%L1u0xkC_Gx>oX7($bdOvPyiv{sBmz2IV z-hI&Jg72@NxnFDc$qVBhHU>8twsz?Dy9F-x({|RJUUQRke7`mNXU{kH4;-_@aJAaS z)1RkZx%Hs%bbgo7r^X&ApE{>&e9DSl?_*yNo?t%ou!2pmu(%Sb7v7X<7dKf~>P4G$ z{lVa5=RRlp8g4C4?4Q-P_^lJ2ZBGZBEH(E1(vtZpE%H~q@m@D4_0rZuXMfuEx}*E~ z)ZhKC^~$|`w$!m7Pqgb^|AOmJU9NJi51#8XV&`#FrB62$=67Acx6ZLGGv^j;Us|SN zv4RCgyYagHP8Zg#b-Z7T(?l#r@abto@y8)LC(`+vFFEQt&e%s?S&W-!8 z9s6a8jrpG}+<9y1y@Jyo1MLqjF2lWUKFeXnlpCezR2kl{)K*swz@G}GGpp&Kk0|MYs}oO{1NYtkoP+nDxOnKNGB=ybV0NpctV&D(H= zd-U{m?+)G7==1vyExl)ddGghJKUoxxF1q~V-7D7LweEixT)Y0PDertR;MT}{`EUMF zRN#L8!*y?4-u@wJ?3yp1|LyB8H^2DhxVNm|UD@QJedibac)#=91%q#$cGd$UZksrw z|B6G&JDu|z=`S`mt-k89hD+AO&z_$-!|}?Omo)f0Z@7Kaf5!*)9T*rgZ2N`z?Z%86 zY5(QFUCkbO;;WW1*S8b<5Bt8`j`DX8jGnvkX!!;2Z0zI<&;9zFZ(ce4(iih5r|;QR z(&ND2cYg8yu)kg_?mMi*2K)EfYuk0-b5_f5-)h_}r=6u+X@+&8?||><<`u&Z^lme1 z?$NB_8z*ePZ{6(Tp#>LRG5X8Uoq0dB+mSTxnfIMtESH zYu67Q^S)nKcImeTqo!;;|FhC}ue^J7c-+CJ?{pbA)6xHD{p=C`q4rxpJ*R-lkc-*3H+_*1z)F zd(n2b&vx7A=kD)&b@RQ$K3q3+;+G@WIy({}cUX^ZtUgZ?~)+GH~GP*E6%0{yuu-juwyjtA^j)X5?!3HT{n|8#Zcn zZfg1i2eR7zvvpv@wSV|?#~d3uM0@|5e~!Q0X4BhGq|SRd*f7-gf~CbLlBdmi?~0ZC zC$wLCH2tA}Cg>v$XK&2d((JK*`>$yqpU}hh>!8V*n|idK@m+4})&)&wHJFq9zUQ^( zhYLPT-@7S2wB@YJ-anSpc;WJ=&YQFF^8q_djXLjclRc_p(39g1_WJa__Xp;_63TBf zb54hE<}FNqcK_~0-j8>zJm<*4iZB1I*gpTkLAwWxobdC-p4<)l@9Hsa>G{d$_B*>t z^9$3`{onqtdBzJvszxrK!~sCx?TxOuBbq+A!MxS4G@Z5dhZ~mfxa^wZD&L!F2j5!X zA^PXia|>D*Hd>qiNp{*B(Oyk{J25%y>K}%T%e$__gwl3t+3#H3sM%QSx!2s-y;t$y zcV^F7H(|(rzi;xDERb-USE8FY|Hs2N00SAx@q}>(!C46Ufrw4YqG9y z*k;^A+5Us;dyb6$J29)E-TedCj@w?b`;IRU{(N>h2LQ3%)8@Rj@Z4^1&uQ*_G34Ji z?fr}=EX@aIU6h{RuuYQ=B`uPZrw{9~sN>|^m6qNUDk3?9wojRozU9(I&5zx)E_wNj zuQyq^@26Z-v&tTA`tKez=(*1)^xD()V2=yD6_fisy1Vr=gLb6uYCUJxd2JWIf9Iv| zAD(9q?Ty|u`JW?QhHQE>KYQM&hkJ#tyXD+=hnqKQxYCi9JK~%ULs~9eKH<<)#o4be zo7ZgU2eYoZ>hJBvvEQR}UW!!hAGG)9qs>!_4}Ngg@@VCivkE$Nn74MaKbrRL@a;{? zI{ut>>)lo3Chi+Da>JI%{g3_GtI)GkwB=tUeu+c^3gB^S3 z_iDVPbz|p%F8@ot@)iHZhd$|Y>C59Txx{zz)y=MRuDa-t`(9}J#(_;24&U(axi|j3 z?Y!fQ^mEo+`I_sYoOw;!_fJXrPiuaD(cFm_OgwaZ`t4be9-MVmxr!;)cx~wmtU6lPm^oLuW!-vz5SP7UFpke zaa-dtt;eJuYqjo?&DZ|B?fL6&dihQN^K&9&`u%eJp-b*s{ouYEo*Os+iquDX_Gmfw zg1;Vo`0E!sPkv(G_{Y1y-QzJnJ2+|Qpvxu%#x5J*@sjxyt)WjJ-TG-&e(|;82PS9E z7@c0Re^f>A*O40v^GA$3a(7;vJI%xYNxyN>TaP>Lf1pW+`&zy+)c5O0J%_xud)MH> zAN)ASB+-)!B1LY39_lk1{^HKGSn{zlS<@{rQ?sPtLwL_pdx}?;Fg+`aWEITc3BnY1FGM zGW*V3UVq;^DdmTr8z+C=|A(6o-|g;o;I5&66!u#-W6i+d=d~Sh^$E*8qdWJ%_s#1b zICx{TKE&b0!?z4})yrj<` zzGL?tzV3%Zzy2}vtKZ*fH|w|I13suauP9#m#g`xd_iX+Wy|;a3#YL`GC-zKiR=%X9 zW7&Y!5C3EOHT&;P1&_z4{qM@ZvihELtWm~-f48@M<@lUuDoT6kpY0t#(6{HkoBDoR z`9$(}xBYnY{xSa+A6U2a$?yNY?8|*Ob^mGi$fP~rtQ>lD*U>$1f8BcRl<1&k)-OVz z-|*GX{t;iMT{LjZJ^#5%7B9GJ>$lfT{!!Yac5Hs8{fUphn)-6&oWsv-zx}Nh zpFXu^>9$WE-TI01oWFKtHXQp|;RBs^M!ve}bMw2c=e@Pi6MUd@+|w;PUOWHS78fpj z?Y70w4$gh!nah9sdqFI)WohxpWlJW%xpQ&)c?(~xnDEk~4WrYZ8)rN3g*NYZd;Xs< z9-H&TjoR$)_cok+*1>z8+WF-0S%DXiJlXO1cTZTmPMx{6`G$h$2hW_^FZsj3CE=f^ z?EChMY4dmFPVf2J{WC6TdQ0Kg51zI1hiGVp`@LshA8P&ljb)?CSN}eK(py)b+x^Ya ztIl2Z=GH5g|23uQYd8FU-Li*!Kl1839Wp{?SC_nWOQ(NcnN;=q%Nw74aYM;N(e?HV ze|g)peB(P)KYL>BXWu2QJA2KoYr392DE#D*-tX_eJny|G+4mOpDz(2mZ*iOA{j=78 zkQyuau>U>ZZd}y%59$9!#lwcY-e}vC=WclG&!+}G+xMpZ@$0V`dGEd#cc;I*WqpgI zk2!kG8vQ|R@NNzOx_$Fu(cdHXd>=b7?uLH%yZU%9?7Q^vt6D{cYiUZyRb^uiJQ~?H z?BnHcKK!7g(`TQLzVewjANRLDr)iT8%icLLqiJ->MLQ2)_3}ecbqsHHuX0T6@=56W zw{B}XciY{KZymN_?F>`&I&b>$XOG;QH2tpl5C8k=*%?C$XMFMfEwS}GpX$+n+zl-{ z{C3DycxS(HKYISyb5>c;5A)(J%U;TUc4wJ%A&h+njC2V#in1T51$-}J-Yq6 zR-cjW=?{?5Pj9@!zZ_^X1C z%Rg$Dcfo{NXFqso;7!{H9Q3ZfBUks79$s|C>L+JDbpB08&$mwXloj80)r*(?dTH8o zy~k%f8QcBV4FkfT{&CmaxAy+&i+j3wCx`VT7k)kH*30t0osrdO+x5Tx;-5QrYKuRX z>@yZGO}4@AK5<-<03? z{D>vih8zHV*x;i*Z>}HJu8E^juZthN-204t>}+v4QKsovZ)*^r25)=)3H%%a1l)*rn>tn^$%|=bjyp-2SKi^S_?B ze_!U6a|V}X94^0ZLeGr(m$dD5<(hAQfBu^f*OhPm)!F%_*%!u>2fdUtykYwndTyL{ zRlDyNKKIk^OXZ9J@Ul5l28Bq z=B|ss8GZ1jHI4sCx#Upy6%(eMw|)5TH^wEeeRtDK0~$=;dh_Cy{{_;TJoi((P&?<` z)SjaXhn~Ouwr|I5YBhR)s|8=Z+qIE(N_fr?rc}?5jp;Yh3bpYnUARG_lZ~^pt zO7&vs%_!CPL3hVeJ?(1PiFD8d{m=(z!boTICA?dyUJ2vgQa$$?zE#|_R1ZMcouzsZ z`r#@V?^UYrfq_1ydP+;ahXXZe>RYO3Lk}DbgD?nVuvp^zmFhd71`k0$OL4AfgX&GXmqI_fpNG?!pD$5 z^h0?GCJ0^7HMUge@AaCZ50~nbU<}TNp+`#fA{ZD)Iv9p7e(vNRU#e$94dy~G91KHn z8uU*n)x*#l%U}%dg5hV$m!D1f7U35#_5$q* zy|0ijj4UUfpOu+b(vC2+igLmjoDE%X;%5@ShW6&?M=qEGeJ~rw;8++~%Y9)Gu7@F5 z0>f|@jKD)M3Xj1UwDR(kwvPS)gU|~jFb|s6&9127kc;b0gkrX67n zE`sh4C?E8}A{d6-Bzz<71vOYE;n2;`K*AqVUl@fx7>9o7i7e))V7cgdSDcKVGR0U9L8Z&eg>m$rC!kYG53doZL~M^enR_6 zI4psFxC_Q0FS?q7pJHF=+D`dJhSOjeE`X*T__c(8hF^>PIql5P&b%-UMqnX;|2ttH$e$}V`Tu3SgkiV}no6-J48UVB3R5z%)A3T> zBP_%IFj`4HU>x!St|{8!xbA^&^Krc&^g%xi!JyD`Twf2PumpN-$Mw`K?$`LZJ{xLq z84SZcFa{69I4pxM=W*TDh5Vr#dSE*A!ffb+{h%M_!5|F45DdaF48aHt!x-EKO-aY~ z7<9uj=z*?m@`Ej42z|-a21ThV=$0RdAgDx%!IzPsW%M6nJ@|$!8lw2U9RJL z5!B!|=!JWrA0CDwSO%jor5pD>=eV8*HRyp+I2iiRC4cBT54*xJjKLU;OL)q0ofnEt z0hk8kFk9p%q=WABxj*z@fIbXDYYyQ}kL#_V2eyZPm;<9QU*rq1Ck(@4Xu62>&;@ys z+T?~Vs6jXMKn;dqKj><9T%QEpa5nV9RnP~Ep&#ymu2k#*qfom8`4ZXz`r&vOhKr#4 zQtT<=?&JC)7=o41cNz8WL3_h&=)RotLr-(;1x;zk^?lF_D`5<_@M5Pcs4w(g$$g;f zD*RGpSR(N-E^-U}w;~+bi(cE~x);V_9*o_1Twe@b?WiBrU7W>kD8Q9)`Xg>fH|+`k?oA{0#cZLN_di zT0hDGJ+KVMVa@=`(;t6<9=HI8U=eiRjU6O@z;QikAa;QojKN&!8c2VJJ{W+(duc!D z_A$PQ3{&snJ}?t{@1wn;AI^lPL5ye6J(O`o;^ATFgJm#0oO<0$xyRBzF!nJ0)JHiU zp&T#-JunQtFg_l;L)QfC1vMCkvB&Uxi4Rbo`>5v>(!oH%aeb`Fg_IlmVTpvpT`&xf zz!E&xF3worT<9$Q`lF+ zVH|3Zm+?*Bd6W@bvkU!k8uZ5j50VYm&tR?>bF53R$9hbhnl)1VKwg{If>8yJVnVCW6(2BWJO zkMhuelYRyxFbGYnu@7{?Vi<<5;lx8X)ZW5Q&=37E00S@tgD@7Re?s3H(v2WJ)L>*i z{saRXC_mKRrraZuVH$M5Lp@;>`eE!n> zq4q7~05p9^`TfN2!!9uX1NRa6N5(th&!iti`~FQlbp6A9VDuRN0Yjy<(}Uz&h9AIq z!!msb^ffNikHLVmOmFcJ`6QL;17HM>hn{5gpcn3gK6nKBVI>T}q_Nx=ros?x1;emC zjKdu0I-7i94Z5x&{|V#=vtbDKgE2T>!dsTU1q)FrhQ=$7-+7kv~E)2u565fIO!VoNhF}O>@J!SeK=!3^3 z9=aaGZW(2IIt+Fx(}N;sm+3_?(v^Bc{;-vvHktcCAM|vmo-o#%e4x7z^?ICm*k0JT zOwWVid#MkM-dCnaVeo$PgE5#Apnik7FO0zf&^;7Cg1$Wb1A2yIH;IQyQ)uTA^aB`z zxk5j7gZ?pP`ZDNx5WB(nLzGLx$6}|cCX;C*c7d)*lp6-&Ht2Z_`@#@RD&W3T%Jjj| zI~6;?_;l_MBQvnmG&qy`!Qd0rPvmX1FZ6v&drs$m2e3Pg!V=-ZGCeNgzfr$J?(;kK zgMlO17e@b}e?iZm`0otDp$1)X{1Lj#DJS&9n8+2>eQy7fu!qm}Ee zU=X&4rZ(kz4)ot#u8)U-PUU)3!aJis8#xPo=k$}*hoIKIT$fKo z1Yj!|hhFH(p}a5%7eUjV<@z2Nh3Rv#U$1gKA4YP^^<~i2r(BQ0VBc~*=_%~fA3f+9 zP_Fx+{~qck^1b9E@xF516eQpK%XJU*!v(^Tln+My<$BY3+z+;ZF_;cbW6Jex=!X5E z2j;;j48nDfP=6`MxN^N1IWVDIPkEa1PNZJY{U~;Z0k{}?CUHL)gfWSqT&}0iM<05G zkCQ+22FmpnFb<1gcuKjx4+aX*UqJflv?FvCVlU`}>tPh`gWegG>lyT(pdK(ft6U!p zeNUnfO|#4O9ncHoFa%Q;Ql2^J!!R5GwYlYb07l?47=y*o^c3l#2kwJ@SO()T^;z-> zmg{Yy1~XxNUb*gvo@cNFjKOU%{4D;ki1NXv(7g!z!x+qg-o@qmY>9_O62AmLf*yEG zeScyX2|tQ|zDRhZ3f(7cT%k{c zakv2boE3T)`e8)E;Ss1MRp?1e2#2j;91e!2o2-U#33&D)gDq-M>OFfkAi}n(n6F zuaF+5!4PZ@<1iO`22d{;gwtRQE{58`3Vl5cz#T9O4?*`mln?r0$}-9UTS3>oloJN- zuh5T4ICQ;={@@C|E!1EpjKh5BA5x(&lK7z&`Znl+dth*Qg>HR~`@s|#hiT9=g7gv& z^I>=->7gs1azYK3NH{zUD*bBO06l%~k8GnF&I7#Hk@gI?46lwwN1H&-wb;74q=;L7=hM_hUJ?Mpp zB_8sFaZ?z&p=(-&o(+RAA9|)!PYItv{a^qdhLM@H<0{fE!7pGWg#Sa=GW-H+Ve0)R z{Q;&!{~G)qMqmJj*J3xQt*_Ac!RXuAeKqwhqCH{wUHk(Ei?J7sd_cLO_oE8E491}Q zE#wmV35;*S4$!leazgE6$^paQ&~9P$_fQ`g+>75s)3?|gdcGq+7}-~$d)JT;^g-|U z_#^b~$KRoLfO^9aY`T_wVimdvntrIzS3nmmf?l`>hJVDa>&WlI6S@a#7oE_(FbF3> zmv%xghCUdF?lvd%w(BWJhZFi(81kIZx4~$}3Ej1U^c{&8b~>T^U=U7&5x4-x;WFsX zJfW|L9#{f>a2E{1LlU1wes9x`FdfFTPw3;JzbomX*6oBIg`WFP=q=vCZnID5i(q^X z<$>Y3C-l@J^n)k#Z0MSILifWkoDIECbAK3xF$rIILU+FlpQYT;^&EOI@I3J%FQy#t zQBLTCuB9jRkjO7{Kj?>hU;rM5L0AUE(D6R?dF6!O3PxcrjKje&w2b?}oL5iine?+S zUZbAUuU1e#iH9Z7wG#UaUniep@`ZlreFHrhgu9^s%@cac2jmaiL(l3H`T!V#lc4q% z_Jbj~1De7o^kXovhIZSC{(9OK`Zt`=7YpC!{xJB?3Elc3`b8)79O#377=w$U>s|Z= zy5FPyUiS$!`nAgRNi`wuh!TLf4=Mv!NIIpdb2S2nJ!i zf_$Lo1bziwmDq6`^@N$wuhVZ~04{(*xD3YN4v9Ba>U`XU7wIbXR!}on>iuBIQmF@^ z-&&~`!#IpVpRH0)`V@P?bm+5J>H}a9=EE?Y2IFuU)Et%iHt1_qsi$ry-^P`CE_697 z^|8{}}Jw$OEM zrS22?{7QW`j9*x(7eVdfO8t<;Us9Q|H_vr^B7L6{G< z&XxKq7=Tge%EE5D$RDhqiF$pHy7eLo5ln46ZHW-Cv626T4>?a(0 zU<~HL(5sXKYOi5G=z~!hgfVDZj-MVtA7;bA3i^R?AAS$xKTy6H^3SA)u3sq^G##N_ z2a*58PA~?8Fn*Nwgzh-$p%)&5L1_Jf^1>7tE5i?Apn`NzJ3%@a{11PJaoF@n^sQBT zCN$Zr^l4CQSf#Im9!Hga4EmC*^tOkHKf6kw1YNEwy%@&NtI}KiguPR$^c)yHpLpoG zph^!3n^x&NU=SXLVaP|Lc+OX)yI>r)fUXOx^mOQfUg(E;FbqR5coF4*vD7ME`vrSn zOgUlDU8R@6Fx&;>uo8MMBfrDw!LiVDd6m8%#^Et&YF?#Vf91X~1$tpR3_vf8rd8?V zVGPcMakvQjui$<#bQR_Jjr&3mj6g38wxIsddv%q*Ok`Lr@o)z;T~nnWf*x2Y;n4Ft z`LwLk12EPKedumorSF5vQV#NS9hf08duhmm$wyhup=t)zpd_N0Su7=!WuRq2kS@HXrL zy&bCbTx>5HKcmcU>}m7W?WeMjm8-EaW(!SOH#gV5E9c9L+o2ZmuKjKkEwuv;eS zp{on|!x$`q;p{5?2#mr?80=o9xBnZx9P9w2cVH*z?uDQKgMJ_E0X_ZjOBlS1b~r|T z2M`Wj_h1hgy0=Pq|4VwPL6;9b=ovwK!5|F6@JQMX1|A{*QaG+k_X{Uh>Dyp*5`K0Z zy~nW+bWI^WjKUz)3P=y#(r`|Wiapt?Nv_x zFdJ&C@e}BSizFNtLGL^0!%z|ZwF12ltMu8>8^J$?Teh9!9^%4lo8oFdW1G zB^;K)I86DEbia`=bRD5Q(ESJY5E<8!|M*KjlN?D_>&ynmx0{+0rafv4&dF}%O#UtApKGzzu@kEJ42hS!&1{^UM9Ah0^6cvDUQ6oa z>?YFYWJdU%*1Kj{3T)Za&E~0;YRku4H+OR0pSbGmRDX-8 zDRzjxXq7MbO8xp$WEHLvZd!6`xZER~a5v$(7_3vWx5o_2!0F~fYk|%DQX=DQr}@*9 z_h?U=Nu&vctd7UYo7zk_Q@G;WSFMhf_S)&uO{DLf9B5#%Tk1*Q+1W=zHz&KWQc}jpSZhnNHH-F>c21!V;Ww;~ z^;~1GOiEH{&7NVwV3SVP!0-zXy8cyG`AW6=)|VGKik$F^@#uGU_DZ%&zWKyyZ(8{~ z^ryGy-LzRJ+B1vx?BW#PS|nvyZFNkA)VcuQa9gg$77psaxwF%JZ{iZO&Q4r*r~KlZ zyGY|%W0kK6OWQp}89F-eOtz*V$B7FP*UE^?lXjIf^6BIV;c{=%^d?QVlUA2qXc5f1#U%?j&?W=!%a?*=8e0kkh!P48H2JEh9Wm_~~V9 zi(Z5{ZJpJzf$M5Jna3mw*Ui}}ag`~ZM3pngsp?xMd6Mn{<6aY~Z+9nm6kDWV6W@BP zV~7#=V0E0-Pa`f$Tt3(8esouirLxX+4wb9TG7^Y?4?x$m!Rjb8+A!hYC;gLtVmTo0 zjmw|r-fA3KEa{7^j-Mzi_nL0*c$Te8fyMHlx$zc;s?F8oO$mBhu~oiYE_UlN!`!XV zQeZVpBht6K;1(*sBj`oYTd4G8T*@vqn|q?Qb#u1!0W~hkc$i|N{vTN7tJ#vD8mn3m z79eb_5!Tg6d$%N2V`w(pb zxFB(Zk!#xX9>c!U-eI}VhgQe)M*IvJGYT!(w7^PMW*Wdn2-b8kSXe*qD)~yf!=wxS zKc@4N&du23iC7(1lU}uf8l!5rq0f?C{}5$~TI!B5Y2-PUJpEg&j*A!vvXY|>y38=& z!6&o|Esq%u){#QH(OZmOaI0abYFjW&J37(bWULY!N6?9)BX-4&ywYbR?HH-8{om zXf-dQ;4+P5IHix|iryzyM+fTHDcMtd{51cX(99-J@wEWDzE7?4#dh%p)i)Oq7A9;M z=~dY+LmJ2kBV$Hb^4?*UFRd#%!i9z`J|_MYMfM_(soUo|$($m6&TX#0&q>)`4)XY% zvA?G5S<}tkR3&F6imv*Tl%+ko!Kl?CE-7hqkVDApxuz~T(h0L?n5+9?j&q#qkIEm% zqwD*^>ezppt}GLjA)I|67M7aQ{s*G&Jlyj`eI>Mp%XD-10^6O+!2J`-nfQj> zdoj9^J*SQzEeKyvc#QDb>V8`03`>rzG~|Btf8~g(jYKzwu759cF8&~8tDeZS3v9Tz z(v_~H>Y3D-dVgnCui;nsH@`9TD8Fn)ytdCOe_cY_m+r*e-ZR-MeIuK=0C6%8aUaT} z>cskIY)z4*Jbv^%-&-B;)%X{x%3S8G8b$O(cQLxA16D_W8YU|_(%_Eij1#tA%2rHl zs_@c}M0XpyzC%_=o~oxWbGn%tvTW%(!}54SRgJMy)??^Kf3`YWD_t-Bv!BtAA4zC- za`HV{Y$AsF)#~`Sdj6?1_IWMm)Hn8JIxV-WK6csyi)G70$tgJCDa$V9b2H^$e^})& zDJXdnvX+o#9A1I!L;jj;+NPelR5Q=5XQkK0Ig0u9^g9~~nkEvx_UOfrS{-bERGSyr`Xt7~jWs53MciP~i(4Jb484T0 zagF;DYMIV^jn<^j=qx}#^q1AK!_b#;w$Q4UpXLFH6s#$0u2h+~k;ebG)v?M*lWP=& zd)$-IqfKRejHBoNhyHNJHuYP+Jj3{yOM2}r%2sN13}>9JuN~;q8J33iFKR5d`kg|` zHIsZ@|5+XP(FQ7C_CmGy0$IuN29_1|<(uhrlYSfN17@4!X4*{p3hSgh3YCGkGVU33 z!x3~M7Mmk<#<~X^Se~r!9@$PA2U{iMgAHx+*L%cYG7ITrmeFbnq{fdN;zPu@B3_Lj ztkJEktZ+Z8*e;*=DDm+#-rr-HR^RQr)Y-0dV!I;MQhlX_d?QYq`g`W$KfB~U$eoOG z%rIxwtdX)=RY%WM3_L0kXfAybL)| zOJ0v0M3(wXyObb@kQ4PSFw2gILUhCKGBzF}K2CgZu2s9xc=?G{P8a80%w#AMCv%R= zMcI;V@)vQaThb7Tknk3S2MBL#g!`+*J%mRHZ*GLskBvI@BRozx-9*(f57~6KP5wfV z8n4GAyO5tmPLxSIxwd1RQHAQFe0v$XA#@)By> z^&(F4bMr3^*^g{j^MTtt!>qPfTS=p~SCS?hoxlY)F{83~KjaYdEeSafIaW&^kL+%0 zQ)>yS*GyzT@-VI`kFo!j@q<}g@?Rn8iI+8+l&c6ij{LCFPhkzkWY09!jYUwGMCWTo zTuk!4(B?R%^xR$5iZr{>($6S-rqjH{SZA`xm;1PAaQ{U%{^FZa4>xi!AxnN5au|68 z*UE2m$q3sHYfK-?aP|~*arRUlO6ui9-`&jSc&}QY%9+<1i%0330perC&obf*Wj|+} zaZNpC+>x@aLf4;a__+9FF>(O;dalWKl=!6Fa~I(e!fW?;a}Q%7C+Ut6@4mQhx+Eff zgx8nOOS)FXM~J_SbrW^3XAR=9jHz$@&TyJvsAm--bqbJY{8D2q6FDdablc=OMzu!> z*@Z0QhO~Pa*^NA%YxaBD1y<#bG8`ED2ExS#d(aD`cbn348+&~$v~{zQPZ{xX;?ru@ zIQPhsfdxZfaxw;SX&*O^;J)1ExYW=yoUFjs6F1{TMJaM(XyloLuBW*zu@CU($h^Qw zBm2WC3Dqu6spDAmTxo_ci#$#4k&xw{3y?MB!CYhKT0YU=I3{Cfzm+(#M+Dsvx+}Og z_N0lWkD3Ie9vz*ccNjhI6*fme>0uAqnb8l_iV7{Mghrg}e8v#;9_E^R&*0px`h1~t zvSuD~>fC9xQ6_1;R~lobj9|on?h5b@LM!A#O^-?$gcQ85T}tF?>ypsxUTDdhVSZ2?Le1BQh<9CW za|~DU8tps;{W^+{tqjbvD~k)`O?d0bQJyht%9~+M+!}`A(R8{ny##uNo>p zk03{p+Ztt4=cM_@@S^6~81XL6=I|NuwS1}1DZV6alSJeB(Y>H%Uxb~EbKhD!BiaPr zbaaE)+Z=xx`PMTQXzWGnshphF);W1L>NZ>Qyul`a-Brz_i;*M9YtA^{crBs&rcs=^ zJ$dXSeW0Dq(FR{rZBS?b=CL%cFFkt&u}A8K-2WzU#iysr_K4D)mi>b(#Ja39DC1LR-a`~ePzvd;>30Klxj>8 zUyex~GHmjfElqCz#gU`P?{LkW!F-q_)4A-c)WTK9ij<3JhmOnxl*KqRQ0H6)w(9P} z>4Mm&J$ms@Hb>CN%NS!HW;&Ji%3Z3Ps&j|{@p6PSw)7EQ=K{++ia(0tQhI^4R4lOM;@UJo^Hk(1AkC`MOK<}HYDc= z(vB_;(!%IWIHjB?`)#LWKenpl*UArYH-0b6nBld_CltiKJlIgjhsyT(#QBNKB(D1Y z6B5hV>NC$EIuUfn8tF3&Ewm43*&NN&K1QEkkB+COP5w%!+{3W@L}PA~cG*RIkoYHR z-Dh}WMa|=q#7e+ehsz-1zSHI?GxF+JXp!5=20~38=H-dQw*c|2M7I~?sP#XQk7SgUI90*!Mjat8(kpx<(f#iA_YyAU zl5%>HeaLcuk$uR1WR6}`dHl!$R`PL+oKcU`jm2+y@}`2vf%FG zly=h4b&s$mo-J$UY#c$_Ih$}l;WhhT^p?^sDs8BS&k=Gm+!SY|T{sB4pRd zlliSc){vVMFFsg=>_fhSYt^3jGYlot?jkN&OZO0Rq#j*2`X&aUIB_p<$q>o9nbkA% z&D6wvBRXm51oO|VBR0%NM|;2~KSh%A)ZRCkXC)_X?vi*QDY|3Pjs9Qgid{qK`bQb{ z7CDR@LZ(V4H~%7%7xECUDSxKg)O4o;-HZx|&LMO>qtC3<9vv}k7@a9xQ~r9^vmP@` znmU8641SV6oAe&P&GF3tPx=SWkUotxGf5vKedh*J4^P)Zt2!oUTl68$Dtna9P8WJ% z^t1=rk8+Jat9?=lVP3+f8ezt>X<2#514;88YM&&wJ0kZ$ui6JIkxdU7KEyO?N}?bd za(}LsPjLftuF;p>gta0*NW9@ITH+ZvBRMx>$*lU4SMnHZtbb1W0WDKt9gZ6iq@GKw zebpp%{pfZ#?l)cbnlmhFt)-q-K7QJCr`n%15z<&lBXR^eT1$>1$B?VX-xzWnSLur6qf`wtop&lr8GhB2j^#sdkkZp~6K7uC65T@GyFEHlbYvV6 z`{f|VkXv%C?8ol#e#3l9Kc9HlBPYu~3E7P-WtDz08(Bksk!u;()FVV5WAO~D<}rq> z6WbDBgl-hwVy;ix8QaNw0Gj!!)7}G6bF>@XIO&4pYz_~8rphR7{3pY7Cv}Xa`c%r5 z3aM4g!h+=R=6x4>ySyzHdRBF4)^rxiLebW$j@vbj13NZ6cZ zCI>>NoCI`q@`%;NRF=eBRu0~>;$gOwdo1~wCfgiu1LIu7$~!BC7RCoDx0<`ehKtdQ zpyyS3ZeCU?u$Xz$y>+wUFU7>W9=FL~d_P&QA&GX%a%;lP_b!*dl#B>3M>zutj9FTYpP8>&#s-9+svv%y%#3)ukmh0Sjvd5pS(`h?ftIedHS|v^k2nreosg>HvXpeMZ8~Go5+F$u}2$GnhXO->UEamRz|J?sm%dI741) zsI%eCkoUdn2~}gqG45r0!lvHOR5oNFRPSAyZ?9#;ENAbN>oE1cXRB+l5$Qf4IqB59 zN5)xoE!%(G$;pF!V*!W9%OXpBIghlSS*NTM-R2y_x1^8HBtAsEtWWWg3F5c1&Iu77 zBfPy4&YNw&rEZH}H?SC{AHyHM=xPk9w8!^tpKyECfwxTz&|B9C@P{u~-I zmvY^d@Cf0HjlAn=505!ek3V$cF3RqmYVDB7L&~2|p1#>O$B$>sQ!~F&PoCmS8fjLM z-aChVzv{#C{!w=IyAv{W$e79YetP1vyR#K(Vx$SpwK=}zTF!C`Y&;~%k>{1>CliWU z&ijnS(he>X1)i$AhigH2nD9Rn`EYKV7_!X^68Us?RzGX+X6&s8kR}v7HLoPnk0m@x zc=cL&8gd+&sY%&s0kV5u%{rvE?Gx`XX@1O9wE`M)MV@dMeyzxw0#{5d;AaY;&SN(p% zneB6OK*Gpz%Ang(UaVDzuC=?lOr$b)@oBFu^tCbj2*RK z%9i~2w}L$Vuh|@L8F|*;Uttzju&1m%IH_R~bjoPQv&mBf3?Gt##l5`Ny94C*sIlx( z&raOL`-y*!`x1p=)f$Vz)mUOZQuFlGSVPD+ZCxvDj*C@0`{g~XLTh&xcFcJ4lCca@ z(jd~G zeXDKieNE-33?hmBm-_vIY$TqjCj;?wH|g7758pEOQpz6ecg7{wi&A(Qi+$(>&>6)w zIyG%9BY3T4BD>X^A8n|0yNm^kNgF5aWn8=Yw@U68HqLUY?a$GXY5=K})F~?WLuWkK zs!nyD!_>cz7oU`Sy5!(~jm^Q9LEY1htRW9J@-y}^ER)p6fJEXindpSj;ZYm@;^Nm1 zM&FX}CPxUrxK>(D&y>F?|0h01{8MaM98pzVHaF52$D`vzXA;-+G4^g*g_dqJ%skbR zfko~8q)Z|7V(9(Jwela@Q`VfCyjok!f!xIJkTSh(a||_fjkc0~o>-hkl<36K@w{_p z9}-)qut5l+!}Or$%{1gFa(86PDzlIJJ&6n_9^%|ZoKu@6&c`t4lS!WC)d|#OOzEf& z)72$!8xzGDG zbxrKic*)-Q;gl>Zl})THe#7YHBCCEyKbGfGawJf_es6(}tGIq&mV0FruMsbMQKLP1 zxuEL|ndhWE)xAW|k6r}5bFGHGl*6mX{}l;)byj<~Md-yM#xoM-|8oD2jB|D=XA!a+ zIp>V~H9td9or#+_b8o2LuGOBp)t+1Ob=^c6OYqCaXBt1e=0o+gO@`BQj~d!HpZapI z*iZ7!Bj5PvHpiRvt@_%$bF$y!tZ!~$MUTVP*~&==X+^#f@(o36&g6LB)V0ve8G!PI zaq29bN2P{Oh#lkTd%nQ_T#GD&v=8}gF2y%p$bRJO@#p%>>9Y(|7Ob-*Qu)cZ)5Bk# zJY)1BM-#H-??;X!ucrO$%bz}E*sIZI&VbX{8*c?{cUHV(~3kq~R%k`vF{fv>w zjqW}v%Xh|mD9W#K%#-IC_$xXld62iy=D5k|znrUoAfU|z~H?zDCG2wtc= z(GM2M)El$+Bvs32Yw&=ysTYE}9nE4a$GO*9KTwPxup)Wtcuzp&N zRGZHv&(NYp^N&l2@@J9(3-w-)0_eQSnukvmFIPy7X@I~G=wOX1~cc{$d zlfNPDsK#08^sXbunwCqGi~niJVXo`%pYob+ovBILHkCA9(#J@Dw~^kMgL@m!D8A(< z-tz}%eb`RUBW755UrlYK<%C)FH#PT5T^FMp{nI!X5P21{>8SB+GndO^WH<6ij8lJE z*}qxN&=4MK(fPENV3v~mq|lLqf1i9mI}JI6Ts>d5MGhlBk1loKReSc`>J7w`dz*gf zc>gi>+Nw|T_FVPaxT7;0gBWM2QjckpKf1Y%>eM4~-VtmdE?CFv96sKps&`sF82=dh zO#8^!RAqDQ0+gZF8SPv-p-U_S)aD}zQ>b4|%OWll{ie6kj-)jkK3*&BTeZ?=%i&|K zv_ldHf4l)i9@3|L!M1KjNBm+YdVZZVdJ;0O^Zd(r8o;n&MG)vSfrqZ_r@Yo76xNLg#iyX2n8)qUm=vdL;!&)hv+9z%8`FX0-y)ZRl9zgo8E!BmptNJ%U+U~kCh+usOGcUw98YXuo!7NGC5+Z`=V8DBW=su^E2^XIrjR-MuE@wz@jeyRLBOrF7p_Ubhw zhbTGtY&X>c(%ue_{Lfzfj(y@;92HO8(=3lNP8*wLAgjHIYDyMf@(GX+%M7t?f%#$M zj9vOwK5-G^WbBf9PC||%FXS5C>GGS4+WXJ!Bso5TE??E{|WCO#4T&XIqi;dMj2}F>r{Gq30H=$`VK#(ouj08 zC)w4zw+UZ!n>!lguZ%Tu;{C)oKI53_qkGm_H}hWB$m)@%c9W}hv(!7gBX&O9?pSk% zax+fK`A@y&ma%Fk={+vH-4jP+>?|SA$ocl_-x$;y zt65OhjPu!QzK^3DxWMQi;x97T2a#D48T}OljWtZCZ0jaIN_RPq>N&5hQPlE;hwz-v$ck3xqME(4{7oIrZ9n5$ zK*~87ohUl*)Scgzjl^f_eYnVO)p+mkw1P5GxTXH&8@$Hu@NrGEu<+*ja0VqbmLW9j{y9S!3Dn|9$`&F|_qBG%9E&Pj7v6?Y zW#d=rlM+Q!z9jeGfo`~s-67vqp=`Cs&V(=e>g`%xoZ_OVdqcK*ekOm*NV~!A*hKzn zo|k6}-T6^FGm|lB^fpewDTS25D-XHb+8w`x`pO_@|4-F3I%KLR3a6LB_>RUh@{E%w zW;XIXc}|;{Q#{g6^$Z!t8tf41BRAR|BUJl(5I3ihx&KB~Ug z$#zfpvxl*f^mV5idHhqyqh)*(I~^lmUr)Q^+3I}N8l`p}H1pni>LBNjQm(f00I`?d zv6_Y4X?9MGXQ2j`UG*0%@e;#n16qdiliB1O9%Oe6q5T<$y7H{L(8>cOzNJ*-s2aDH zzo+FMVs|uE{_K4Z?y(H4&jg+20RHp_GuD=~$j~nNW1I(GBF=tG@*x`=RP{wD)QnFOlz9(S5+~ zc#1KdeB~P$JoVty4&-irzor4z`Xhv{YYaX?TIOO-b6B~Vd1%dVyWE6DBroEP-=;EG z8_y@%t;pzX{Pyh-I>86+juMrJm$I>|WV<%QB8TQO{&Z2l0Z+Oe`#i+jUip>G`|2?@ z)4sV|jUss@@h=@+|5&?vXTgn}jT}P0i);FX+B=YY%`*>~8}iXHJED?Btlm@`LrXN3Wc5F|C~P=(&3Dluurs$L#9+0aEr!$N^+2qOzGh zaAKRE%j_>UUQB$H_-0&-{wm}+vec`y*jOIh(#EoP7X2N>Ym<%rWeV~>WDjyHuBoSb zjw`-;jBr2U4|2_YYu3wdIm4;h6n0kcuDN?~Pjv4wbfsN2GY|3PH$!QJd5HHuZmeIk zl4A|<;(Lt;KnpAj3oWsUykzJn%?n(gYLodV zO+uXLwnf)fP-{<}cqYe2vzGn3s4?A#ZU9~B7nGYhm1Qa?h^$ewoc9>dB~UTVjxk&_yY)!y`!I!!4LMFe7Nyo6Vnca} z%sbt%q4-);WFNBZdrp?yIIwC*nIs5Yb!)$ba}{fmeX6Ti$@E7d;3!b2^sS*4wF zh$R_IpNNyrH_MpQ$daQ08A?kA1? zadr9RYl_Or66Yxc(21f`h<=R@@0==~#Iy4NI=gX;7G;A=@AE1#{1=JehNj^{0KUMw-|GQ85AD?_P+EeQ3=!H+uH|$M@ z>Y0n&+fBHK@aZbOhc3!vaIVF_+7lNgZjy?Vb!}FmHOqL3naz&s{jz2ff67DGyTGn~ zLrnh0+R}W7DuA2#nZ$>Q@2B!|%kLP}Bk{?#d{q9`CMu$bMvL zLy`9(hZ6c?izCP}WK4pslXwr8SNP=(x2^1F`xt#u%9@f(ofq02t+~#WaaO*@z#N&w zIIH?U@qXfmGk+WV<32Miyw*zX&GNQ@%&0PdxJmCrH};&}F_~*=C`Jfg6yS9aeiGiB z#+GtUL&x|0$$Bk74k5QCPU4qI9>_fMRb%0LWcLfT&gpn-lVzDYZ;le@BkpNr*{`X+ zJ0FGMTz0%sGGh%}h8`c7b7a-s>!@|S>~-op2xF%+UM=fRo1&|q&8xrN`Lf;dhPuC3 z_Bw@Db${6~8k?>5#EtLG|6Z{>9zA6(z$jI7#_N?=#0WU$&{dZ3%J+&$A6RBr-+rj> zTe!9ATD6}qq@#Zb-3Yqlxkk6n?<{0W%d0!}sAmZ7KKR0`_LJ`jowiqybG>Etq!sfH zAg$>&yW_>ib?#fUPhe$VXU@aMnJg>nEQ4gDFaEcld_&>?bKRx?s=slHZeOnPKbe%7 zcMLzSl)A04JN{8|8jC^>dGKT0xO(zdXA9C^Ey%#L*6z5>k*JHZgIez^f63sLCSm%dsWHm$A?4L}}DmsBxccbYl^_!=viw;k`fhZZj-dCx0}~ z5%NI{lo%bP9Vd~-z1i;gmTT(33qZzun^IM3%8N5A)vu4;#IHctR8rHgvkI(9EXm}OUilJXrl_Zy6!w!`k2ugb-k zV7*;_?qNQ*G9V=a|!OqA&LCJ%5V_Ui;t{FH~e|^x+d}dkNOhO*3Dg= ze8~cPNdMa>_ua|dWz3m%)>NI7ecpP<7|RX5P?36X7n>=Tt>)maaKjB24jN9@|RrUk5eh;$> z9X{;o@PRDWD8zP>2axiOAgS*T;(f$_z`Uf!xznB}vF{&T&v3)5JGV;Dt-I?YPw~?< z9%j4u+0}ddox3w@STty= zsg5PZSkrXGh!ImeNj94e1{ow^icuyIAYgzI7K{>MH6cWeI%=d*qpW}!HQG@k2Ak?y zLO`3^RU<}C{jQ3XYFf7~VyLNn-=A~uGxN;Mvxu#Iz5K&{z3$F)?mhS1U+12C?zz8) ze~1l@IOLUncv_^EM2*wXUycd)N8OEk_HNAhYm_wMeP5ue0cV}+VHNH3K(~7i>xfpj zZMG=QePny?5az5=pDSUm#lrZ$W_tJT1aD1`*y;S;lN`|-)?E#~e_jnD0t6dJRb zlpNF2pMu`r#x|accigLK;}>RK_auGAZ1nJ2M}nM{*II0Q!-*dX(5*nXcxpE6U++6x z9Um#j`4&kn&tIFsseyCM+O~?E#nJ+QNuL@G?I8VKva2rK1zGn27wV-s4uvsw!X?ck zm*`YZLh&;vsH?YEi{~Z1Yh7HDbti^=#nwU6-wgSZP?$r$2EnZiWZl>KrvD4N(%OV`%zWv8OH&u^4S{5Rt~WY=j~H?=2T z&#bsN^fQ+5lQp!=wx~+urrv>k=B-IRocfqfdRs_u{H$zr5AgMx2leAWf`4&EHkxM! z`wQ}f0nldkE&JXFbg4#*?L`bO{pBIihmND%)_8Q!7W^xHNBer`+Y_9N86;jND~TMTUwM~9=<5J>8UKPAgo{%iVbf+f^iV2Bl z7Ifp^E>qN&Ye;%GbPI3E+TF=XvKXCQ<9d6UkW{zJyG;-eFd1ht3Z(6hp!R-dcNUE_LQ*qR1?5(w}Nmg;Ph?Ex-EvI{)_#`u1@nv;>}IqjDYjZ zNo22Nedf#RJncp5HyhJF;*Y*H8}4$`oGXlt5xc>}y`*ylyotAEZT>6x7;yRRS@&AL z#pAsfKnM6TC;g&61(sdq&ncN0lTeZvwzi!QZgE@IO^N0<&HfbDW-7@`a+$YgDMg%iyWu8H9sQChcWqdia!9JUi#VoIy;LdIBdmb9gXsi={kdElfzHhEg&>6PG= z!MSkiWOZFl{{%*$-*imyRfpS&Ke{VxZ=aYx96M|Ho=}I9x0-wH1NW-0XQOrZU<YM;tRYs#&03h6uA<46Y2!H8D*bk;ouK7)T+;}o^D-ja}p4znSw zA>Qy`Q(rz_*ylz5Hgi`2chWQVWadxl?A@w|5#o;3kuk>G!&6XbUnwntWxH3zSjqbD z0dUKo%`(vt4^)u@+O*;MPAY>saAc=B3hwxB#wf#;%mDFpO|>IEV3FPTsZFSbr_qQwEFJ!~q*zSTLi+;Sl%NNDQ z^-=J~!5g0>f7}I~&KyXi;=Y-B5l+lGQnDC-uS4$0d%=N#ARA!q#` zn#C_>-Osa-~z>aUhM}bFxQ9TUS<&dK>cn0uzfM7| z^k;)o2CoL*kGfR$5oz+QZBll0dD#WTgX*^``v!2!-^jY3ME#;;3@K;M5pT7(-J<-E zeATh{Gm{Qi;+ef+K6DR4w{$S;PIw%;UG%qhvdVuSMx)BNvUVnu9?DJ^t(s^cCF7`< z@wXTjfIAMZrsa_yqzlyc-|c1lD#AS7M>AJq%yzlK=AjwU+pO-^<$lK+4;C;5zVL zzNu%s|ASkLw)#}P?AZZM^>EhR^EhQcHA(is2^xbA6TkF*<}fX?!Q`&>ZR|gpisIwd zG6*4sRQEI2QTOA%{+jxN#Sb>}QkvHV+Lbc1#jPan7;y)zd<8Mk!aTQ$tImfAEBqj9 z_pw4ZtmAV3n=Vft$g|bD%i3lKcs20Wdm4<_eom=PcyObQFE;*x*Z0G$n`g4T6rYGU2mx!{K5XQ3?=110xBtp{;bQ$$B(m-tu(#{4qLOX z&@$}#@pUC}3J+%82=P1Qej)w7_BaLbwi0KQI7|4B>p5}VqYh5rKTocEh|WQ9D&P#Y z(a~-z>MbRlqu`8#^R|E!=}T!=_#&K{m&1P#JwBZhI1}JZMrS(o*MKwpFWKnMDjrSp zePRRtBf-BHysf~a!1MT?f!hI``bpOAgEcV30N(*G=H%@IU*6}YL1Y`D*f{h1l=s-}~(0`K{E$V*f8)h*zTfICJWnthF~)vz~| zGiN6Cbrc$v<38e7|0C<3%D3P{z%}57d>3#J0gnUU$+zmu=3&}a_t>5gl#j-qki~h*({fN`wykaLG9}-ae=)^J?qjRpje7m<$inoq+QvQj8k72g>I$axd&+1 zN#uqWGdnnlt>v#mZIbpJw^Ewym_7vU0cU4iW|GD%;0o~j`HuQ^`n`UwP`uSocxtH& z`-`=Xisc%vVX2U$jbR!xu?lW=(AhZ;c#HK-P0(0*;Hvz9t0|hB5*%6{Qo=oFwW`KgeuHra_V zwZksa1^2}s*ZTWaz8Nh10O1ppgwG?+5v6spv;8Wh)vm`d8nkQ~5{ucmFpEL9PQ2Wt zJXT77KcQYlKxJG*{L!_}J>S`!NV*ntqO#UhGsi{32M$>QZVlYj>zsS*B>h`<;>?yL znaC2_t@2k-iLyO#b3`G|)pu&sBCIn_437&1q}IYHmJnZV<~OZo1@%>gcM zaFHHkbzZ`+jGyGW(M9BI{<4_=Dtm?S8sTBBR10jz>}R1|utw479Mi$w3hu~tF5ENG zyo>ra{3r02yu=oSp!9pT_A2e`UCZ7n(K)Cz+x#V;kKjLs|9g!NI#bsxWh!LIT@-TS z?dR#+5 zYCbIf-b&n&x44F#&)bSi(ow8Eb`hT1=nEBkW~OVvX`@>p?k3`n?{@J!c8XdeuohzA70ym@%Aa%5IZnww z_Te^h#PgZLNk>ZEf7|KT?OT@N_$ zOqgV4B_9h2;9f;EaRAG{^MTt~b#hz;^)4)^2wa=uR5#6qdS+Vk}uc2fX^1 zT(sU5?I%`0HTCvVFD^`XSqW}&)S11gVH;z;5?Qu1FNIjvG;W?iv{|0EfIkkt#vY}$ z9XR!6=a!L4Z_Bm`DH~5(&%LQU`@k*l^YtP4AaD&>bu|?58sQMzX8xdbL5$-2g7M!<+y~73SVrpSU`~#;9~k#GSa$ zxo=?WRy(2E*bvWBLZr_&>{RQ(9UJp`BAqt<>rHJ-0p12UBKluvz7yrGO|I%p+^-~; z+vKVWr*UhX_ef@4Ak& z+=cW9sTU?ZHbwUP5cYyQ0WPdg{@8Of6-y0bf*Dnsz17Nr%@H2}ull_P&5pYr;BT0( zgN4|krInw~1(tcFH=jv<@vw6eQ_c3%awFonq37wH<%YS$>at5ZQ%4-rX*5y+JY8Hi_I>A2o1i0m;=smCZ2zI!aSk};|L3B2Z2cxJTWD{*U2HZh z;jRQXHSXL2OSghen)7geDKb*~ZLO~W+9sv_19WD-BmQ7E-lyTc^~XCx?hreNvAbHr^;{ zy&~94qcv=P_`>}Ou%jYD?oQ0 zbjwfc39`4~`>M3Ju$D6moEkX8GkV-sc*pO(W}iIV)_lg>pXuBKUf;}~)^!K&8kNXKfYCn4uQTk_W2B>z~1>OXB>nEAh$-b3YkV$Nr z%(uG}de&mwKh?E`_I^HnCGeSTb+@Z=o94R$>CXXgTU!5I=QF&*PlG zF5Bg|?ek5}c(YE^v34%C)%5Vbx59rf>ajJW0)7SHI`DaX(-(rClIFoAZ>!e0(+^JH z{GMoUWw>LA5m}NXHWqS7qcIq&BE;{*#4WtI$MhiTO9vp>|Ag%UHAodE+sGX7c7itn z-leViSizF1-P^U0(~KcYM)wf-l~a4%55T7`!+qOGx2Uf(Qmr8@^)}k;B|Ywns2xm? z!-f&|=BOQhoWM~msIrV@YGbRhZDps%AU$j?>5MMuF}tVw#CqT{;8XZE`7BN{E8@FG>VQ^m@PsJNVdA~b>Icymapz{*D!uI)3&+`X^&6AFw-F?#cUco zHV}X8Z9TSUjrgr&2WI2;HR2L+>clC$y~o|fcS0PL#6Gmi#)BjM`O{mesP8=tjd5sv zU|Kxi)KHl3U`x|(=#IXpd`lOZw-vtqK#$#%*erK5K3bqDj?-FANL+StN9WE*==I~a zK(q3}9`{_&hwXLIIXTkdkd~tQx5CGuQ`-@1KU2*(7Gu^vuSYx#&IC9|Nta$4JHL|t zI9w=QrlFe^-U051dfX~-DXX_TEomAQdX;~0${+606EY@4RsatJKQF**fa|gFA>eV~ z=^=a*aO&nByFXg=wgDG_Pvl!Xc^hyU_?@9IM2Z)^Iod35x|ih1m}rmm*n4M|Uv(Fa zHQHOTD1R>hZT@x?ywXSL_t6;NA%82G7bK}@2rlJm{yQnttvzAx(HGuF(%u?s4^lai6n13{OGPWSPxRScYSaF22ztuEn4B*!yiQ<4`z^rv{QPTm)|nyqozp z{z`vHDz%L{%L%I zV;TC(!5#ZgbWL!Rc#JkonrAab`(gqo_1n9^BhW1UyvMzLQkoSFPaVbQwB=K!lqRhk ztG$mZuaERZZ%cVyT)erTb$Zr4_S2@SzruTPzvyxGNKSOvd4{K4n2^5sMd?(CKlW&k zTSEI$eryzBZ$3L1t@hAEB=fc?o&Wawf#B`HMc{6}1@8nd#o#@_W#DHLR>0i{Tm`;} zZ|R-k-CTw-v7Xm+kAO1{&TWQ+{@S>sMracI{@tkQ?}g`n<>j%;FblX2yvyR1=tj(& zwD6LCSLnfk|G}#~_V{=z%Mf_QOwQ(}>Zh9&4|p}-@J;9sgD4)c4I_j}*Q|p(25u`q zH*J-Y6AyN>L#jmFBZ}LVvvobvY2ClAD@FRaVejsjH5S#=ufZp#Oo&Et8}&Rj=U^Y@ zH9k%&!))?tTSLA8j~I=a#2bP}Uw6*Ely7p5p=EG$dR>#}wh>+?{LrL4U)Fng9Xzi= zTkUm__(hkCY*QQ4w$h3YaGD0ebMlm_OZhkkULCvv%SXZY0d|^*_Z2?#ef;amh5JJa z(oj)*S&zh9=`0|8nDEQ^mfbuWmvzqJ^uQUyTLaz%c%C;~@i0i3olbaL!K>tQVLxpP z9`|uri?`HQ zi{KQVk~2GDgrh^iVI%PAd`QJI{#ga?2)K$D;l9R`vwGY>_!!~d9#i17q~?BX5PSpG zgEZ0{r9j-Vex)Wt#qp6qQ9It=J!?wwM0*iV_^P})_O1VP=vkTVR)ivukM@VO6M$XkI<+D=y zNCMxh<18m{bKVc1Jv|q_Wz&(*#nWaa<#Ta-_+Df0%P0;XC42Byn9=)jm-;nIR;^>D?M~LO88p7qqavyGlTh}*r^8b={#_Y zFV49iQ#aIuJyfiEjVv>g%L~9;1zzDLIrq;rPI7rULyc_is6>RV;_o1S-(b$29*t88 zbJXW*j*1e|vRMTqq4?o2@hhk0+)Ta&9|0Z)ruq#&23!OF6JXUr?}w-Z;9vN1Nk6oc z;jA;HC9^aF%l;_b`NCbEb6+EGvQyjL32b}hAbDd_8`&z?fLl8wR*nuGx{|&#u^4t| zf!bZOyCvbAkB#Fh&tB+`pP93L?1B#fPXt(HJ`9|CMXqUgmPwL^P@kJl&@sZxgrCMY za)ImD{e4W+KTKc6Uo?d`3%CyahaQg?27Uc4z<&(?6Yy7^EC-$dF7X}lkhbW+W%Th^ z@?k@x(OeHM574*JR9ZFs%L)EF@vkQMkK$j$zd&5dfY|eSK7@Zg!G8k(u>^ljXeZkI zRsI70eJgw!Ri{N@PK>wQ%ND(JxPb67;T6J{J&xS?RWi$4KdlkJes<3GbW2v7Zp_RUD_?QJH`8nUpzPGa?nzptpF|sSn^^Ga2dFt zZ%bc`G^j3%rH(UPiz`&Nt>BG-_ZE-WrgNmPX`Nblo*N}j@l`n|^A55I9o*Jg)eWO{ zR_ia~&m-WDg8Qemjr4W9qsUhMw3E!bw?vnXnKM2DKdj2Rb%v|{tu;DHIb~jwU{QWP zxFztoG2e~xP1zc@j1sejhAo4W_iv8b{v{U*;BO#q@w}MaMr-e44$7N~)4E>a?QA39 z)WNwtqK^!;_Y2Sw8}uom%69-PdGY0alzBvcD4E$8S;Z1ulNc`20e-;0e`L_0DCU~J|FH36;;dR32Pidru;9pG6 z#DN3$rp^{{CeDwIw+!;}w;*&s#hL^extLR9erS}4T-*?m^T^9#XcpGw+^Ig@R(>j_ zzssxuNzBOMcaf`EtPf7Vl{URF=dJ)Ykx8?#TZ;b+?d`jHgpUy}or!RNCm=TlstwA7 z6)(z#y-aepa^DfJC`U&Q-_Syh$9o$94vwCA3V+=L_W|A4B;8kB6^?yxFpux&i;(xBHR~tP{oYcCU`?Aq4at49>$g%9L zLujDDHw1xj3m+vP;Lhn%J}Sr;t9R_E>9++`v%L#6U<=icq2v;&gmfyy;)Fxkq zyB^&7P|m%;aLdpo1Gdg>Cw?psBCImr2JXb`b8eh(WSllC*m4+FsC0DCBt}Fy%i9PP z=aBNfKIeA92a=2Ix0mozzP}doO%zp^;&{7P@9nh58*{csXZ;_z7GU-BIlv>p+bth@ z2a0x1U!ft_KRa0Pgd;rsh{MR!Pa@$cqac$<74#Y>vNC$Zo&d^ zM!-4KX@0>y)=VwTrpOi9ne#|7w4&O3Ex4&IIro)xgEzunj?7Smsewx4@iuVB-j;Lw z9;XlQv;wv1y%3m1{DaEZ)?Bzdg1)0QW%fo$fJ*p?uhb^Tz^lF^XJ=0k1&dABz~Dh2 z8{l3w?fYC7y(ifZ{+ylgA^5U)CDs2Ev9pNI5OgZpIjX|)P{9USpj$s~KAbj@6;q7;O8(xsr z1slSoOk>HI4bF0K>fqdEZLGUn!v31fhNy{cj8Wd#gInE(PBt~UE+wb`Rdbv6;{?p- zRuF#=@kig!7!{ShZM>w+Yyg?4p_t zYxrpGOOhLFpxO5!^e(=w?zo=|{lHdaC95_OULyRHK0H27>$1R`TZd_{zw9B-1aSf{ zTHDE1Cyhb|FSW;Ea4H|pxe>ml@1Yyo1WlW$)fFW9B3;Z9zd0A~j_hL|-W)+B;M8Vw z$Y2>9*}h?^7MwVK=eNI?a~<&~i2ripQxBLhq|33+A2x2NPu9RGjpV{!?7k%%yLc3L zb4E(1$>}%vThwe^R$m_le++!4_vC5%5=2n2#iGnv3H{!$hrp|TBp2>MRb8;`&2r?8 znGGI|_$p)HF6e>xGQO>kxA9f5#dS^uz*n7@iC?%S7u^{Z^kFsQ^-X;>;BEl74zAtV{Fj!Wwdc@SWh6Zf)oajr--QUY$w_=Kwf0a8$phGf3`XRSj2!TECe9 zXB?a#(?^@-qcvlDz3)wut&El*Q^#o&CE_2Id+<}#+wGAoRayL91)5mUaKv6_rRfEC z2;B0=ysb%bHvw0HU&wdpAI0TC4lQ9Z&iN;Htc-PV>)@UZuCFtn4u@Sx#_O*K!RgzH z-fKAM7P?C_tgk4&hm}6zHJ{#Q?A$h|=u4j&n^gGoNrg{SU*O7=(B6ll9kfzvRIcUV z4u9Ow10_pV0oQ=v=+lXh*S4RID`#bc><~u&Zke`!{m9)nGI%nq+WRv7}PCBe@4=|H{B$L!mJHVZ&=iFn+AFq4*L$$gWl9saGEhD4Q#JGYq_L0<4xcsuHqi}X(Jj=e^S{Zt7n29;FHO2(FK9LKT{o`% z?6NBBBx`inLwDj!Ik%WbHM&;k&3-tDK4lM>znQbU51Z*5 zF9n`2>Dh{o0aQAf`b>@Z<%86BG_G5HTmD0RmlEIWSem~$p;DIE9=QjgS^E}iIV~~| zW)6G&q$ll3;thnG_;A)|>2rrzKY$19t`rW4>0us*(Y=8UZH;Ld+_G^0Dd%=Z{L(Rg zR5HC*(QWO@o}uq0lwe_=aV()PAy*T8eP1|89!7t_JjQkKmery5j@w?LcHZLh*ac$R zb~OejP+ypH2YvTna_-isZQ9Bvp7oDocM1wyuWsWl>HDhRP0$_wY0jMl&xUo16@I@^ zdMwnhjrSU#>)_V^9eF${e^)ZclIz!G-30N=M|1ARs0_{iYKOniE5^; z)%+ByeYK5(%^|O=b~AQ7nsb}@CZfhfTjJEkZ46dRxvbR2MAd`(*jDhX{}t&d;e7(l zGNq=4w?b40yTKa+?@_*+eT)rb${z4*;J<)x@VP??#g}jK(?QWD>|DMn8Vh9_|3f{pW0-lJ$XK1H z?j+sEynPW|=78McDWyeo!1NN~die+52zYyqW`Q~7>6w@{ZMBc~`yE2rEp<+q+8hfJcDKz!&pPIh(o)<%!up*8zl`(7rwo z5pR@uhlwX$&^A@G>=~xOOY&EH-cy^+2giM$w90c{gnK$Gq0mRF3(T)_$V}o zaTCz3|9RfkG9j-`x?y~&Xm>_OUKi$9CFV8RH~sI4$fU3SJG6(gEzG;ON8?dP9!j<& zuD!n0R*Juy_+yLn?q@CWt^ZqnYdpIrNd_{=s((C8{Lz8DdlK>eSgwUTyV5=VW%yY- znEI*uW#KN;8q7y`q@SfxPlhyYi}bo$`h(E~O0>)1k1T^Wvc>de?bSdXq(7a;Q7rpV zIc9*n0o?j&`HuY;3foTDctV)^$Zo>=UY56e9|Z3ME(chB>L73pxZ5cYvMq)^cMUV7 zx49n!Z{)1J`(Pvoo9$rrNZr`FWP3X-Wrd=XZwE}jEq{TwJv(pr_*;L4rq(Np+ELW# zuuJT1%?;pAfO{6aNFQAq=6_a8Ha^&9S^Khf+Xa64FY{)1kJB!oP&G)?aB7D`;MT#_ zdqKX9xeFA14b}NSL({1ljGwyxhWa`$Z*MYL|Lv%U;%W*EgSBa*#8-Xy6MwXlcg3j9 zb%`7%<;`6(lZ#9G^Znqh18-ur=MBW2&VQf}x>jrfPP$b~m%7BdX9$Lo{1yBF?Xc<;in8W|w1Qc9UwOZ*MQAGPp52en_{mK3LRj zufeqawyv~QxL4(y_DDTp$-p=r@12B|36pG~udqtu$IDUttN8x`{=yprt_2u8J+Wlt z>O=U~@qc>2I|@7oe4?lKYT+q<-xv8e)apMEui5w)@qa1b@p9;ul}0h(lqNua!L1Ol zO1$s*c=2(yA!BY=v$b`ug_Dep^P#gFn&qqW?u=MFv9Z|Ni97O|Y{$CmPdy~Iv;0gD zcjWbXNAdkwZSzi2Z``wI9kC-ngA}b}Gc`2S5Bk4EIoIdiLs5R3@*~VQ%II(%Bu%H6 z{N6xm$>hqG+jT(?QBzDUqi%Cy(#ZL`Z)1#NT@I=nKu3rzfOEa zyTSW_M+02I?;!9PaD!K^{?Ffck1upHDHZ}%6A{|Fz^As z8Cz_}16C&%GG*Xzs75yKEdaN?F>h~!q3eVNX`!MY80ylzWXc-w`Zne5j2(E_MlxxG z;^RLT9N}$M+Q2WdwEbIv^1luL(Ki1Q{(JFH-H^BYSg7OpcuHsSgJ*1ge<{yAwG3?H z#Az=oAJ`6PRd`e2Fp)y?_l`x4E*ALLs(^UNtUQd|6)#N9yLksEzK zC&PY?dyP~@KR)i@cbxF<^kjJ}XRb@)i=}x+p^k|K1LR+J`jQXj#qEPP-kP_2%o=$K zHe-d)CcOBzeDsbdZ#|&b>g{(jtMEa>YlKT?HR6Y|h_BWXK1TRyd|Q7oy%0<|xG{df zqpH(w;1=GVx3!o_+T`la&fs;iG2&K<`x?uK?x6JNX)lK(QN)%ba0z&0)GlrI;>_1*l-3RB4Ow3$?$|r?jW?Kw zfyaSQgs%E$O=-Q$*R$Xe;3}}fRnK+c5#YwWe_+~3;Zm=1%p!bD^ay_u-&W7j*l}62 znpY5Z6ud%>bfyH}GMPgqG{(V_-6zq`w=DSE`rqAjrTvg>SVN#W2Up%te|mS`J#}iJ z8`GhF7$2K4#;AP5;E&wo^%pBY@MwTlo)O@2;QPp@Uw>fhi&SgQ`bE-6c=v%<-=25J z_?EsO_B$YpJ`@o9^98~tg!lfut)Eaoey{Ap(D3kIKRDCxr42ricYn`!lUF6XSGUS; zLBZo%r4BI z9J&^8|{U|V|LGoBpd25D7EtNNL| zd$X6jH);<+<2{gqu2F4KQKV+r+QUxbrS8bPfhZnzvY9yn>zrC#Kd5+jBY^h9-uG%( zt*+c_A;n6H$01XOlTux$4!{GuvA1TD>soDVx0|%rH3v*TIZ4?kt84LWmGp)`Pv7_D zNT};_CS`Qn>YDLl4)N>6AKR0U)-M|K=|bkuiPg{~tloOT9|ynk1#B~X3!VV30ZV2m zKdFC!9`GOMlFQFnlKzSc)RrA3AbKU@r|!wyos*I|W#BUK49dsk58I4w0OX8>UHdL$ zkjc1B;BEl7xEp8dOb~x`|X>oPNI6A|XIe{{m%7XdKa5sQE@lW~a?x+SY7p1er zSh)c0o#2jt-{;B3RhlRBWGIG_Rs4MboYHvS_ANKtQG&p4FdE38$&!^_7bEkw$(7U? zeTq11o}JA9+WYSx>TK%(TxI(dcY@w|l=!9YUOPi4dV09B3VhY1 z^h%knN%Y_Z$$>%QPq<$9M|{u3tpqOg^hS5PY_wY^Sygxq3YXGbuk;9ikDILCw@=Be zOHQy%{5{0)dvdQEr0%HS1UWiSgF;7#TWB||wX2MSwojn<8_3G1^tvtG$u#v|%(YV! ziCVu~PW*{K=yiWMX`W_Hk|*D9w-Uea8NKeYXztK4?iVw^Nb0w6v+DGK;y=6B{c@7A z3>DS(UL*-2wPEi!iT}sFwq~fYdM5A$@ajp*W21G;l7PRHXa(^q&*^o$JTJw^c;lhw zkpnif96yC&8)@x_WGlxu<>OC!-F4aIcAy-YcXTDUgY>$C#IHTS*Y*U)2I+c*!`dyqa6gJ%Mlfsa?+;N}2Vfu9`U1;91nCjqa*Ee9R}zG0F+WcOgV z&Wji3uZtGen^VcxwlAy)eRUV~i!bbTOkEjUiz_!ywS7|@>rCI^C9Bt`4}zCErPuBA zco#I+zqUkZrt=>IZw$P_W1FSusUIj zdy@Hwa!tw1Na{$7%w7kX)RZ^AA~j`$oAL|{=Ub>B@s;G-fuA0G?5n_P05ls8BAi3@ zvk0J(je$*g{kWljJ@%N+wQFLglMS}`h80|BT6ilFv<|oG-;O{8Hg{CDUQ?Pl_S*HD(txSMddOT=z}H$DM>b1vh{@2X_(f8r){wO}N`}cjETr?#Dfddj!}0 zSH#DiggXT{fIA0w5$+n?X53A<+i`c|_T%oyJ&1b**S($ixRY?F;0AE#;4Z>lgWHU| z33og0PTYRn{kR8lkKnrBPkh`-xKnTgxN~q9;i7izZ!$j0{*v` zHR%lje=CH~3h{p!!^b3$IuhW)5dLU@`vd$~fR_ijJ61pU5kG&rug`J_?+I`*!0S() zX7w^Jz(jf6zlqOwxl!B*u8b>ws>@Y&^ZS7=H*p7if?xg9;C!abmGG#bop^^ zV%k(!JbtRBnUv6Nmj(Wa2f|d7Mu_2!KtBflc0Vsi55J;G{}bdh;){4fPb33_F*@R)mCPb8lcF*@dm{PV9;4G9|9=Y) zlF#Dnn)#G`E9^baRlel;bmVot_TGs6^>-3Z<(Mr%e+mdLvoOL!$9$i5D)GD7|LS}E z1Km#df9hL*<7Z{D$0;oX=5AcwF*vn~^yIuKuk3SaTD@=DL>P`yXLm{X8CsI2+UPMao;p$uWq3I4Z-Fqfj z_mtLn$DxjEmmA}M7sd+kbT8VkZbi?zt=CnkN7|q|!tZ#!+xqGJ=lq$-b+*qio>3e9 z4z$k%?Nbiz(??q<&;OhD(S5<9k@_vPPZ6H^joar)7=M0E`*i)$B<&-u_IIrRMC~(7 z`{>Q#-<9@JGylfzLmbT&eqI0RT0BYn3={cxw0(XX^6j_Tf2gVdyY@NJx6d69|IhWO z@z*!UIpy`Y{kML7lYWx!6s4#6ee@^1$VKC)?*Gx9KM_v+H$Hyq-7tkk<7XVN@g2s` z2Hf^hzG!k?HA0R0zwW-(J+YC0{8#rpCyk#C{)!{>t+$#Yuf*{)3Jkyhlkv0kZ%tlN z|BsXWIrH`iR{hT}%&~@;HFuWn`O-eHYk$`3MqV(@73NQ~`~02>;&I@PoQxm-ivLWU z{PZ{aV(%wg0cJi9LM&c)doHP_f+r-!JCpx4(dJ&Y_Nt*PhgP4TntRFRLl<6I zP0hXhilGbVE?l(iPlr}toSM6K^;K(AbJx7#@~hr(ng8Xb?YS3Ue)ZgIF1+%pORl)Q z1vrneD=%CpeE(5hHzdlJ@PFvS_58mGfS@bZtR7mOntS2e^Deq_^<@{Hw{{INBPccZ zf}ty}yo%)f&!ra-2+7r#U2*}*T>%;X%{AJd&iPk?eZdu%U3TH+GWtEiKiT9p_R4-U z58M4b0F9l|pThJPji@GXf0sJG}i0zi_%qmxqh71 z5A>}ygervIvF)+~z3bSSUN7vWvVxAIC6 zZOx=eg^FJE7tyWY5#d!>Z>WIRr%2&Xcyh1BMR-+g=T#1>Y^|HdW0=Z@{$7WR@U%vA z>?>JYZ?ZuCMd`ji;Hh2;r?EEn)of~{PmupBgx~A=6+MNFo;%HrezzypKRX2S6VZDI z-w|Hd#%ZoAlS_@>---8E0Z&c3kF}V6-^sPuVIz7Uj^P~u@4zH@AC2K11n(et5e_J`eC4OC}|}KZ@~76c(i! RqNP4PkxQ|h+4zg_{y)ao9hLw9 literal 0 HcmV?d00001 diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/objcopy b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/objcopy new file mode 100644 index 0000000000000000000000000000000000000000..f94ddc86d296c36368fcb2994cd1e164f556529f GIT binary patch literal 885348 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

  • coC}vI?x;3^G4Q~ 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%0D3y5;*Ll>&>+2jiVL5c53rPx+ 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ë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⁣!MzXM+55(WFU(zc?*D7=+GC?Q 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 literal 0 HcmV?d00001 diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/ranlib b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/bin/ranlib new file mode 100644 index 0000000000000000000000000000000000000000..e31171618d2c5779247fcd3e60c245a292705ead GIT binary patch literal 734544 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 z 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

  • coC}vI?x;3^G4Q~ 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
    lI~0-X;^Rjg-&iftI&7{X}{I{%$A1 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

    +   *  An @c auto_ptr owns the object it holds a pointer to.  Copying
    +   *  an @c auto_ptr copies the pointer and transfers ownership to the
    +   *  destination.  If more than one @c auto_ptr owns the same object
    +   *  at the same time the behavior of the program is undefined.
    +   *
    +   *  The uses of @c auto_ptr include providing temporary
    +   *  exception-safety for dynamically allocated memory, passing
    +   *  ownership of dynamically allocated memory to a function, and
    +   *  returning dynamically allocated memory from a function.  @c
    +   *  auto_ptr does not meet the CopyConstructible and Assignable
    +   *  requirements for Standard Library container elements and thus
    +   *  instantiating a Standard Library container with an @c auto_ptr
    +   *  results in undefined behavior.
    +   *  
    + * Quoted from [20.4.5]/3. + * + * Good examples of what can and cannot be done with auto_ptr can + * be found in the libstdc++ testsuite. + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS + * 127. auto_ptr<> conversion issues + * These resolutions have all been incorporated. + */ + template + class auto_ptr + { + private: + _Tp* _M_ptr; + + public: + /// The pointed-to type. + typedef _Tp element_type; + + /** + * @brief An %auto_ptr is usually constructed from a raw pointer. + * @param __p A pointer (defaults to NULL). + * + * This object now @e owns the object pointed to by @a __p. + */ + explicit + auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } + + /** + * @brief An %auto_ptr can be constructed from another %auto_ptr. + * @param __a Another %auto_ptr of the same type. + * + * This object now @e owns the object previously owned by @a __a, + * which has given up ownership. + */ + auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } + + /** + * @brief An %auto_ptr can be constructed from another %auto_ptr. + * @param __a Another %auto_ptr of a different but related type. + * + * A pointer-to-Tp1 must be convertible to a + * pointer-to-Tp/element_type. + * + * This object now @e owns the object previously owned by @a __a, + * which has given up ownership. + */ + template + auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } + + /** + * @brief %auto_ptr assignment operator. + * @param __a Another %auto_ptr of the same type. + * + * This object now @e owns the object previously owned by @a __a, + * which has given up ownership. The object that this one @e + * used to own and track has been deleted. + */ + auto_ptr& + operator=(auto_ptr& __a) throw() + { + reset(__a.release()); + return *this; + } + + /** + * @brief %auto_ptr assignment operator. + * @param __a Another %auto_ptr of a different but related type. + * + * A pointer-to-Tp1 must be convertible to a pointer-to-Tp/element_type. + * + * This object now @e owns the object previously owned by @a __a, + * which has given up ownership. The object that this one @e + * used to own and track has been deleted. + */ + template + auto_ptr& + operator=(auto_ptr<_Tp1>& __a) throw() + { + reset(__a.release()); + return *this; + } + + /** + * When the %auto_ptr goes out of scope, the object it owns is + * deleted. If it no longer owns anything (i.e., @c get() is + * @c NULL), then this has no effect. + * + * The C++ standard says there is supposed to be an empty throw + * specification here, but omitting it is standard conforming. Its + * presence can be detected only if _Tp::~_Tp() throws, but this is + * prohibited. [17.4.3.6]/2 + */ + ~auto_ptr() { delete _M_ptr; } + + /** + * @brief Smart pointer dereferencing. + * + * If this %auto_ptr no longer owns anything, then this + * operation will crash. (For a smart pointer, no longer owns + * anything is the same as being a null pointer, and you know + * what happens when you dereference one of those...) + */ + element_type& + operator*() const throw() + { + _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0); + return *_M_ptr; + } + + /** + * @brief Smart pointer dereferencing. + * + * This returns the pointer itself, which the language then will + * automatically cause to be dereferenced. + */ + element_type* + operator->() const throw() + { + _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0); + return _M_ptr; + } + + /** + * @brief Bypassing the smart pointer. + * @return The raw pointer being managed. + * + * You can get a copy of the pointer that this object owns, for + * situations such as passing to a function which only accepts + * a raw pointer. + * + * @note This %auto_ptr still owns the memory. + */ + element_type* + get() const throw() { return _M_ptr; } + + /** + * @brief Bypassing the smart pointer. + * @return The raw pointer being managed. + * + * You can get a copy of the pointer that this object owns, for + * situations such as passing to a function which only accepts + * a raw pointer. + * + * @note This %auto_ptr no longer owns the memory. When this object + * goes out of scope, nothing will happen. + */ + element_type* + release() throw() + { + element_type* __tmp = _M_ptr; + _M_ptr = 0; + return __tmp; + } + + /** + * @brief Forcibly deletes the managed object. + * @param __p A pointer (defaults to NULL). + * + * This object now @e owns the object pointed to by @a __p. The + * previous object has been deleted. + */ + void + reset(element_type* __p = 0) throw() + { + if (__p != _M_ptr) + { + delete _M_ptr; + _M_ptr = __p; + } + } + + /** + * @brief Automatic conversions + * + * These operations convert an %auto_ptr into and from an auto_ptr_ref + * automatically as needed. This allows constructs such as + * @code + * auto_ptr func_returning_auto_ptr(.....); + * ... + * auto_ptr ptr = func_returning_auto_ptr(.....); + * @endcode + */ + auto_ptr(auto_ptr_ref __ref) throw() + : _M_ptr(__ref._M_ptr) { } + + auto_ptr& + operator=(auto_ptr_ref __ref) throw() + { + if (__ref._M_ptr != this->get()) + { + delete _M_ptr; + _M_ptr = __ref._M_ptr; + } + return *this; + } + + template + operator auto_ptr_ref<_Tp1>() throw() + { return auto_ptr_ref<_Tp1>(this->release()); } + + template + operator auto_ptr<_Tp1>() throw() + { return auto_ptr<_Tp1>(this->release()); } + } _GLIBCXX_DEPRECATED; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 541. shared_ptr template assignment and void + template<> + class auto_ptr + { + public: + typedef void element_type; + } _GLIBCXX_DEPRECATED; + +#if __cplusplus >= 201103L + template<_Lock_policy _Lp> + template + inline + __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) + : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) + { __r.release(); } + + template + template + inline + __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) + : _M_ptr(__r.get()), _M_refcount() + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + static_assert( sizeof(_Tp1) > 0, "incomplete type" ); + _Tp1* __tmp = __r.get(); + _M_refcount = __shared_count<_Lp>(std::move(__r)); + __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp); + } + + template + template + inline + shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) + : __shared_ptr<_Tp>(std::move(__r)) { } + + template + template + inline + unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept + : _M_t(__u.release(), deleter_type()) { } +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _BACKWARD_AUTO_PTR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/backward_warning.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/backward_warning.h new file mode 100644 index 0000000..d87d528 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/backward_warning.h @@ -0,0 +1,60 @@ +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file backward/backward_warning.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _BACKWARD_BACKWARD_WARNING_H +#define _BACKWARD_BACKWARD_WARNING_H 1 + +#ifdef __DEPRECATED +#warning \ + This file includes at least one deprecated or antiquated header which \ + may be removed without further notice at a future date. Please use a \ + non-deprecated interface with equivalent functionality instead. For a \ + listing of replacement headers and interfaces, consult the file \ + backward_warning.h. To disable this warning use -Wno-deprecated. + +/* + A list of valid replacements is as follows: + + Use: Instead of: + , basic_stringbuf , strstreambuf + , basic_istringstream , istrstream + , basic_ostringstream , ostrstream + , basic_stringstream , strstream + , unordered_set , hash_set + , unordered_multiset , hash_multiset + , unordered_map , hash_map + , unordered_multimap , hash_multimap + , bind , binder1st + , bind , binder2nd + , bind , bind1st + , bind , bind2nd + , unique_ptr , auto_ptr +*/ + +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/binders.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/binders.h new file mode 100644 index 0000000..f6be029 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/binders.h @@ -0,0 +1,176 @@ +// Functor implementations -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file backward/binders.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{functional} + */ + +#ifndef _BACKWARD_BINDERS_H +#define _BACKWARD_BINDERS_H 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // 20.3.6 binders + /** @defgroup binders Binder Classes + * @ingroup functors + * + * Binders turn functions/functors with two arguments into functors + * with a single argument, storing an argument to be applied later. + * For example, a variable @c B of type @c binder1st is constructed + * from a functor @c f and an argument @c x. Later, B's @c + * operator() is called with a single argument @c y. The return + * value is the value of @c f(x,y). @c B can be @a called with + * various arguments (y1, y2, ...) and will in turn call @c + * f(x,y1), @c f(x,y2), ... + * + * The function @c bind1st is provided to save some typing. It takes the + * function and an argument as parameters, and returns an instance of + * @c binder1st. + * + * The type @c binder2nd and its creator function @c bind2nd do the same + * thing, but the stored argument is passed as the second parameter instead + * of the first, e.g., @c bind2nd(std::minus(),1.3) will create a + * functor whose @c operator() accepts a floating-point number, subtracts + * 1.3 from it, and returns the result. (If @c bind1st had been used, + * the functor would perform 1.3 - x instead. + * + * Creator-wrapper functions like @c bind1st are intended to be used in + * calling algorithms. Their return values will be temporary objects. + * (The goal is to not require you to type names like + * @c std::binder1st> for declaring a variable to hold the + * return value from @c bind1st(std::plus(),5). + * + * These become more useful when combined with the composition functions. + * + * These functions are deprecated in C++11 and can be replaced by + * @c std::bind (or @c std::tr1::bind) which is more powerful and flexible, + * supporting functions with any number of arguments. Uses of @c bind1st + * can be replaced by @c std::bind(f, x, std::placeholders::_1) and + * @c bind2nd by @c std::bind(f, std::placeholders::_1, x). + * @{ + */ + /// One of the @link binders binder functors@endlink. + template + 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); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 109. Missing binders for non-const sequence elements + typename _Operation::result_type + operator()(typename _Operation::second_argument_type& __x) const + { return op(value, __x); } + } _GLIBCXX_DEPRECATED; + + /// One of the @link binders binder functors@endlink. + template + inline binder1st<_Operation> + bind1st(const _Operation& __fn, const _Tp& __x) + { + typedef typename _Operation::first_argument_type _Arg1_type; + return binder1st<_Operation>(__fn, _Arg1_type(__x)); + } + + /// One of the @link binders binder functors@endlink. + template + 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); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 109. Missing binders for non-const sequence elements + typename _Operation::result_type + operator()(typename _Operation::first_argument_type& __x) const + { return op(__x, value); } + } _GLIBCXX_DEPRECATED; + + /// One of the @link binders binder functors@endlink. + template + inline binder2nd<_Operation> + bind2nd(const _Operation& __fn, const _Tp& __x) + { + typedef typename _Operation::second_argument_type _Arg2_type; + return binder2nd<_Operation>(__fn, _Arg2_type(__x)); + } + /** @} */ + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _BACKWARD_BINDERS_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_fun.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_fun.h new file mode 100644 index 0000000..3a1caa5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_fun.h @@ -0,0 +1,170 @@ +// 'struct hash' from SGI -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +/** @file backward/hash_fun.h + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASH_FUN_H +#define _BACKWARD_HASH_FUN_H 1 + +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::size_t; + + template + struct hash { }; + + inline size_t + __stl_hash_string(const char* __s) + { + unsigned long __h = 0; + for ( ; *__s; ++__s) + __h = 5 * __h + *__s; + return size_t(__h); + } + + template<> + struct hash + { + size_t + operator()(const char* __s) const + { return __stl_hash_string(__s); } + }; + + template<> + struct hash + { + size_t + operator()(const char* __s) const + { return __stl_hash_string(__s); } + }; + + template<> + struct hash + { + size_t + operator()(char __x) const + { return __x; } + }; + + template<> + struct hash + { + size_t + operator()(unsigned char __x) const + { return __x; } + }; + + template<> + struct hash + { + size_t + operator()(unsigned char __x) const + { return __x; } + }; + + template<> + struct hash + { + size_t + operator()(short __x) const + { return __x; } + }; + + template<> + struct hash + { + size_t + operator()(unsigned short __x) const + { return __x; } + }; + + template<> + struct hash + { + size_t + operator()(int __x) const + { return __x; } + }; + + template<> + struct hash + { + size_t + operator()(unsigned int __x) const + { return __x; } + }; + + template<> + struct hash + { + size_t + operator()(long __x) const + { return __x; } + }; + + template<> + struct hash + { + size_t + operator()(unsigned long __x) const + { return __x; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_map b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_map new file mode 100644 index 0000000..a22871a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_map @@ -0,0 +1,599 @@ +// Hashing map implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +/** @file backward/hash_map + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASH_MAP +#define _BACKWARD_HASH_MAP 1 + +#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH +#include "backward_warning.h" +#endif + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::equal_to; + using std::allocator; + using std::pair; + using std::_Select1st; + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> > + class hash_map + { + private: + typedef hashtable,_Key, _HashFn, + _Select1st >, + _EqualKey, _Alloc> _Ht; + + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef _Tp data_type; + typedef _Tp mapped_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Ht::pointer pointer; + typedef typename _Ht::const_pointer const_pointer; + typedef typename _Ht::reference reference; + typedef typename _Ht::const_reference const_reference; + + typedef typename _Ht::iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_map() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_map(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_map(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_map(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_map(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_unique(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_map& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator== (const hash_map<_K1, _T1, _HF, _EqK, _Al>&, + const hash_map<_K1, _T1, _HF, _EqK, _Al>&); + + iterator + begin() + { return _M_ht.begin(); } + + iterator + end() + { return _M_ht.end(); } + + const_iterator + begin() const + { return _M_ht.begin(); } + + const_iterator + end() const + { return _M_ht.end(); } + + pair + insert(const value_type& __obj) + { return _M_ht.insert_unique(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_unique(__f, __l); } + + pair + insert_noresize(const value_type& __obj) + { return _M_ht.insert_unique_noresize(__obj); } + + iterator + find(const key_type& __key) + { return _M_ht.find(__key); } + + const_iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + _Tp& + operator[](const key_type& __key) + { return _M_ht.find_or_insert(value_type(__key, _Tp())).second; } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) + { return _M_ht.equal_range(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + {return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { return __hm1._M_ht == __hm2._M_ht; } + + template + inline bool + operator!=(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { return !(__hm1 == __hm2); } + + template + inline void + swap(hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { __hm1.swap(__hm2); } + + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Key>, + class _Alloc = allocator<_Tp> > + class hash_multimap + { + // concept requirements + __glibcxx_class_requires(_Key, _SGIAssignableConcept) + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFn, size_t, _Key, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Key, _Key, _BinaryPredicateConcept) + + private: + typedef hashtable, _Key, _HashFn, + _Select1st >, _EqualKey, _Alloc> + _Ht; + + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef _Tp data_type; + typedef _Tp mapped_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Ht::pointer pointer; + typedef typename _Ht::const_pointer const_pointer; + typedef typename _Ht::reference reference; + typedef typename _Ht::const_reference const_reference; + + typedef typename _Ht::iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_multimap() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_multimap(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_multimap(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_multimap(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_equal(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_multimap& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator==(const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&, + const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&); + + iterator + begin() + { return _M_ht.begin(); } + + iterator + end() + { return _M_ht.end(); } + + const_iterator + begin() const + { return _M_ht.begin(); } + + const_iterator + end() const + { return _M_ht.end(); } + + iterator + insert(const value_type& __obj) + { return _M_ht.insert_equal(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_equal(__f,__l); } + + iterator + insert_noresize(const value_type& __obj) + { return _M_ht.insert_equal_noresize(__obj); } + + iterator + find(const key_type& __key) + { return _M_ht.find(__key); } + + const_iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) + { return _M_ht.equal_range(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + { return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, + const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) + { return __hm1._M_ht == __hm2._M_ht; } + + template + inline bool + operator!=(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, + const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) + { return !(__hm1 == __hm2); } + + template + inline void + swap(hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { __hm1.swap(__hm2); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Specialization of insert_iterator so that it will work for hash_map + // and hash_multimap. + template + class insert_iterator<__gnu_cxx::hash_map<_Key, _Tp, _HashFn, + _EqKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> + _Container; + _Container* container; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + + template + class insert_iterator<__gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, + _EqKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> + _Container; + _Container* container; + typename _Container::iterator iter; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_set b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_set new file mode 100644 index 0000000..e38e847 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hash_set @@ -0,0 +1,567 @@ +// Hashing set implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +/** @file backward/hash_set + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASH_SET +#define _BACKWARD_HASH_SET 1 + +#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH +#include "backward_warning.h" +#endif + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::equal_to; + using std::allocator; + using std::pair; + using std::_Identity; + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Value>, + class _Alloc = allocator<_Value> > + class hash_set + { + // concept requirements + __glibcxx_class_requires(_Value, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) + + private: + typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, + _EqualKey, _Alloc> _Ht; + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + + typedef typename _Ht::const_iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_set() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_set(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_set(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_set(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_unique(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_set& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator==(const hash_set<_Val, _HF, _EqK, _Al>&, + const hash_set<_Val, _HF, _EqK, _Al>&); + + iterator + begin() const + { return _M_ht.begin(); } + + iterator + end() const + { return _M_ht.end(); } + + pair + insert(const value_type& __obj) + { + pair __p = _M_ht.insert_unique(__obj); + return pair(__p.first, __p.second); + } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_unique(__f, __l); } + + pair + insert_noresize(const value_type& __obj) + { + pair __p + = _M_ht.insert_unique_noresize(__obj); + return pair(__p.first, __p.second); + } + + iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + {return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return __hs1._M_ht == __hs2._M_ht; } + + template + inline bool + operator!=(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return !(__hs1 == __hs2); } + + template + inline void + swap(hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { __hs1.swap(__hs2); } + + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Value>, + class _Alloc = allocator<_Value> > + class hash_multiset + { + // concept requirements + __glibcxx_class_requires(_Value, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) + + private: + typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, + _EqualKey, _Alloc> _Ht; + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + + typedef typename _Ht::const_iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_multiset() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_multiset(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_multiset(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_multiset(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_equal(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_multiset& hs) + { _M_ht.swap(hs._M_ht); } + + template + friend bool + operator==(const hash_multiset<_Val, _HF, _EqK, _Al>&, + const hash_multiset<_Val, _HF, _EqK, _Al>&); + + iterator + begin() const + { return _M_ht.begin(); } + + iterator + end() const + { return _M_ht.end(); } + + iterator + insert(const value_type& __obj) + { return _M_ht.insert_equal(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_equal(__f,__l); } + + iterator + insert_noresize(const value_type& __obj) + { return _M_ht.insert_equal_noresize(__obj); } + + iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + { return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return __hs1._M_ht == __hs2._M_ht; } + + template + inline bool + operator!=(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return !(__hs1 == __hs2); } + + template + inline void + swap(hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { __hs1.swap(__hs2); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Specialization of insert_iterator so that it will work for hash_set + // and hash_multiset. + template + class insert_iterator<__gnu_cxx::hash_set<_Value, _HashFcn, + _EqualKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_set<_Value, _HashFcn, _EqualKey, _Alloc> + _Container; + _Container* container; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + + template + class insert_iterator<__gnu_cxx::hash_multiset<_Value, _HashFcn, + _EqualKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> + _Container; + _Container* container; + typename _Container::iterator iter; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) { return *this; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hashtable.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hashtable.h new file mode 100644 index 0000000..fbdf673 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/hashtable.h @@ -0,0 +1,1167 @@ +// Hashtable implementation used by containers -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +/** @file backward/hashtable.h + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASHTABLE_H +#define _BACKWARD_HASHTABLE_H 1 + +// Hashtable class, used to implement the hashed associative containers +// hash_set, hash_map, hash_multiset, and hash_multimap. + +#include +#include +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::size_t; + using std::ptrdiff_t; + using std::forward_iterator_tag; + using std::input_iterator_tag; + using std::_Construct; + using std::_Destroy; + using std::distance; + using std::vector; + using std::pair; + using std::__iterator_category; + + template + struct _Hashtable_node + { + _Hashtable_node* _M_next; + _Val _M_val; + }; + + template > + class hashtable; + + template + struct _Hashtable_iterator; + + template + struct _Hashtable_const_iterator; + + template + struct _Hashtable_iterator + { + typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc> + _Hashtable; + typedef _Hashtable_iterator<_Val, _Key, _HashFcn, + _ExtractKey, _EqualKey, _Alloc> + iterator; + typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, + _ExtractKey, _EqualKey, _Alloc> + const_iterator; + typedef _Hashtable_node<_Val> _Node; + typedef forward_iterator_tag iterator_category; + typedef _Val value_type; + typedef ptrdiff_t difference_type; + typedef size_t size_type; + typedef _Val& reference; + typedef _Val* pointer; + + _Node* _M_cur; + _Hashtable* _M_ht; + + _Hashtable_iterator(_Node* __n, _Hashtable* __tab) + : _M_cur(__n), _M_ht(__tab) { } + + _Hashtable_iterator() { } + + reference + operator*() const + { return _M_cur->_M_val; } + + pointer + operator->() const + { return &(operator*()); } + + iterator& + operator++(); + + iterator + operator++(int); + + bool + operator==(const iterator& __it) const + { return _M_cur == __it._M_cur; } + + bool + operator!=(const iterator& __it) const + { return _M_cur != __it._M_cur; } + }; + + template + struct _Hashtable_const_iterator + { + typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc> + _Hashtable; + typedef _Hashtable_iterator<_Val,_Key,_HashFcn, + _ExtractKey,_EqualKey,_Alloc> + iterator; + typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, + _ExtractKey, _EqualKey, _Alloc> + const_iterator; + typedef _Hashtable_node<_Val> _Node; + + typedef forward_iterator_tag iterator_category; + typedef _Val value_type; + typedef ptrdiff_t difference_type; + typedef size_t size_type; + typedef const _Val& reference; + typedef const _Val* pointer; + + const _Node* _M_cur; + const _Hashtable* _M_ht; + + _Hashtable_const_iterator(const _Node* __n, const _Hashtable* __tab) + : _M_cur(__n), _M_ht(__tab) { } + + _Hashtable_const_iterator() { } + + _Hashtable_const_iterator(const iterator& __it) + : _M_cur(__it._M_cur), _M_ht(__it._M_ht) { } + + reference + operator*() const + { return _M_cur->_M_val; } + + pointer + operator->() const + { return &(operator*()); } + + const_iterator& + operator++(); + + const_iterator + operator++(int); + + bool + operator==(const const_iterator& __it) const + { return _M_cur == __it._M_cur; } + + bool + operator!=(const const_iterator& __it) const + { return _M_cur != __it._M_cur; } + }; + + // Note: assumes long is at least 32 bits. + enum { _S_num_primes = 29 }; + + template + struct _Hashtable_prime_list + { + static const _PrimeType __stl_prime_list[_S_num_primes]; + + static const _PrimeType* + _S_get_prime_list(); + }; + + template const _PrimeType + _Hashtable_prime_list<_PrimeType>::__stl_prime_list[_S_num_primes] = + { + 5ul, 53ul, 97ul, 193ul, 389ul, + 769ul, 1543ul, 3079ul, 6151ul, 12289ul, + 24593ul, 49157ul, 98317ul, 196613ul, 393241ul, + 786433ul, 1572869ul, 3145739ul, 6291469ul, 12582917ul, + 25165843ul, 50331653ul, 100663319ul, 201326611ul, 402653189ul, + 805306457ul, 1610612741ul, 3221225473ul, 4294967291ul + }; + + template inline const _PrimeType* + _Hashtable_prime_list<_PrimeType>::_S_get_prime_list() + { + return __stl_prime_list; + } + + inline unsigned long + __stl_next_prime(unsigned long __n) + { + const unsigned long* __first = _Hashtable_prime_list::_S_get_prime_list(); + const unsigned long* __last = __first + (int)_S_num_primes; + const unsigned long* pos = std::lower_bound(__first, __last, __n); + return pos == __last ? *(__last - 1) : *pos; + } + + // Forward declaration of operator==. + template + class hashtable; + + template + bool + operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1, + const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2); + + // Hashtables handle allocators a bit differently than other + // containers do. If we're using standard-conforming allocators, then + // a hashtable unconditionally has a member variable to hold its + // allocator, even if it so happens that all instances of the + // allocator type are identical. This is because, for hashtables, + // this extra storage is negligible. Additionally, a base class + // wouldn't serve any other purposes; it wouldn't, for example, + // simplify the exception-handling code. + template + class hashtable + { + public: + typedef _Key key_type; + typedef _Val value_type; + typedef _HashFcn hasher; + typedef _EqualKey key_equal; + + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + hasher + hash_funct() const + { return _M_hash; } + + key_equal + key_eq() const + { return _M_equals; } + + private: + typedef _Hashtable_node<_Val> _Node; + + public: + typedef typename _Alloc::template rebind::other allocator_type; + allocator_type + get_allocator() const + { return _M_node_allocator; } + + private: + typedef typename _Alloc::template rebind<_Node>::other _Node_Alloc; + typedef typename _Alloc::template rebind<_Node*>::other _Nodeptr_Alloc; + typedef vector<_Node*, _Nodeptr_Alloc> _Vector_type; + + _Node_Alloc _M_node_allocator; + + _Node* + _M_get_node() + { return _M_node_allocator.allocate(1); } + + void + _M_put_node(_Node* __p) + { _M_node_allocator.deallocate(__p, 1); } + + private: + hasher _M_hash; + key_equal _M_equals; + _ExtractKey _M_get_key; + _Vector_type _M_buckets; + size_type _M_num_elements; + + public: + typedef _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, + _EqualKey, _Alloc> + iterator; + typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey, + _EqualKey, _Alloc> + const_iterator; + + friend struct + _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>; + + friend struct + _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey, + _EqualKey, _Alloc>; + + public: + hashtable(size_type __n, const _HashFcn& __hf, + const _EqualKey& __eql, const _ExtractKey& __ext, + const allocator_type& __a = allocator_type()) + : _M_node_allocator(__a), _M_hash(__hf), _M_equals(__eql), + _M_get_key(__ext), _M_buckets(__a), _M_num_elements(0) + { _M_initialize_buckets(__n); } + + hashtable(size_type __n, const _HashFcn& __hf, + const _EqualKey& __eql, + const allocator_type& __a = allocator_type()) + : _M_node_allocator(__a), _M_hash(__hf), _M_equals(__eql), + _M_get_key(_ExtractKey()), _M_buckets(__a), _M_num_elements(0) + { _M_initialize_buckets(__n); } + + hashtable(const hashtable& __ht) + : _M_node_allocator(__ht.get_allocator()), _M_hash(__ht._M_hash), + _M_equals(__ht._M_equals), _M_get_key(__ht._M_get_key), + _M_buckets(__ht.get_allocator()), _M_num_elements(0) + { _M_copy_from(__ht); } + + hashtable& + operator= (const hashtable& __ht) + { + if (&__ht != this) + { + clear(); + _M_hash = __ht._M_hash; + _M_equals = __ht._M_equals; + _M_get_key = __ht._M_get_key; + _M_copy_from(__ht); + } + return *this; + } + + ~hashtable() + { clear(); } + + size_type + size() const + { return _M_num_elements; } + + size_type + max_size() const + { return size_type(-1); } + + bool + empty() const + { return size() == 0; } + + void + swap(hashtable& __ht) + { + std::swap(_M_hash, __ht._M_hash); + std::swap(_M_equals, __ht._M_equals); + std::swap(_M_get_key, __ht._M_get_key); + _M_buckets.swap(__ht._M_buckets); + std::swap(_M_num_elements, __ht._M_num_elements); + } + + iterator + begin() + { + for (size_type __n = 0; __n < _M_buckets.size(); ++__n) + if (_M_buckets[__n]) + return iterator(_M_buckets[__n], this); + return end(); + } + + iterator + end() + { return iterator(0, this); } + + const_iterator + begin() const + { + for (size_type __n = 0; __n < _M_buckets.size(); ++__n) + if (_M_buckets[__n]) + return const_iterator(_M_buckets[__n], this); + return end(); + } + + const_iterator + end() const + { return const_iterator(0, this); } + + template + friend bool + operator==(const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&, + const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&); + + public: + size_type + bucket_count() const + { return _M_buckets.size(); } + + size_type + max_bucket_count() const + { return _Hashtable_prime_list:: + _S_get_prime_list()[(int)_S_num_primes - 1]; + } + + size_type + elems_in_bucket(size_type __bucket) const + { + size_type __result = 0; + for (_Node* __n = _M_buckets[__bucket]; __n; __n = __n->_M_next) + __result += 1; + return __result; + } + + pair + insert_unique(const value_type& __obj) + { + resize(_M_num_elements + 1); + return insert_unique_noresize(__obj); + } + + iterator + insert_equal(const value_type& __obj) + { + resize(_M_num_elements + 1); + return insert_equal_noresize(__obj); + } + + pair + insert_unique_noresize(const value_type& __obj); + + iterator + insert_equal_noresize(const value_type& __obj); + + template + void + insert_unique(_InputIterator __f, _InputIterator __l) + { insert_unique(__f, __l, __iterator_category(__f)); } + + template + void + insert_equal(_InputIterator __f, _InputIterator __l) + { insert_equal(__f, __l, __iterator_category(__f)); } + + template + void + insert_unique(_InputIterator __f, _InputIterator __l, + input_iterator_tag) + { + for ( ; __f != __l; ++__f) + insert_unique(*__f); + } + + template + void + insert_equal(_InputIterator __f, _InputIterator __l, + input_iterator_tag) + { + for ( ; __f != __l; ++__f) + insert_equal(*__f); + } + + template + void + insert_unique(_ForwardIterator __f, _ForwardIterator __l, + forward_iterator_tag) + { + size_type __n = distance(__f, __l); + resize(_M_num_elements + __n); + for ( ; __n > 0; --__n, ++__f) + insert_unique_noresize(*__f); + } + + template + void + insert_equal(_ForwardIterator __f, _ForwardIterator __l, + forward_iterator_tag) + { + size_type __n = distance(__f, __l); + resize(_M_num_elements + __n); + for ( ; __n > 0; --__n, ++__f) + insert_equal_noresize(*__f); + } + + reference + find_or_insert(const value_type& __obj); + + iterator + find(const key_type& __key) + { + size_type __n = _M_bkt_num_key(__key); + _Node* __first; + for (__first = _M_buckets[__n]; + __first && !_M_equals(_M_get_key(__first->_M_val), __key); + __first = __first->_M_next) + { } + return iterator(__first, this); + } + + const_iterator + find(const key_type& __key) const + { + size_type __n = _M_bkt_num_key(__key); + const _Node* __first; + for (__first = _M_buckets[__n]; + __first && !_M_equals(_M_get_key(__first->_M_val), __key); + __first = __first->_M_next) + { } + return const_iterator(__first, this); + } + + size_type + count(const key_type& __key) const + { + const size_type __n = _M_bkt_num_key(__key); + size_type __result = 0; + + for (const _Node* __cur = _M_buckets[__n]; __cur; + __cur = __cur->_M_next) + if (_M_equals(_M_get_key(__cur->_M_val), __key)) + ++__result; + return __result; + } + + pair + equal_range(const key_type& __key); + + pair + equal_range(const key_type& __key) const; + + size_type + erase(const key_type& __key); + + void + erase(const iterator& __it); + + void + erase(iterator __first, iterator __last); + + void + erase(const const_iterator& __it); + + void + erase(const_iterator __first, const_iterator __last); + + void + resize(size_type __num_elements_hint); + + void + clear(); + + private: + size_type + _M_next_size(size_type __n) const + { return __stl_next_prime(__n); } + + void + _M_initialize_buckets(size_type __n) + { + const size_type __n_buckets = _M_next_size(__n); + _M_buckets.reserve(__n_buckets); + _M_buckets.insert(_M_buckets.end(), __n_buckets, (_Node*) 0); + _M_num_elements = 0; + } + + size_type + _M_bkt_num_key(const key_type& __key) const + { return _M_bkt_num_key(__key, _M_buckets.size()); } + + size_type + _M_bkt_num(const value_type& __obj) const + { return _M_bkt_num_key(_M_get_key(__obj)); } + + size_type + _M_bkt_num_key(const key_type& __key, size_t __n) const + { return _M_hash(__key) % __n; } + + size_type + _M_bkt_num(const value_type& __obj, size_t __n) const + { return _M_bkt_num_key(_M_get_key(__obj), __n); } + + _Node* + _M_new_node(const value_type& __obj) + { + _Node* __n = _M_get_node(); + __n->_M_next = 0; + __try + { + this->get_allocator().construct(&__n->_M_val, __obj); + return __n; + } + __catch(...) + { + _M_put_node(__n); + __throw_exception_again; + } + } + + void + _M_delete_node(_Node* __n) + { + this->get_allocator().destroy(&__n->_M_val); + _M_put_node(__n); + } + + void + _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last); + + void + _M_erase_bucket(const size_type __n, _Node* __last); + + void + _M_copy_from(const hashtable& __ht); + }; + + template + _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>& + _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: + operator++() + { + const _Node* __old = _M_cur; + _M_cur = _M_cur->_M_next; + if (!_M_cur) + { + size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val); + while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size()) + _M_cur = _M_ht->_M_buckets[__bucket]; + } + return *this; + } + + template + inline _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All> + _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: + operator++(int) + { + iterator __tmp = *this; + ++*this; + return __tmp; + } + + template + _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>& + _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: + operator++() + { + const _Node* __old = _M_cur; + _M_cur = _M_cur->_M_next; + if (!_M_cur) + { + size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val); + while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size()) + _M_cur = _M_ht->_M_buckets[__bucket]; + } + return *this; + } + + template + inline _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All> + _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: + operator++(int) + { + const_iterator __tmp = *this; + ++*this; + return __tmp; + } + + template + bool + operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1, + const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2) + { + typedef typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::_Node _Node; + + if (__ht1._M_buckets.size() != __ht2._M_buckets.size()) + return false; + + for (size_t __n = 0; __n < __ht1._M_buckets.size(); ++__n) + { + _Node* __cur1 = __ht1._M_buckets[__n]; + _Node* __cur2 = __ht2._M_buckets[__n]; + // Check same length of lists + for (; __cur1 && __cur2; + __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next) + { } + if (__cur1 || __cur2) + return false; + // Now check one's elements are in the other + for (__cur1 = __ht1._M_buckets[__n] ; __cur1; + __cur1 = __cur1->_M_next) + { + bool _found__cur1 = false; + for (__cur2 = __ht2._M_buckets[__n]; + __cur2; __cur2 = __cur2->_M_next) + { + if (__cur1->_M_val == __cur2->_M_val) + { + _found__cur1 = true; + break; + } + } + if (!_found__cur1) + return false; + } + } + return true; + } + + template + inline bool + operator!=(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1, + const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2) + { return !(__ht1 == __ht2); } + + template + inline void + swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1, + hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2) + { __ht1.swap(__ht2); } + + template + pair::iterator, bool> + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + insert_unique_noresize(const value_type& __obj) + { + const size_type __n = _M_bkt_num(__obj); + _Node* __first = _M_buckets[__n]; + + for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) + if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) + return pair(iterator(__cur, this), false); + + _Node* __tmp = _M_new_node(__obj); + __tmp->_M_next = __first; + _M_buckets[__n] = __tmp; + ++_M_num_elements; + return pair(iterator(__tmp, this), true); + } + + template + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + insert_equal_noresize(const value_type& __obj) + { + const size_type __n = _M_bkt_num(__obj); + _Node* __first = _M_buckets[__n]; + + for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) + if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) + { + _Node* __tmp = _M_new_node(__obj); + __tmp->_M_next = __cur->_M_next; + __cur->_M_next = __tmp; + ++_M_num_elements; + return iterator(__tmp, this); + } + + _Node* __tmp = _M_new_node(__obj); + __tmp->_M_next = __first; + _M_buckets[__n] = __tmp; + ++_M_num_elements; + return iterator(__tmp, this); + } + + template + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::reference + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + find_or_insert(const value_type& __obj) + { + resize(_M_num_elements + 1); + + size_type __n = _M_bkt_num(__obj); + _Node* __first = _M_buckets[__n]; + + for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) + if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) + return __cur->_M_val; + + _Node* __tmp = _M_new_node(__obj); + __tmp->_M_next = __first; + _M_buckets[__n] = __tmp; + ++_M_num_elements; + return __tmp->_M_val; + } + + template + pair::iterator, + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator> + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + equal_range(const key_type& __key) + { + typedef pair _Pii; + const size_type __n = _M_bkt_num_key(__key); + + for (_Node* __first = _M_buckets[__n]; __first; + __first = __first->_M_next) + if (_M_equals(_M_get_key(__first->_M_val), __key)) + { + for (_Node* __cur = __first->_M_next; __cur; + __cur = __cur->_M_next) + if (!_M_equals(_M_get_key(__cur->_M_val), __key)) + return _Pii(iterator(__first, this), iterator(__cur, this)); + for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m) + if (_M_buckets[__m]) + return _Pii(iterator(__first, this), + iterator(_M_buckets[__m], this)); + return _Pii(iterator(__first, this), end()); + } + return _Pii(end(), end()); + } + + template + pair::const_iterator, + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::const_iterator> + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + equal_range(const key_type& __key) const + { + typedef pair _Pii; + const size_type __n = _M_bkt_num_key(__key); + + for (const _Node* __first = _M_buckets[__n]; __first; + __first = __first->_M_next) + { + if (_M_equals(_M_get_key(__first->_M_val), __key)) + { + for (const _Node* __cur = __first->_M_next; __cur; + __cur = __cur->_M_next) + if (!_M_equals(_M_get_key(__cur->_M_val), __key)) + return _Pii(const_iterator(__first, this), + const_iterator(__cur, this)); + for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m) + if (_M_buckets[__m]) + return _Pii(const_iterator(__first, this), + const_iterator(_M_buckets[__m], this)); + return _Pii(const_iterator(__first, this), end()); + } + } + return _Pii(end(), end()); + } + + template + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::size_type + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(const key_type& __key) + { + const size_type __n = _M_bkt_num_key(__key); + _Node* __first = _M_buckets[__n]; + _Node* __saved_slot = 0; + size_type __erased = 0; + + if (__first) + { + _Node* __cur = __first; + _Node* __next = __cur->_M_next; + while (__next) + { + if (_M_equals(_M_get_key(__next->_M_val), __key)) + { + if (&_M_get_key(__next->_M_val) != &__key) + { + __cur->_M_next = __next->_M_next; + _M_delete_node(__next); + __next = __cur->_M_next; + ++__erased; + --_M_num_elements; + } + else + { + __saved_slot = __cur; + __cur = __next; + __next = __cur->_M_next; + } + } + else + { + __cur = __next; + __next = __cur->_M_next; + } + } + bool __delete_first = _M_equals(_M_get_key(__first->_M_val), __key); + if (__saved_slot) + { + __next = __saved_slot->_M_next; + __saved_slot->_M_next = __next->_M_next; + _M_delete_node(__next); + ++__erased; + --_M_num_elements; + } + if (__delete_first) + { + _M_buckets[__n] = __first->_M_next; + _M_delete_node(__first); + ++__erased; + --_M_num_elements; + } + } + return __erased; + } + + template + void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(const iterator& __it) + { + _Node* __p = __it._M_cur; + if (__p) + { + const size_type __n = _M_bkt_num(__p->_M_val); + _Node* __cur = _M_buckets[__n]; + + if (__cur == __p) + { + _M_buckets[__n] = __cur->_M_next; + _M_delete_node(__cur); + --_M_num_elements; + } + else + { + _Node* __next = __cur->_M_next; + while (__next) + { + if (__next == __p) + { + __cur->_M_next = __next->_M_next; + _M_delete_node(__next); + --_M_num_elements; + break; + } + else + { + __cur = __next; + __next = __cur->_M_next; + } + } + } + } + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(iterator __first, iterator __last) + { + size_type __f_bucket = __first._M_cur ? _M_bkt_num(__first._M_cur->_M_val) + : _M_buckets.size(); + + size_type __l_bucket = __last._M_cur ? _M_bkt_num(__last._M_cur->_M_val) + : _M_buckets.size(); + + if (__first._M_cur == __last._M_cur) + return; + else if (__f_bucket == __l_bucket) + _M_erase_bucket(__f_bucket, __first._M_cur, __last._M_cur); + else + { + _M_erase_bucket(__f_bucket, __first._M_cur, 0); + for (size_type __n = __f_bucket + 1; __n < __l_bucket; ++__n) + _M_erase_bucket(__n, 0); + if (__l_bucket != _M_buckets.size()) + _M_erase_bucket(__l_bucket, __last._M_cur); + } + } + + template + inline void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(const_iterator __first, const_iterator __last) + { + erase(iterator(const_cast<_Node*>(__first._M_cur), + const_cast(__first._M_ht)), + iterator(const_cast<_Node*>(__last._M_cur), + const_cast(__last._M_ht))); + } + + template + inline void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(const const_iterator& __it) + { erase(iterator(const_cast<_Node*>(__it._M_cur), + const_cast(__it._M_ht))); } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + resize(size_type __num_elements_hint) + { + const size_type __old_n = _M_buckets.size(); + if (__num_elements_hint > __old_n) + { + const size_type __n = _M_next_size(__num_elements_hint); + if (__n > __old_n) + { + _Vector_type __tmp(__n, (_Node*)(0), _M_buckets.get_allocator()); + __try + { + for (size_type __bucket = 0; __bucket < __old_n; ++__bucket) + { + _Node* __first = _M_buckets[__bucket]; + while (__first) + { + size_type __new_bucket = _M_bkt_num(__first->_M_val, + __n); + _M_buckets[__bucket] = __first->_M_next; + __first->_M_next = __tmp[__new_bucket]; + __tmp[__new_bucket] = __first; + __first = _M_buckets[__bucket]; + } + } + _M_buckets.swap(__tmp); + } + __catch(...) + { + for (size_type __bucket = 0; __bucket < __tmp.size(); + ++__bucket) + { + while (__tmp[__bucket]) + { + _Node* __next = __tmp[__bucket]->_M_next; + _M_delete_node(__tmp[__bucket]); + __tmp[__bucket] = __next; + } + } + __throw_exception_again; + } + } + } + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last) + { + _Node* __cur = _M_buckets[__n]; + if (__cur == __first) + _M_erase_bucket(__n, __last); + else + { + _Node* __next; + for (__next = __cur->_M_next; + __next != __first; + __cur = __next, __next = __cur->_M_next) + ; + while (__next != __last) + { + __cur->_M_next = __next->_M_next; + _M_delete_node(__next); + __next = __cur->_M_next; + --_M_num_elements; + } + } + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + _M_erase_bucket(const size_type __n, _Node* __last) + { + _Node* __cur = _M_buckets[__n]; + while (__cur != __last) + { + _Node* __next = __cur->_M_next; + _M_delete_node(__cur); + __cur = __next; + _M_buckets[__n] = __cur; + --_M_num_elements; + } + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + clear() + { + if (_M_num_elements == 0) + return; + + for (size_type __i = 0; __i < _M_buckets.size(); ++__i) + { + _Node* __cur = _M_buckets[__i]; + while (__cur != 0) + { + _Node* __next = __cur->_M_next; + _M_delete_node(__cur); + __cur = __next; + } + _M_buckets[__i] = 0; + } + _M_num_elements = 0; + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + _M_copy_from(const hashtable& __ht) + { + _M_buckets.clear(); + _M_buckets.reserve(__ht._M_buckets.size()); + _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (_Node*) 0); + __try + { + for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) { + const _Node* __cur = __ht._M_buckets[__i]; + if (__cur) + { + _Node* __local_copy = _M_new_node(__cur->_M_val); + _M_buckets[__i] = __local_copy; + + for (_Node* __next = __cur->_M_next; + __next; + __cur = __next, __next = __cur->_M_next) + { + __local_copy->_M_next = _M_new_node(__next->_M_val); + __local_copy = __local_copy->_M_next; + } + } + } + _M_num_elements = __ht._M_num_elements; + } + __catch(...) + { + clear(); + __throw_exception_again; + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/strstream b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/strstream new file mode 100644 index 0000000..f665be0 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/strstream @@ -0,0 +1,184 @@ +// Backward-compat support -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +// WARNING: The classes defined in this header are DEPRECATED. This +// header is defined in section D.7.1 of the C++ standard, and it +// MAY BE REMOVED in a future standard revision. One should use the +// header instead. + +/** @file backward/strstream + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{sstream} + */ + +#ifndef _BACKWARD_STRSTREAM +#define _BACKWARD_STRSTREAM + +#include "backward_warning.h" +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Class strstreambuf, a streambuf class that manages an array of char. + // Note that this class is not a template. + class strstreambuf : public basic_streambuf > + { + public: + // Types. + typedef char_traits _Traits; + typedef basic_streambuf _Base; + + public: + // Constructor, destructor + explicit strstreambuf(streamsize __initial_capacity = 0); + strstreambuf(void* (*__alloc)(size_t), void (*__free)(void*)); + + strstreambuf(char* __get, streamsize __n, char* __put = 0) throw (); + strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0) throw (); + strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0) throw (); + + strstreambuf(const char* __get, streamsize __n) throw (); + strstreambuf(const signed char* __get, streamsize __n) throw (); + strstreambuf(const unsigned char* __get, streamsize __n) throw (); + + virtual ~strstreambuf(); + + public: + void freeze(bool = true) throw (); + char* str() throw (); + _GLIBCXX_PURE int pcount() const throw (); + + protected: + virtual int_type overflow(int_type __c = _Traits::eof()); + virtual int_type pbackfail(int_type __c = _Traits::eof()); + virtual int_type underflow(); + virtual _Base* setbuf(char* __buf, streamsize __n); + virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir, + ios_base::openmode __mode + = ios_base::in | ios_base::out); + virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode + = ios_base::in | ios_base::out); + + private: + strstreambuf& + operator=(const strstreambuf&); + + strstreambuf(const strstreambuf&); + + // Dynamic allocation, possibly using _M_alloc_fun and _M_free_fun. + char* _M_alloc(size_t); + void _M_free(char*); + + // Helper function used in constructors. + void _M_setup(char* __get, char* __put, streamsize __n) throw (); + + private: + // Data members. + void* (*_M_alloc_fun)(size_t); + void (*_M_free_fun)(void*); + + bool _M_dynamic : 1; + bool _M_frozen : 1; + bool _M_constant : 1; + }; + + // Class istrstream, an istream that manages a strstreambuf. + class istrstream : public basic_istream + { + public: + explicit istrstream(char*); + explicit istrstream(const char*); + istrstream(char* , streamsize); + istrstream(const char*, streamsize); + virtual ~istrstream(); + + _GLIBCXX_CONST strstreambuf* rdbuf() const throw (); + char* str() throw (); + + private: + strstreambuf _M_buf; + }; + + // Class ostrstream + class ostrstream : public basic_ostream + { + public: + ostrstream(); + ostrstream(char*, int, ios_base::openmode = ios_base::out); + virtual ~ostrstream(); + + _GLIBCXX_CONST strstreambuf* rdbuf() const throw (); + void freeze(bool = true) throw(); + char* str() throw (); + _GLIBCXX_PURE int pcount() const throw (); + + private: + strstreambuf _M_buf; + }; + + // Class strstream + class strstream : public basic_iostream + { + public: + typedef char char_type; + typedef char_traits::int_type int_type; + typedef char_traits::pos_type pos_type; + typedef char_traits::off_type off_type; + + strstream(); + strstream(char*, int, ios_base::openmode = ios_base::in | ios_base::out); + virtual ~strstream(); + + _GLIBCXX_CONST strstreambuf* rdbuf() const throw (); + void freeze(bool = true) throw (); + _GLIBCXX_PURE int pcount() const throw (); + char* str() throw (); + + private: + strstreambuf _M_buf; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/algorithmfwd.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/algorithmfwd.h new file mode 100644 index 0000000..e6321b2 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/algorithmfwd.h @@ -0,0 +1,826 @@ +// Forward declarations -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/algorithmfwd.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{algorithm} + */ + +#ifndef _GLIBCXX_ALGORITHMFWD_H +#define _GLIBCXX_ALGORITHMFWD_H 1 + +#pragma GCC system_header + +#include +#include +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /* + adjacent_find + all_of (C++0x) + any_of (C++0x) + binary_search + copy + copy_backward + copy_if (C++0x) + copy_n (C++0x) + count + count_if + equal + equal_range + fill + fill_n + find + find_end + find_first_of + find_if + find_if_not (C++0x) + for_each + generate + generate_n + includes + inplace_merge + is_heap (C++0x) + is_heap_until (C++0x) + is_partitioned (C++0x) + is_sorted (C++0x) + is_sorted_until (C++0x) + iter_swap + lexicographical_compare + lower_bound + make_heap + max + max_element + merge + min + min_element + minmax (C++0x) + minmax_element (C++0x) + mismatch + next_permutation + none_of (C++0x) + nth_element + partial_sort + partial_sort_copy + partition + partition_copy (C++0x) + partition_point (C++0x) + pop_heap + prev_permutation + push_heap + random_shuffle + remove + remove_copy + remove_copy_if + remove_if + replace + replace_copy + replace_copy_if + replace_if + reverse + reverse_copy + rotate + rotate_copy + search + search_n + set_difference + set_intersection + set_symmetric_difference + set_union + shuffle (C++0x) + sort + sort_heap + stable_partition + stable_sort + swap + swap_ranges + transform + unique + unique_copy + upper_bound + */ + + /** + * @defgroup algorithms Algorithms + * + * Components for performing algorithmic operations. Includes + * non-modifying sequence, modifying (mutating) sequence, sorting, + * searching, merge, partition, heap, set, minima, maxima, and + * permutation operations. + */ + + /** + * @defgroup mutating_algorithms Mutating + * @ingroup algorithms + */ + + /** + * @defgroup non_mutating_algorithms Non-Mutating + * @ingroup algorithms + */ + + /** + * @defgroup sorting_algorithms Sorting + * @ingroup algorithms + */ + + /** + * @defgroup set_algorithms Set Operation + * @ingroup sorting_algorithms + * + * These algorithms are common set operations performed on sequences + * that are already sorted. The number of comparisons will be + * linear. + */ + + /** + * @defgroup binary_search_algorithms Binary Search + * @ingroup sorting_algorithms + * + * These algorithms are variations of a classic binary search, and + * all assume that the sequence being searched is already sorted. + * + * The number of comparisons will be logarithmic (and as few as + * possible). The number of steps through the sequence will be + * logarithmic for random-access iterators (e.g., pointers), and + * linear otherwise. + * + * The LWG has passed Defect Report 270, which notes: The + * proposed resolution reinterprets binary search. Instead of + * thinking about searching for a value in a sorted range, we view + * that as an important special case of a more general algorithm: + * searching for the partition point in a partitioned range. We + * also add a guarantee that the old wording did not: we ensure that + * the upper bound is no earlier than the lower bound, that the pair + * returned by equal_range is a valid range, and that the first part + * of that pair is the lower bound. + * + * The actual effect of the first sentence is that a comparison + * functor passed by the user doesn't necessarily need to induce a + * strict weak ordering relation. Rather, it partitions the range. + */ + + // adjacent_find + +#if __cplusplus >= 201103L + template + bool + all_of(_IIter, _IIter, _Predicate); + + template + bool + any_of(_IIter, _IIter, _Predicate); +#endif + + template + bool + binary_search(_FIter, _FIter, const _Tp&); + + template + bool + binary_search(_FIter, _FIter, const _Tp&, _Compare); + + template + _OIter + copy(_IIter, _IIter, _OIter); + + template + _BIter2 + copy_backward(_BIter1, _BIter1, _BIter2); + +#if __cplusplus >= 201103L + template + _OIter + copy_if(_IIter, _IIter, _OIter, _Predicate); + + template + _OIter + copy_n(_IIter, _Size, _OIter); +#endif + + // count + // count_if + + template + pair<_FIter, _FIter> + equal_range(_FIter, _FIter, const _Tp&); + + template + pair<_FIter, _FIter> + equal_range(_FIter, _FIter, const _Tp&, _Compare); + + template + void + fill(_FIter, _FIter, const _Tp&); + + template + _OIter + fill_n(_OIter, _Size, const _Tp&); + + // find + + template + _FIter1 + find_end(_FIter1, _FIter1, _FIter2, _FIter2); + + template + _FIter1 + find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); + + // find_first_of + // find_if + +#if __cplusplus >= 201103L + template + _IIter + find_if_not(_IIter, _IIter, _Predicate); +#endif + + // for_each + // generate + // generate_n + + template + bool + includes(_IIter1, _IIter1, _IIter2, _IIter2); + + template + bool + includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); + + template + void + inplace_merge(_BIter, _BIter, _BIter); + + template + void + inplace_merge(_BIter, _BIter, _BIter, _Compare); + +#if __cplusplus >= 201103L + template + bool + is_heap(_RAIter, _RAIter); + + template + bool + is_heap(_RAIter, _RAIter, _Compare); + + template + _RAIter + is_heap_until(_RAIter, _RAIter); + + template + _RAIter + is_heap_until(_RAIter, _RAIter, _Compare); + + template + bool + is_partitioned(_IIter, _IIter, _Predicate); + + template + bool + is_permutation(_FIter1, _FIter1, _FIter2); + + template + bool + is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); + + template + bool + is_sorted(_FIter, _FIter); + + template + bool + is_sorted(_FIter, _FIter, _Compare); + + template + _FIter + is_sorted_until(_FIter, _FIter); + + template + _FIter + is_sorted_until(_FIter, _FIter, _Compare); +#endif + + template + void + iter_swap(_FIter1, _FIter2); + + template + _FIter + lower_bound(_FIter, _FIter, const _Tp&); + + template + _FIter + lower_bound(_FIter, _FIter, const _Tp&, _Compare); + + template + void + make_heap(_RAIter, _RAIter); + + template + void + make_heap(_RAIter, _RAIter, _Compare); + + template + const _Tp& + max(const _Tp&, const _Tp&); + + template + const _Tp& + max(const _Tp&, const _Tp&, _Compare); + + // max_element + // merge + + template + const _Tp& + min(const _Tp&, const _Tp&); + + template + const _Tp& + min(const _Tp&, const _Tp&, _Compare); + + // min_element + +#if __cplusplus >= 201103L + 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); +#endif + + // mismatch + + template + bool + next_permutation(_BIter, _BIter); + + template + bool + next_permutation(_BIter, _BIter, _Compare); + +#if __cplusplus >= 201103L + template + bool + none_of(_IIter, _IIter, _Predicate); +#endif + + // nth_element + // partial_sort + + template + _RAIter + partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); + + template + _RAIter + partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); + + // partition + +#if __cplusplus >= 201103L + template + pair<_OIter1, _OIter2> + partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); + + template + _FIter + partition_point(_FIter, _FIter, _Predicate); +#endif + + template + void + pop_heap(_RAIter, _RAIter); + + template + void + pop_heap(_RAIter, _RAIter, _Compare); + + template + bool + prev_permutation(_BIter, _BIter); + + template + bool + prev_permutation(_BIter, _BIter, _Compare); + + template + void + push_heap(_RAIter, _RAIter); + + template + void + push_heap(_RAIter, _RAIter, _Compare); + + // random_shuffle + + template + _FIter + remove(_FIter, _FIter, const _Tp&); + + template + _FIter + remove_if(_FIter, _FIter, _Predicate); + + template + _OIter + remove_copy(_IIter, _IIter, _OIter, const _Tp&); + + template + _OIter + remove_copy_if(_IIter, _IIter, _OIter, _Predicate); + + // replace + + template + _OIter + replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); + + template + _OIter + replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); + + // replace_if + + template + void + reverse(_BIter, _BIter); + + template + _OIter + reverse_copy(_BIter, _BIter, _OIter); + + template + void + rotate(_FIter, _FIter, _FIter); + + template + _OIter + rotate_copy(_FIter, _FIter, _FIter, _OIter); + + // search + // search_n + // set_difference + // set_intersection + // set_symmetric_difference + // set_union + +#if (__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99_STDINT_TR1) + template + void + shuffle(_RAIter, _RAIter, _UGenerator&&); +#endif + + template + void + sort_heap(_RAIter, _RAIter); + + template + void + sort_heap(_RAIter, _RAIter, _Compare); + + template + _BIter + stable_partition(_BIter, _BIter, _Predicate); + + template + void + swap(_Tp&, _Tp&) +#if __cplusplus >= 201103L + noexcept(__and_, + is_nothrow_move_assignable<_Tp>>::value) +#endif + ; + + template + void + swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) +#if __cplusplus >= 201103L + noexcept(noexcept(swap(*__a, *__b))) +#endif + ; + + template + _FIter2 + swap_ranges(_FIter1, _FIter1, _FIter2); + + // transform + + template + _FIter + unique(_FIter, _FIter); + + template + _FIter + unique(_FIter, _FIter, _BinaryPredicate); + + // unique_copy + + template + _FIter + upper_bound(_FIter, _FIter, const _Tp&); + + template + _FIter + upper_bound(_FIter, _FIter, const _Tp&, _Compare); + +_GLIBCXX_END_NAMESPACE_VERSION + +_GLIBCXX_BEGIN_NAMESPACE_ALGO + + template + _FIter + adjacent_find(_FIter, _FIter); + + template + _FIter + adjacent_find(_FIter, _FIter, _BinaryPredicate); + + template + typename iterator_traits<_IIter>::difference_type + count(_IIter, _IIter, const _Tp&); + + template + typename iterator_traits<_IIter>::difference_type + count_if(_IIter, _IIter, _Predicate); + + template + bool + equal(_IIter1, _IIter1, _IIter2); + + template + bool + equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); + + template + _IIter + find(_IIter, _IIter, const _Tp&); + + template + _FIter1 + find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); + + template + _FIter1 + find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); + + template + _IIter + find_if(_IIter, _IIter, _Predicate); + + template + _Funct + for_each(_IIter, _IIter, _Funct); + + template + void + generate(_FIter, _FIter, _Generator); + + template + _OIter + generate_n(_OIter, _Size, _Generator); + + template + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); + + template + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); + + template + _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, +#if __cplusplus >= 201103L + _Generator&&); +#else + _Generator&); +#endif + + template + void + replace(_FIter, _FIter, const _Tp&, const _Tp&); + + template + void + replace_if(_FIter, _FIter, _Predicate, const _Tp&); + + template + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2); + + template + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); + + template + _FIter + search_n(_FIter, _FIter, _Size, const _Tp&); + + template + _FIter + search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); + + template + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, + _OIter, _Compare); + + template + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template + void + sort(_RAIter, _RAIter); + + template + void + sort(_RAIter, _RAIter, _Compare); + + template + void + stable_sort(_RAIter, _RAIter); + + template + void + stable_sort(_RAIter, _RAIter, _Compare); + + template + _OIter + transform(_IIter, _IIter, _OIter, _UnaryOperation); + + template + _OIter + transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); + + template + _OIter + unique_copy(_IIter, _IIter, _OIter); + + template + _OIter + unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); + +_GLIBCXX_END_NAMESPACE_ALGO +} // namespace std + +#ifdef _GLIBCXX_PARALLEL +# include +#endif + +#endif + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/alloc_traits.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/alloc_traits.h new file mode 100644 index 0000000..33ea145 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/alloc_traits.h @@ -0,0 +1,566 @@ +// Allocator traits -*- C++ -*- + +// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/alloc_traits.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _ALLOC_TRAITS_H +#define _ALLOC_TRAITS_H 1 + +#if __cplusplus >= 201103L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + 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; + }; + + /** + * @brief Uniform interface to all allocator types. + * @ingroup allocators + */ + template + struct allocator_traits + { + /// The allocator type + typedef _Alloc allocator_type; + /// The allocated type + typedef typename _Alloc::value_type value_type; + +#define _GLIBCXX_ALLOC_TR_NESTED_TYPE(_NTYPE, _ALT) \ + private: \ + template \ + static typename _Tp::_NTYPE _S_##_NTYPE##_helper(_Tp*); \ + static _ALT _S_##_NTYPE##_helper(...); \ + typedef decltype(_S_##_NTYPE##_helper((_Alloc*)0)) __##_NTYPE; \ + public: + +_GLIBCXX_ALLOC_TR_NESTED_TYPE(pointer, value_type*) + + /** + * @brief The allocator's pointer type. + * + * @c Alloc::pointer if that type exists, otherwise @c value_type* + */ + typedef __pointer pointer; + +_GLIBCXX_ALLOC_TR_NESTED_TYPE(const_pointer, + typename pointer_traits::template rebind) + + /** + * @brief The allocator's const pointer type. + * + * @c Alloc::const_pointer if that type exists, otherwise + * pointer_traits::rebind + */ + typedef __const_pointer const_pointer; + +_GLIBCXX_ALLOC_TR_NESTED_TYPE(void_pointer, + typename pointer_traits::template rebind) + + /** + * @brief The allocator's void pointer type. + * + * @c Alloc::void_pointer if that type exists, otherwise + * pointer_traits::rebind + */ + typedef __void_pointer void_pointer; + +_GLIBCXX_ALLOC_TR_NESTED_TYPE(const_void_pointer, + typename pointer_traits::template rebind) + + /** + * @brief The allocator's const void pointer type. + * + * @c Alloc::const_void_pointer if that type exists, otherwise + * pointer_traits::rebind + */ + typedef __const_void_pointer const_void_pointer; + +_GLIBCXX_ALLOC_TR_NESTED_TYPE(difference_type, + typename pointer_traits::difference_type) + + /** + * @brief The allocator's difference type + * + * @c Alloc::difference_type if that type exists, otherwise + * pointer_traits::difference_type + */ + typedef __difference_type difference_type; + +_GLIBCXX_ALLOC_TR_NESTED_TYPE(size_type, + typename make_unsigned::type) + + /** + * @brief The allocator's size type + * + * @c Alloc::size_type if that type exists, otherwise + * make_unsigned::type + */ + typedef __size_type size_type; + +_GLIBCXX_ALLOC_TR_NESTED_TYPE(propagate_on_container_copy_assignment, + false_type) + + /** + * @brief How the allocator is propagated on copy assignment + * + * @c Alloc::propagate_on_container_copy_assignment if that type exists, + * otherwise @c false_type + */ + typedef __propagate_on_container_copy_assignment + propagate_on_container_copy_assignment; + +_GLIBCXX_ALLOC_TR_NESTED_TYPE(propagate_on_container_move_assignment, + false_type) + + /** + * @brief How the allocator is propagated on move assignment + * + * @c Alloc::propagate_on_container_move_assignment if that type exists, + * otherwise @c false_type + */ + typedef __propagate_on_container_move_assignment + propagate_on_container_move_assignment; + +_GLIBCXX_ALLOC_TR_NESTED_TYPE(propagate_on_container_swap, + false_type) + + /** + * @brief How the allocator is propagated on swap + * + * @c Alloc::propagate_on_container_swap if that type exists, + * otherwise @c false_type + */ + typedef __propagate_on_container_swap propagate_on_container_swap; + +#undef _GLIBCXX_ALLOC_TR_NESTED_TYPE + + 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: + + /** + * @brief Allocate memory. + * @param __a An allocator. + * @param __n The number of objects to allocate space for. + * + * Calls @c a.allocate(n) + */ + static pointer + allocate(_Alloc& __a, size_type __n) + { return __a.allocate(__n); } + + /** + * @brief Allocate memory. + * @param __a An allocator. + * @param __n The number of objects to allocate space for. + * @param __hint Aid to locality. + * @return Memory of suitable size and alignment for @a n objects + * of type @c value_type + * + * Returns a.allocate(n, hint) if that expression is + * well-formed, otherwise returns @c a.allocate(n) + */ + static pointer + allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) + { return _S_allocate(__a, __n, __hint); } + + /** + * @brief Deallocate memory. + * @param __a An allocator. + * @param __p Pointer to the memory to deallocate. + * @param __n The number of objects space was allocated for. + * + * Calls a.deallocate(p, n) + */ + static void deallocate(_Alloc& __a, pointer __p, size_type __n) + { __a.deallocate(__p, __n); } + + /** + * @brief Construct an object of type @a _Tp + * @param __a An allocator. + * @param __p Pointer to memory of suitable size and alignment for Tp + * @param __args Constructor arguments. + * + * Calls __a.construct(__p, std::forward(__args)...) + * if that expression is well-formed, otherwise uses placement-new + * to construct an object of type @a _Tp at location @a __p from the + * arguments @a __args... + */ + template + static auto construct(_Alloc& __a, _Tp* __p, _Args&&... __args) + -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) + { _S_construct(__a, __p, std::forward<_Args>(__args)...); } + + /** + * @brief Destroy an object of type @a _Tp + * @param __a An allocator. + * @param __p Pointer to the object to destroy + * + * Calls @c __a.destroy(__p) if that expression is well-formed, + * otherwise calls @c __p->~_Tp() + */ + template + static void destroy(_Alloc& __a, _Tp* __p) + { _S_destroy(__a, __p); } + + /** + * @brief The maximum supported allocation size + * @param __a An allocator. + * @return @c __a.max_size() or @c numeric_limits::max() + * + * Returns @c __a.max_size() if that expression is well-formed, + * otherwise returns @c numeric_limits::max() + */ + static size_type max_size(const _Alloc& __a) + { return _S_max_size(__a); } + + /** + * @brief Obtain an allocator to use when copying a container. + * @param __rhs An allocator. + * @return @c __rhs.select_on_container_copy_construction() or @a __rhs + * + * Returns @c __rhs.select_on_container_copy_construction() if that + * expression is well-formed, otherwise returns @a __rhs + */ + static _Alloc + select_on_container_copy_construction(const _Alloc& __rhs) + { return _S_select(__rhs); } + }; + + 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; + }; + + // true if _Alloc::value_type is CopyInsertable into containers using _Alloc + template + struct __is_copy_insertable + : __is_copy_insertable_impl<_Alloc>::type + { }; + + // std::allocator<_Tp> just requires CopyConstructible + template + struct __is_copy_insertable> + : is_copy_constructible<_Tp> + { }; + + // Used to allow copy construction of unordered containers + template struct __allow_copy_cons { }; + + // Used to delete copy constructor of unordered containers + 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>; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/allocator.h new file mode 100644 index 0000000..28df242 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/allocator.h @@ -0,0 +1,221 @@ +// Allocators -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1996-1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _ALLOCATOR_H +#define _ALLOCATOR_H 1 + +#include // Define the base class to std::allocator. +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup allocators + * @{ + */ + + /// allocator specialization. + 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; }; + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2103. std::allocator propagate_on_container_move_assignment + typedef true_type propagate_on_container_move_assignment; +#endif + }; + + /** + * @brief The @a standard allocator, as per [20.4]. + * + * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt04ch11.html + * for further details. + * + * @tparam _Tp Type of allocated object. + */ + 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; }; + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2103. std::allocator propagate_on_container_move_assignment + typedef true_type propagate_on_container_move_assignment; +#endif + + allocator() throw() { } + + allocator(const allocator& __a) throw() + : __allocator_base<_Tp>(__a) { } + + template + allocator(const allocator<_Tp1>&) throw() { } + + ~allocator() throw() { } + + // Inherit everything else. + }; + + 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; } + + /// @} group allocator + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template class allocator; + extern template class allocator; +#endif + + // Undefine. +#undef __allocator_base + + // To implement Option 3 of DR 431. + 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) + { + // Precondition: swappable allocators. + if (__one != __two) + swap(__one, __two); + } + }; + + // Optimize for stateless allocators. + 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; } + }; + +#if __cplusplus >= 201103L + 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) + { + __try + { + _Tp(__make_move_if_noexcept_iterator(__c.begin()), + __make_move_if_noexcept_iterator(__c.end()), + __c.get_allocator()).swap(__c); + return true; + } + __catch(...) + { return false; } + } + }; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/atomic_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/atomic_base.h new file mode 100644 index 0000000..609fe8b --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/atomic_base.h @@ -0,0 +1,888 @@ +// -*- C++ -*- header. + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/atomic_base.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{atomic} + */ + +#ifndef _GLIBCXX_ATOMIC_BASE_H +#define _GLIBCXX_ATOMIC_BASE_H 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup atomics Atomics + * + * Components for performing atomic operations. + * @{ + */ + + /// Enumeration for memory_order + typedef enum memory_order + { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst + } memory_order; + + enum __memory_order_modifier + { + __memory_order_mask = 0x0ffff, + __memory_order_modifier_mask = 0xffff0000, + __memory_order_hle_acquire = 0x10000, + __memory_order_hle_release = 0x20000 + }; + + constexpr memory_order + operator|(memory_order __m, __memory_order_modifier __mod) + { + return memory_order(__m | int(__mod)); + } + + constexpr memory_order + operator&(memory_order __m, __memory_order_modifier __mod) + { + return memory_order(__m & int(__mod)); + } + + // Drop release ordering as per [atomics.types.operations.req]/21 + constexpr memory_order + __cmpexch_failure_order2(memory_order __m) noexcept + { + return __m == memory_order_acq_rel ? memory_order_acquire + : __m == memory_order_release ? memory_order_relaxed : __m; + } + + constexpr memory_order + __cmpexch_failure_order(memory_order __m) noexcept + { + return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) + | (__m & __memory_order_modifier_mask)); + } + + inline void + atomic_thread_fence(memory_order __m) noexcept + { __atomic_thread_fence(__m); } + + inline void + atomic_signal_fence(memory_order __m) noexcept + { __atomic_signal_fence(__m); } + + /// kill_dependency + template + inline _Tp + kill_dependency(_Tp __y) noexcept + { + _Tp __ret(__y); + return __ret; + } + + + // Base types for atomics. + template + struct __atomic_base; + + /// atomic_char + typedef __atomic_base atomic_char; + + /// atomic_schar + typedef __atomic_base atomic_schar; + + /// atomic_uchar + typedef __atomic_base atomic_uchar; + + /// atomic_short + typedef __atomic_base atomic_short; + + /// atomic_ushort + typedef __atomic_base atomic_ushort; + + /// atomic_int + typedef __atomic_base atomic_int; + + /// atomic_uint + typedef __atomic_base atomic_uint; + + /// atomic_long + typedef __atomic_base atomic_long; + + /// atomic_ulong + typedef __atomic_base atomic_ulong; + + /// atomic_llong + typedef __atomic_base atomic_llong; + + /// atomic_ullong + typedef __atomic_base atomic_ullong; + + /// atomic_wchar_t + typedef __atomic_base atomic_wchar_t; + + /// atomic_char16_t + typedef __atomic_base atomic_char16_t; + + /// atomic_char32_t + typedef __atomic_base atomic_char32_t; + + /// atomic_char32_t + typedef __atomic_base atomic_char32_t; + + + /// atomic_int_least8_t + typedef __atomic_base atomic_int_least8_t; + + /// atomic_uint_least8_t + typedef __atomic_base atomic_uint_least8_t; + + /// atomic_int_least16_t + typedef __atomic_base atomic_int_least16_t; + + /// atomic_uint_least16_t + typedef __atomic_base atomic_uint_least16_t; + + /// atomic_int_least32_t + typedef __atomic_base atomic_int_least32_t; + + /// atomic_uint_least32_t + typedef __atomic_base atomic_uint_least32_t; + + /// atomic_int_least64_t + typedef __atomic_base atomic_int_least64_t; + + /// atomic_uint_least64_t + typedef __atomic_base atomic_uint_least64_t; + + + /// atomic_int_fast8_t + typedef __atomic_base atomic_int_fast8_t; + + /// atomic_uint_fast8_t + typedef __atomic_base atomic_uint_fast8_t; + + /// atomic_int_fast16_t + typedef __atomic_base atomic_int_fast16_t; + + /// atomic_uint_fast16_t + typedef __atomic_base atomic_uint_fast16_t; + + /// atomic_int_fast32_t + typedef __atomic_base atomic_int_fast32_t; + + /// atomic_uint_fast32_t + typedef __atomic_base atomic_uint_fast32_t; + + /// atomic_int_fast64_t + typedef __atomic_base atomic_int_fast64_t; + + /// atomic_uint_fast64_t + typedef __atomic_base atomic_uint_fast64_t; + + + /// atomic_intptr_t + typedef __atomic_base atomic_intptr_t; + + /// atomic_uintptr_t + typedef __atomic_base atomic_uintptr_t; + + /// atomic_size_t + typedef __atomic_base atomic_size_t; + + /// atomic_intmax_t + typedef __atomic_base atomic_intmax_t; + + /// atomic_uintmax_t + typedef __atomic_base atomic_uintmax_t; + + /// atomic_ptrdiff_t + typedef __atomic_base atomic_ptrdiff_t; + + +#define ATOMIC_VAR_INIT(_VI) { _VI } + + template + struct atomic; + + template + struct atomic<_Tp*>; + + /* The target's "set" value for test-and-set may not be exactly 1. */ +#if __GCC_ATOMIC_TEST_AND_SET_TRUEVAL == 1 + typedef bool __atomic_flag_data_type; +#else + typedef unsigned char __atomic_flag_data_type; +#endif + + /** + * @brief Base type for atomic_flag. + * + * Base type is POD with data, allowing atomic_flag to derive from + * it and meet the standard layout type requirement. In addition to + * compatibilty with a C interface, this allows different + * implementations of atomic_flag to use the same atomic operation + * functions, via a standard conversion to the __atomic_flag_base + * argument. + */ + _GLIBCXX_BEGIN_EXTERN_C + + struct __atomic_flag_base + { + __atomic_flag_data_type _M_i; + }; + + _GLIBCXX_END_EXTERN_C + +#define ATOMIC_FLAG_INIT { 0 } + + /// atomic_flag + struct atomic_flag : public __atomic_flag_base + { + atomic_flag() noexcept = default; + ~atomic_flag() noexcept = default; + atomic_flag(const atomic_flag&) = delete; + atomic_flag& operator=(const atomic_flag&) = delete; + atomic_flag& operator=(const atomic_flag&) volatile = delete; + + // Conversion to ATOMIC_FLAG_INIT. + constexpr atomic_flag(bool __i) noexcept + : __atomic_flag_base{ _S_init(__i) } + { } + + bool + test_and_set(memory_order __m = memory_order_seq_cst) noexcept + { + return __atomic_test_and_set (&_M_i, __m); + } + + bool + test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept + { + return __atomic_test_and_set (&_M_i, __m); + } + + void + clear(memory_order __m = memory_order_seq_cst) noexcept + { + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_consume); + __glibcxx_assert(__b != memory_order_acquire); + __glibcxx_assert(__b != memory_order_acq_rel); + + __atomic_clear (&_M_i, __m); + } + + void + clear(memory_order __m = memory_order_seq_cst) volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_consume); + __glibcxx_assert(__b != memory_order_acquire); + __glibcxx_assert(__b != memory_order_acq_rel); + + __atomic_clear (&_M_i, __m); + } + + private: + static constexpr __atomic_flag_data_type + _S_init(bool __i) + { return __i ? __GCC_ATOMIC_TEST_AND_SET_TRUEVAL : 0; } + }; + + + /// Base class for atomic integrals. + // + // For each of the integral types, define atomic_[integral type] struct + // + // atomic_bool bool + // atomic_char char + // atomic_schar signed char + // atomic_uchar unsigned char + // atomic_short short + // atomic_ushort unsigned short + // atomic_int int + // atomic_uint unsigned int + // atomic_long long + // atomic_ulong unsigned long + // atomic_llong long long + // atomic_ullong unsigned long long + // atomic_char16_t char16_t + // atomic_char32_t char32_t + // atomic_wchar_t wchar_t + // + // NB: Assuming _ITp is an integral scalar type that is 1, 2, 4, or + // 8 bytes, since that is what GCC built-in functions for atomic + // memory access expect. + template + struct __atomic_base + { + private: + typedef _ITp __int_type; + + __int_type _M_i; + + public: + __atomic_base() noexcept = default; + ~__atomic_base() noexcept = default; + __atomic_base(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) volatile = delete; + + // Requires __int_type convertible to _M_i. + constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } + + operator __int_type() const noexcept + { return load(); } + + operator __int_type() const volatile noexcept + { return load(); } + + __int_type + operator=(__int_type __i) noexcept + { + store(__i); + return __i; + } + + __int_type + operator=(__int_type __i) volatile noexcept + { + store(__i); + return __i; + } + + __int_type + operator++(int) noexcept + { return fetch_add(1); } + + __int_type + operator++(int) volatile noexcept + { return fetch_add(1); } + + __int_type + operator--(int) noexcept + { return fetch_sub(1); } + + __int_type + operator--(int) volatile noexcept + { return fetch_sub(1); } + + __int_type + operator++() noexcept + { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator++() volatile noexcept + { return __atomic_add_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator--() noexcept + { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator--() volatile noexcept + { return __atomic_sub_fetch(&_M_i, 1, memory_order_seq_cst); } + + __int_type + operator+=(__int_type __i) noexcept + { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator+=(__int_type __i) volatile noexcept + { return __atomic_add_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator-=(__int_type __i) noexcept + { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator-=(__int_type __i) volatile noexcept + { return __atomic_sub_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator&=(__int_type __i) noexcept + { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator&=(__int_type __i) volatile noexcept + { return __atomic_and_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator|=(__int_type __i) noexcept + { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator|=(__int_type __i) volatile noexcept + { return __atomic_or_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator^=(__int_type __i) noexcept + { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } + + __int_type + operator^=(__int_type __i) volatile noexcept + { return __atomic_xor_fetch(&_M_i, __i, memory_order_seq_cst); } + + bool + is_lock_free() const noexcept + { return __atomic_is_lock_free(sizeof(_M_i), nullptr); } + + bool + is_lock_free() const volatile noexcept + { return __atomic_is_lock_free(sizeof(_M_i), nullptr); } + + void + store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept + { + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_acquire); + __glibcxx_assert(__b != memory_order_acq_rel); + __glibcxx_assert(__b != memory_order_consume); + + __atomic_store_n(&_M_i, __i, __m); + } + + void + store(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_acquire); + __glibcxx_assert(__b != memory_order_acq_rel); + __glibcxx_assert(__b != memory_order_consume); + + __atomic_store_n(&_M_i, __i, __m); + } + + __int_type + load(memory_order __m = memory_order_seq_cst) const noexcept + { + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_release); + __glibcxx_assert(__b != memory_order_acq_rel); + + return __atomic_load_n(&_M_i, __m); + } + + __int_type + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_release); + __glibcxx_assert(__b != memory_order_acq_rel); + + return __atomic_load_n(&_M_i, __m); + } + + __int_type + exchange(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { + return __atomic_exchange_n(&_M_i, __i, __m); + } + + + __int_type + exchange(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return __atomic_exchange_n(&_M_i, __i, __m); + } + + bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m1, memory_order __m2) noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + __glibcxx_assert(__b2 != memory_order_release); + __glibcxx_assert(__b2 != memory_order_acq_rel); + __glibcxx_assert(__b2 <= __b1); + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); + } + + bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m1, + memory_order __m2) volatile noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + __glibcxx_assert(__b2 != memory_order_release); + __glibcxx_assert(__b2 != memory_order_acq_rel); + __glibcxx_assert(__b2 <= __b1); + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); + } + + bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) noexcept + { + return compare_exchange_weak(__i1, __i2, __m, + __cmpexch_failure_order(__m)); + } + + bool + compare_exchange_weak(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return compare_exchange_weak(__i1, __i2, __m, + __cmpexch_failure_order(__m)); + } + + bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m1, memory_order __m2) noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + __glibcxx_assert(__b2 != memory_order_release); + __glibcxx_assert(__b2 != memory_order_acq_rel); + __glibcxx_assert(__b2 <= __b1); + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); + } + + bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m1, + memory_order __m2) volatile noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + + __glibcxx_assert(__b2 != memory_order_release); + __glibcxx_assert(__b2 != memory_order_acq_rel); + __glibcxx_assert(__b2 <= __b1); + + return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); + } + + bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) noexcept + { + return compare_exchange_strong(__i1, __i2, __m, + __cmpexch_failure_order(__m)); + } + + bool + compare_exchange_strong(__int_type& __i1, __int_type __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return compare_exchange_strong(__i1, __i2, __m, + __cmpexch_failure_order(__m)); + } + + __int_type + fetch_add(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_add(&_M_i, __i, __m); } + + __int_type + fetch_add(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_add(&_M_i, __i, __m); } + + __int_type + fetch_sub(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_sub(&_M_i, __i, __m); } + + __int_type + fetch_sub(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_sub(&_M_i, __i, __m); } + + __int_type + fetch_and(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_and(&_M_i, __i, __m); } + + __int_type + fetch_and(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_and(&_M_i, __i, __m); } + + __int_type + fetch_or(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_or(&_M_i, __i, __m); } + + __int_type + fetch_or(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_or(&_M_i, __i, __m); } + + __int_type + fetch_xor(__int_type __i, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_xor(&_M_i, __i, __m); } + + __int_type + fetch_xor(__int_type __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_xor(&_M_i, __i, __m); } + }; + + + /// Partial specialization for pointer types. + template + struct __atomic_base<_PTp*> + { + private: + typedef _PTp* __pointer_type; + + __pointer_type _M_p; + + // Factored out to facilitate explicit specialization. + constexpr ptrdiff_t + _M_type_size(ptrdiff_t __d) { return __d * sizeof(_PTp); } + + constexpr ptrdiff_t + _M_type_size(ptrdiff_t __d) volatile { return __d * sizeof(_PTp); } + + public: + __atomic_base() noexcept = default; + ~__atomic_base() noexcept = default; + __atomic_base(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) = delete; + __atomic_base& operator=(const __atomic_base&) volatile = delete; + + // Requires __pointer_type convertible to _M_p. + constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } + + operator __pointer_type() const noexcept + { return load(); } + + operator __pointer_type() const volatile noexcept + { return load(); } + + __pointer_type + operator=(__pointer_type __p) noexcept + { + store(__p); + return __p; + } + + __pointer_type + operator=(__pointer_type __p) volatile noexcept + { + store(__p); + return __p; + } + + __pointer_type + operator++(int) noexcept + { return fetch_add(1); } + + __pointer_type + operator++(int) volatile noexcept + { return fetch_add(1); } + + __pointer_type + operator--(int) noexcept + { return fetch_sub(1); } + + __pointer_type + operator--(int) volatile noexcept + { return fetch_sub(1); } + + __pointer_type + operator++() noexcept + { return __atomic_add_fetch(&_M_p, _M_type_size(1), + memory_order_seq_cst); } + + __pointer_type + operator++() volatile noexcept + { return __atomic_add_fetch(&_M_p, _M_type_size(1), + memory_order_seq_cst); } + + __pointer_type + operator--() noexcept + { return __atomic_sub_fetch(&_M_p, _M_type_size(1), + memory_order_seq_cst); } + + __pointer_type + operator--() volatile noexcept + { return __atomic_sub_fetch(&_M_p, _M_type_size(1), + memory_order_seq_cst); } + + __pointer_type + operator+=(ptrdiff_t __d) noexcept + { return __atomic_add_fetch(&_M_p, _M_type_size(__d), + memory_order_seq_cst); } + + __pointer_type + operator+=(ptrdiff_t __d) volatile noexcept + { return __atomic_add_fetch(&_M_p, _M_type_size(__d), + memory_order_seq_cst); } + + __pointer_type + operator-=(ptrdiff_t __d) noexcept + { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), + memory_order_seq_cst); } + + __pointer_type + operator-=(ptrdiff_t __d) volatile noexcept + { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), + memory_order_seq_cst); } + + bool + is_lock_free() const noexcept + { return __atomic_is_lock_free(_M_type_size(1), nullptr); } + + bool + is_lock_free() const volatile noexcept + { return __atomic_is_lock_free(_M_type_size(1), nullptr); } + + void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { + memory_order __b = __m & __memory_order_mask; + + __glibcxx_assert(__b != memory_order_acquire); + __glibcxx_assert(__b != memory_order_acq_rel); + __glibcxx_assert(__b != memory_order_consume); + + __atomic_store_n(&_M_p, __p, __m); + } + + void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_acquire); + __glibcxx_assert(__b != memory_order_acq_rel); + __glibcxx_assert(__b != memory_order_consume); + + __atomic_store_n(&_M_p, __p, __m); + } + + __pointer_type + load(memory_order __m = memory_order_seq_cst) const noexcept + { + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_release); + __glibcxx_assert(__b != memory_order_acq_rel); + + return __atomic_load_n(&_M_p, __m); + } + + __pointer_type + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { + memory_order __b = __m & __memory_order_mask; + __glibcxx_assert(__b != memory_order_release); + __glibcxx_assert(__b != memory_order_acq_rel); + + return __atomic_load_n(&_M_p, __m); + } + + __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { + return __atomic_exchange_n(&_M_p, __p, __m); + } + + + __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return __atomic_exchange_n(&_M_p, __p, __m); + } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + __glibcxx_assert(__b2 != memory_order_release); + __glibcxx_assert(__b2 != memory_order_acq_rel); + __glibcxx_assert(__b2 <= __b1); + + return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); + } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) volatile noexcept + { + memory_order __b2 = __m2 & __memory_order_mask; + memory_order __b1 = __m1 & __memory_order_mask; + + __glibcxx_assert(__b2 != memory_order_release); + __glibcxx_assert(__b2 != memory_order_acq_rel); + __glibcxx_assert(__b2 <= __b1); + + return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); + } + + __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } + + __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_add(&_M_p, _M_type_size(__d), __m); } + + __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } + + __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), __m); } + }; + + // @} group atomics + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/atomic_lockfree_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/atomic_lockfree_defines.h new file mode 100644 index 0000000..e08907b --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/atomic_lockfree_defines.h @@ -0,0 +1,63 @@ +// -*- C++ -*- header. + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/atomic_lockfree_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{atomic} + */ + +#ifndef _GLIBCXX_ATOMIC_LOCK_FREE_H +#define _GLIBCXX_ATOMIC_LOCK_FREE_H 1 + +#pragma GCC system_header + +/** + * @addtogroup atomics + * @{ + */ + +/** + * Lock-free property. + * + * 0 indicates that the types are never lock-free. + * 1 indicates that the types are sometimes lock-free. + * 2 indicates that the types are always lock-free. + */ + +#if __cplusplus >= 201103L +#define ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE +#define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE +#define ATOMIC_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_T_LOCK_FREE +#define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE +#define ATOMIC_CHAR32_T_LOCK_FREE __GCC_ATOMIC_CHAR32_T_LOCK_FREE +#define ATOMIC_SHORT_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE +#define ATOMIC_INT_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE +#define ATOMIC_LONG_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE +#define ATOMIC_LLONG_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE +#define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE +#endif + +// @} group atomics + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_ios.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_ios.h new file mode 100644 index 0000000..5325800 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_ios.h @@ -0,0 +1,477 @@ +// Iostreams base classes -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/basic_ios.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _BASIC_IOS_H +#define _BASIC_IOS_H 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + inline const _Facet& + __check_facet(const _Facet* __f) + { + if (!__f) + __throw_bad_cast(); + return *__f; + } + + /** + * @brief Template class basic_ios, virtual base class for all + * stream classes. + * @ingroup io + * + * @tparam _CharT Type of character stream. + * @tparam _Traits Traits for character type, defaults to + * char_traits<_CharT>. + * + * Most of the member functions called dispatched on stream objects + * (e.g., @c std::cout.foo(bar);) are consolidated in this class. + */ + template + class basic_ios : public ios_base + { + public: + //@{ + /** + * These are standard types. They permit a standardized way of + * referring to names of (or names dependent on) the template + * parameters, which are specific to the implementation. + */ + 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; + //@} + + //@{ + /** + * These are non-standard types. + */ + 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; + //@} + + // Data members: + protected: + basic_ostream<_CharT, _Traits>* _M_tie; + mutable char_type _M_fill; + mutable bool _M_fill_init; + basic_streambuf<_CharT, _Traits>* _M_streambuf; + + // Cached use_facet, which is based on the current locale info. + const __ctype_type* _M_ctype; + // For ostream. + const __num_put_type* _M_num_put; + // For istream. + const __num_get_type* _M_num_get; + + public: + //@{ + /** + * @brief The quick-and-easy status check. + * + * This allows you to write constructs such as + * if (!a_stream) ... and while (a_stream) ... + */ + operator void*() const + { return this->fail() ? 0 : const_cast(this); } + + bool + operator!() const + { return this->fail(); } + //@} + + /** + * @brief Returns the error state of the stream buffer. + * @return A bit pattern (well, isn't everything?) + * + * See std::ios_base::iostate for the possible bit values. Most + * users will call one of the interpreting wrappers, e.g., good(). + */ + iostate + rdstate() const + { return _M_streambuf_state; } + + /** + * @brief [Re]sets the error state. + * @param __state The new state flag(s) to set. + * + * See std::ios_base::iostate for the possible bit values. Most + * users will not need to pass an argument. + */ + void + clear(iostate __state = goodbit); + + /** + * @brief Sets additional flags in the error state. + * @param __state The additional state flag(s) to set. + * + * See std::ios_base::iostate for the possible bit values. + */ + void + setstate(iostate __state) + { this->clear(this->rdstate() | __state); } + + // Flip the internal state on for the proper state bits, then re + // throws the propagated exception if bit also set in + // exceptions(). + void + _M_setstate(iostate __state) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + _M_streambuf_state |= __state; + if (this->exceptions() & __state) + __throw_exception_again; + } + + /** + * @brief Fast error checking. + * @return True if no error flags are set. + * + * A wrapper around rdstate. + */ + bool + good() const + { return this->rdstate() == 0; } + + /** + * @brief Fast error checking. + * @return True if the eofbit is set. + * + * Note that other iostate flags may also be set. + */ + bool + eof() const + { return (this->rdstate() & eofbit) != 0; } + + /** + * @brief Fast error checking. + * @return True if either the badbit or the failbit is set. + * + * Checking the badbit in fail() is historical practice. + * Note that other iostate flags may also be set. + */ + bool + fail() const + { return (this->rdstate() & (badbit | failbit)) != 0; } + + /** + * @brief Fast error checking. + * @return True if the badbit is set. + * + * Note that other iostate flags may also be set. + */ + bool + bad() const + { return (this->rdstate() & badbit) != 0; } + + /** + * @brief Throwing exceptions on errors. + * @return The current exceptions mask. + * + * This changes nothing in the stream. See the one-argument version + * of exceptions(iostate) for the meaning of the return value. + */ + iostate + exceptions() const + { return _M_exception; } + + /** + * @brief Throwing exceptions on errors. + * @param __except The new exceptions mask. + * + * By default, error flags are set silently. You can set an + * exceptions mask for each stream; if a bit in the mask becomes set + * in the error flags, then an exception of type + * std::ios_base::failure is thrown. + * + * If the error flag is already set when the exceptions mask is + * added, the exception is immediately thrown. Try running the + * following under GCC 3.1 or later: + * @code + * #include + * #include + * #include + * + * int main() + * { + * std::set_terminate (__gnu_cxx::__verbose_terminate_handler); + * + * std::ifstream f ("/etc/motd"); + * + * std::cerr << "Setting badbit\n"; + * f.setstate (std::ios_base::badbit); + * + * std::cerr << "Setting exception mask\n"; + * f.exceptions (std::ios_base::badbit); + * } + * @endcode + */ + void + exceptions(iostate __except) + { + _M_exception = __except; + this->clear(_M_streambuf_state); + } + + // Constructor/destructor: + /** + * @brief Constructor performs initialization. + * + * The parameter is passed by derived streams. + */ + 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); } + + /** + * @brief Empty. + * + * The destructor does nothing. More specifically, it does not + * destroy the streambuf held by rdbuf(). + */ + virtual + ~basic_ios() { } + + // Members: + /** + * @brief Fetches the current @e tied stream. + * @return A pointer to the tied stream, or NULL if the stream is + * not tied. + * + * A stream may be @e tied (or synchronized) to a second output + * stream. When this stream performs any I/O, the tied stream is + * first flushed. For example, @c std::cin is tied to @c std::cout. + */ + basic_ostream<_CharT, _Traits>* + tie() const + { return _M_tie; } + + /** + * @brief Ties this stream to an output stream. + * @param __tiestr The output stream. + * @return The previously tied output stream, or NULL if the stream + * was not tied. + * + * This sets up a new tie; see tie() for more. + */ + basic_ostream<_CharT, _Traits>* + tie(basic_ostream<_CharT, _Traits>* __tiestr) + { + basic_ostream<_CharT, _Traits>* __old = _M_tie; + _M_tie = __tiestr; + return __old; + } + + /** + * @brief Accessing the underlying buffer. + * @return The current stream buffer. + * + * This does not change the state of the stream. + */ + basic_streambuf<_CharT, _Traits>* + rdbuf() const + { return _M_streambuf; } + + /** + * @brief Changing the underlying buffer. + * @param __sb The new stream buffer. + * @return The previous stream buffer. + * + * Associates a new buffer with the current stream, and clears the + * error state. + * + * Due to historical accidents which the LWG refuses to correct, the + * I/O library suffers from a design error: this function is hidden + * in derived classes by overrides of the zero-argument @c rdbuf(), + * which is non-virtual for hysterical raisins. As a result, you + * must use explicit qualifications to access this function via any + * derived class. For example: + * + * @code + * std::fstream foo; // or some other derived type + * std::streambuf* p = .....; + * + * foo.ios::rdbuf(p); // ios == basic_ios + * @endcode + */ + basic_streambuf<_CharT, _Traits>* + rdbuf(basic_streambuf<_CharT, _Traits>* __sb); + + /** + * @brief Copies fields of __rhs into this. + * @param __rhs The source values for the copies. + * @return Reference to this object. + * + * All fields of __rhs are copied into this object except that rdbuf() + * and rdstate() remain unchanged. All values in the pword and iword + * arrays are copied. Before copying, each callback is invoked with + * erase_event. After copying, each (new) callback is invoked with + * copyfmt_event. The final step is to copy exceptions(). + */ + basic_ios& + copyfmt(const basic_ios& __rhs); + + /** + * @brief Retrieves the @a empty character. + * @return The current fill character. + * + * It defaults to a space (' ') in the current locale. + */ + char_type + fill() const + { + if (!_M_fill_init) + { + _M_fill = this->widen(' '); + _M_fill_init = true; + } + return _M_fill; + } + + /** + * @brief Sets a new @a empty character. + * @param __ch The new character. + * @return The previous fill character. + * + * The fill character is used to fill out space when P+ characters + * have been requested (e.g., via setw), Q characters are actually + * used, and Qfill(); + _M_fill = __ch; + return __old; + } + + // Locales: + /** + * @brief Moves to a new locale. + * @param __loc The new locale. + * @return The previous locale. + * + * Calls @c ios_base::imbue(loc), and if a stream buffer is associated + * with this stream, calls that buffer's @c pubimbue(loc). + * + * Additional l10n notes are at + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html + */ + locale + imbue(const locale& __loc); + + /** + * @brief Squeezes characters. + * @param __c The character to narrow. + * @param __dfault The character to narrow. + * @return The narrowed character. + * + * Maps a character of @c char_type to a character of @c char, + * if possible. + * + * Returns the result of + * @code + * std::use_facet >(getloc()).narrow(c,dfault) + * @endcode + * + * Additional l10n notes are at + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html + */ + char + narrow(char_type __c, char __dfault) const + { return __check_facet(_M_ctype).narrow(__c, __dfault); } + + /** + * @brief Widens characters. + * @param __c The character to widen. + * @return The widened character. + * + * Maps a character of @c char to a character of @c char_type. + * + * Returns the result of + * @code + * std::use_facet >(getloc()).widen(c) + * @endcode + * + * Additional l10n notes are at + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html + */ + char_type + widen(char __c) const + { return __check_facet(_M_ctype).widen(__c); } + + protected: + // 27.4.5.1 basic_ios constructors + /** + * @brief Empty. + * + * The default constructor does nothing and is not normally + * accessible to users. + */ + 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) + { } + + /** + * @brief All setup is performed here. + * + * This is called from the public constructor. It is not virtual and + * cannot be redefined. + */ + void + init(basic_streambuf<_CharT, _Traits>* __sb); + + void + _M_cache_locale(const locale& __loc); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#include + +#endif /* _BASIC_IOS_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_ios.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_ios.tcc new file mode 100644 index 0000000..6045a65 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_ios.tcc @@ -0,0 +1,188 @@ +// basic_ios member functions -*- C++ -*- + +// Copyright (C) 1999-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/basic_ios.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _BASIC_IOS_TCC +#define _BASIC_IOS_TCC 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + 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(__N("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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 292. effects of a.copyfmt (a) + if (this != &__rhs) + { + // Per 27.1.1, do not call imbue, yet must trash all caches + // associated with imbue() + + // Alloc any new word array first, so if it fails we have "rollback". + _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? + _M_local_word : new _Words[__rhs._M_word_size]; + + // Bump refs before doing callbacks, for safety. + _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(); + + // NB: Don't want any added during above. + _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); + + // The next is required to be the last assignment. + this->exceptions(__rhs.exceptions()); + } + return *this; + } + + // Locales: + 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) + { + // NB: This may be called more than once on the same object. + ios_base::_M_init(); + + // Cache locale data and specific facets used by iostreams. + _M_cache_locale(_M_ios_locale); + + // NB: The 27.4.4.1 Postconditions Table specifies requirements + // after basic_ios::init() has been called. As part of this, + // fill() must return widen(' ') any time after init() has been + // called, which needs an imbued ctype facet of char_type to + // return without throwing an exception. Unfortunately, + // ctype is not necessarily a required facet, so + // streams with char_type != [char, wchar_t] will not have it by + // default. Because of this, the correct value for _M_fill is + // constructed on the first call of fill(). That way, + // unformatted input and output with non-required basic_ios + // instantiations is possible even without imbuing the expected + // ctype facet. + _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; + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template class basic_ios; + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template class basic_ios; +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_string.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_string.h new file mode 100644 index 0000000..23bd9b9 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_string.h @@ -0,0 +1,3111 @@ +// Components for manipulating sequences of characters -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/basic_string.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{string} + */ + +// +// ISO C++ 14882: 21 Strings library +// + +#ifndef _BASIC_STRING_H +#define _BASIC_STRING_H 1 + +#pragma GCC system_header + +#include +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @class basic_string basic_string.h + * @brief Managing sequences of characters and character-like objects. + * + * @ingroup strings + * @ingroup sequences + * + * @tparam _CharT Type of character + * @tparam _Traits Traits for character type, defaults to + * char_traits<_CharT>. + * @tparam _Alloc Allocator type, defaults to allocator<_CharT>. + * + * Meets the requirements of a container, a + * reversible container, and a + * sequence. Of the + * optional sequence requirements, only + * @c push_back, @c at, and @c %array access are supported. + * + * @doctodo + * + * + * Documentation? What's that? + * Nathan Myers . + * + * A string looks like this: + * + * @code + * [_Rep] + * _M_length + * [basic_string] _M_capacity + * _M_dataplus _M_refcount + * _M_p ----------------> unnamed array of char_type + * @endcode + * + * Where the _M_p points to the first character in the string, and + * you cast it to a pointer-to-_Rep and subtract 1 to get a + * pointer to the header. + * + * This approach has the enormous advantage that a string object + * requires only one allocation. All the ugliness is confined + * within a single %pair of inline functions, which each compile to + * a single @a add instruction: _Rep::_M_data(), and + * string::_M_rep(); and the allocation function which gets a + * block of raw bytes and with room enough and constructs a _Rep + * object at the front. + * + * The reason you want _M_data pointing to the character %array and + * not the _Rep is so that the debugger can see the string + * contents. (Probably we should add a non-inline member to get + * the _Rep for the debugger to use, so users can check the actual + * string length.) + * + * Note that the _Rep object is a POD so that you can have a + * static empty string _Rep object already @a constructed before + * static constructors have run. The reference-count encoding is + * chosen so that a 0 indicates one reference, so you never try to + * destroy the empty-string _Rep object. + * + * All but the last paragraph is considered pretty conventional + * for a C++ string implementation. + */ + // 21.3 Template class basic_string + template + class basic_string + { + typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type; + + // Types: + 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: + // _Rep: string representation + // Invariants: + // 1. String really contains _M_length + 1 characters: due to 21.3.4 + // must be kept null-terminated. + // 2. _M_capacity >= _M_length + // Allocated memory is always (_M_capacity + 1) * sizeof(_CharT). + // 3. _M_refcount has three states: + // -1: leaked, one reference, no ref-copies allowed, non-const. + // 0: one reference, non-const. + // n>0: n + 1 references, operations require a lock, const. + // 4. All fields==0 is an empty string, given the extra storage + // beyond-the-end for a null terminator; thus, the shared + // empty string representation needs no constructor. + + struct _Rep_base + { + size_type _M_length; + size_type _M_capacity; + _Atomic_word _M_refcount; + }; + + struct _Rep : _Rep_base + { + // Types: + typedef typename _Alloc::template rebind::other _Raw_bytes_alloc; + + // (Public) Data members: + + // The maximum number of individual char_type elements of an + // individual string is determined by _S_max_size. This is the + // value that will be returned by max_size(). (Whereas npos + // is the maximum number of bytes the allocator can allocate.) + // If one was to divvy up the theoretical largest size string, + // with a terminating character and m _CharT elements, it'd + // look like this: + // npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT) + // Solving for m: + // m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1 + // In addition, this implementation quarters this amount. + static const size_type _S_max_size; + static const _CharT _S_terminal; + + // The following storage is init'd to 0 by the linker, resulting + // (carefully) in an empty string with one reference. + static size_type _S_empty_rep_storage[]; + + static _Rep& + _S_empty_rep() + { + // NB: Mild hack to avoid strict-aliasing warnings. Note that + // _S_empty_rep_storage is never modified and the punning should + // be reasonably safe in this case. + 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 _GLIBCXX_FULLY_DYNAMIC_STRING == 0 + if (__builtin_expect(this != &_S_empty_rep(), false)) +#endif + { + this->_M_set_sharable(); // One reference. + this->_M_length = __n; + traits_type::assign(this->_M_refdata()[__n], _S_terminal); + // grrr. (per 21.3.4) + // You cannot leave those LWG people alone for a second. + } + } + + _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); + } + + // Create & Destroy + static _Rep* + _S_create(size_type, size_type, const _Alloc&); + + void + _M_dispose(const _Alloc& __a) + { +#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 + if (__builtin_expect(this != &_S_empty_rep(), false)) +#endif + { + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); + if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, + -1) <= 0) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); + _M_destroy(__a); + } + } + } // XXX MT + + void + _M_destroy(const _Alloc&) throw(); + + _CharT* + _M_refcopy() throw() + { +#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 + if (__builtin_expect(this != &_S_empty_rep(), false)) +#endif + __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1); + return _M_refdata(); + } // XXX MT + + _CharT* + _M_clone(const _Alloc&, size_type __res = 0); + }; + + // Use empty-base optimization: http://www.cantrip.org/emptyopt.html + struct _Alloc_hider : _Alloc + { + _Alloc_hider(_CharT* __dat, const _Alloc& __a) + : _Alloc(__a), _M_p(__dat) { } + + _CharT* _M_p; // The actual data. + }; + + public: + // Data Members (public): + // NB: This is an unsigned type, and thus represents the maximum + // size that the allocator can hold. + /// Value returned by various member functions when they fail. + static const size_type npos = static_cast(-1); + + private: + // Data Members (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]); } + + // For the internal use we have functions similar to `begin'/`end' + // but they do not call _M_leak. + iterator + _M_ibegin() const + { return iterator(_M_data()); } + + iterator + _M_iend() const + { return iterator(_M_data() + this->size()); } + + void + _M_leak() // for use in begin() & non-const op[] + { + 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(__N(__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(__N(__s)); + } + + // NB: _M_limit doesn't check for a bad __pos value. + size_type + _M_limit(size_type __pos, size_type __off) const + { + const bool __testoff = __off < this->size() - __pos; + return __testoff ? __off : this->size() - __pos; + } + + // True if _Rep and source do not overlap. + bool + _M_disjunct(const _CharT* __s) const + { + return (less()(__s, _M_data()) + || less()(_M_data() + this->size(), __s)); + } + + // When __n = 1 way faster than the general multichar + // traits_type::copy/move/assign. + 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); + } + + // _S_copy_chars is a separate template to permit specialization + // to optimize for the common case of pointers as iterators. + template + static void + _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) + { + for (; __k1 != __k2; ++__k1, ++__p) + traits_type::assign(*__p, *__k1); // These types are off. + } + + 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: + // Construct/copy/destroy: + // NB: We overload ctors in some cases instead of using default + // arguments, per 17.4.4.4 para. 2 item 2. + + /** + * @brief Default constructor creates an empty string. + */ + basic_string() +#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 + : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { } +#else + : _M_dataplus(_S_construct(size_type(), _CharT(), _Alloc()), _Alloc()){ } +#endif + + /** + * @brief Construct an empty string using allocator @a a. + */ + explicit + basic_string(const _Alloc& __a); + + // NB: per LWG issue 42, semantics different from IS: + /** + * @brief Construct string with copy of value of @a str. + * @param __str Source string. + */ + basic_string(const basic_string& __str); + /** + * @brief Construct string as copy of a substring. + * @param __str Source string. + * @param __pos Index of first character to copy from. + * @param __n Number of characters to copy (default remainder). + */ + basic_string(const basic_string& __str, size_type __pos, + size_type __n = npos); + /** + * @brief Construct string as copy of a substring. + * @param __str Source string. + * @param __pos Index of first character to copy from. + * @param __n Number of characters to copy. + * @param __a Allocator to use. + */ + basic_string(const basic_string& __str, size_type __pos, + size_type __n, const _Alloc& __a); + + /** + * @brief Construct string initialized by a character %array. + * @param __s Source character %array. + * @param __n Number of characters to copy. + * @param __a Allocator to use (default is default allocator). + * + * NB: @a __s must have at least @a __n characters, '\\0' + * has no special meaning. + */ + basic_string(const _CharT* __s, size_type __n, + const _Alloc& __a = _Alloc()); + /** + * @brief Construct string as copy of a C string. + * @param __s Source C string. + * @param __a Allocator to use (default is default allocator). + */ + basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()); + /** + * @brief Construct string as multiple characters. + * @param __n Number of characters. + * @param __c Character to use. + * @param __a Allocator to use (default is default allocator). + */ + basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()); + +#if __cplusplus >= 201103L + /** + * @brief Move construct string. + * @param __str Source string. + * + * The newly-created string contains the exact contents of @a __str. + * @a __str is a valid, but unspecified string. + **/ + basic_string(basic_string&& __str) noexcept + : _M_dataplus(__str._M_dataplus) + { +#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 + __str._M_data(_S_empty_rep()._M_refdata()); +#else + __str._M_data(_S_construct(size_type(), _CharT(), get_allocator())); +#endif + } + + /** + * @brief Construct string from an initializer %list. + * @param __l std::initializer_list of characters. + * @param __a Allocator to use (default is default allocator). + */ + basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()); +#endif // C++11 + + /** + * @brief Construct string as copy of a range. + * @param __beg Start of range. + * @param __end End of range. + * @param __a Allocator to use (default is default allocator). + */ + template + basic_string(_InputIterator __beg, _InputIterator __end, + const _Alloc& __a = _Alloc()); + + /** + * @brief Destroy the string instance. + */ + ~basic_string() _GLIBCXX_NOEXCEPT + { _M_rep()->_M_dispose(this->get_allocator()); } + + /** + * @brief Assign the value of @a str to this string. + * @param __str Source string. + */ + basic_string& + operator=(const basic_string& __str) + { return this->assign(__str); } + + /** + * @brief Copy contents of @a s into this string. + * @param __s Source null-terminated string. + */ + basic_string& + operator=(const _CharT* __s) + { return this->assign(__s); } + + /** + * @brief Set value to string of length 1. + * @param __c Source character. + * + * Assigning to a character makes this string length 1 and + * (*this)[0] == @a c. + */ + basic_string& + operator=(_CharT __c) + { + this->assign(1, __c); + return *this; + } + +#if __cplusplus >= 201103L + /** + * @brief Move assign the value of @a str to this string. + * @param __str Source string. + * + * The contents of @a str are moved into this string (without copying). + * @a str is a valid, but unspecified string. + **/ + basic_string& + operator=(basic_string&& __str) + { + // NB: DR 1204. + this->swap(__str); + return *this; + } + + /** + * @brief Set value to string constructed from initializer %list. + * @param __l std::initializer_list. + */ + basic_string& + operator=(initializer_list<_CharT> __l) + { + this->assign(__l.begin(), __l.size()); + return *this; + } +#endif // C++11 + + // Iterators: + /** + * Returns a read/write iterator that points to the first character in + * the %string. Unshares the string. + */ + iterator + begin() _GLIBCXX_NOEXCEPT + { + _M_leak(); + return iterator(_M_data()); + } + + /** + * Returns a read-only (constant) iterator that points to the first + * character in the %string. + */ + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_M_data()); } + + /** + * Returns a read/write iterator that points one past the last + * character in the %string. Unshares the string. + */ + iterator + end() _GLIBCXX_NOEXCEPT + { + _M_leak(); + return iterator(_M_data() + this->size()); + } + + /** + * Returns a read-only (constant) iterator that points one past the + * last character in the %string. + */ + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_M_data() + this->size()); } + + /** + * Returns a read/write reverse iterator that points to the last + * character in the %string. Iteration is done in reverse element + * order. Unshares the string. + */ + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(this->end()); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to the last character in the %string. Iteration is done in + * reverse element order. + */ + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(this->end()); } + + /** + * Returns a read/write reverse iterator that points to one before the + * first character in the %string. Iteration is done in reverse + * element order. Unshares the string. + */ + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(this->begin()); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to one before the first character in the %string. Iteration + * is done in reverse element order. + */ + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(this->begin()); } + +#if __cplusplus >= 201103L + /** + * Returns a read-only (constant) iterator that points to the first + * character in the %string. + */ + const_iterator + cbegin() const noexcept + { return const_iterator(this->_M_data()); } + + /** + * Returns a read-only (constant) iterator that points one past the + * last character in the %string. + */ + const_iterator + cend() const noexcept + { return const_iterator(this->_M_data() + this->size()); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to the last character in the %string. Iteration is done in + * reverse element order. + */ + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(this->end()); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to one before the first character in the %string. Iteration + * is done in reverse element order. + */ + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(this->begin()); } +#endif + + public: + // Capacity: + /// Returns the number of characters in the string, not including any + /// null-termination. + size_type + size() const _GLIBCXX_NOEXCEPT + { return _M_rep()->_M_length; } + + /// Returns the number of characters in the string, not including any + /// null-termination. + size_type + length() const _GLIBCXX_NOEXCEPT + { return _M_rep()->_M_length; } + + /// Returns the size() of the largest possible %string. + size_type + max_size() const _GLIBCXX_NOEXCEPT + { return _Rep::_S_max_size; } + + /** + * @brief Resizes the %string to the specified number of characters. + * @param __n Number of characters the %string should contain. + * @param __c Character to fill any new elements. + * + * This function will %resize the %string to the specified + * number of characters. If the number is smaller than the + * %string's current size the %string is truncated, otherwise + * the %string is extended and new elements are %set to @a __c. + */ + void + resize(size_type __n, _CharT __c); + + /** + * @brief Resizes the %string to the specified number of characters. + * @param __n Number of characters the %string should contain. + * + * This function will resize the %string to the specified length. If + * the new size is smaller than the %string's current size the %string + * is truncated, otherwise the %string is extended and new characters + * are default-constructed. For basic types such as char, this means + * setting them to 0. + */ + void + resize(size_type __n) + { this->resize(__n, _CharT()); } + +#if __cplusplus >= 201103L + /// A non-binding request to reduce capacity() to size(). + void + shrink_to_fit() + { + if (capacity() > size()) + { + __try + { reserve(0); } + __catch(...) + { } + } + } +#endif + + /** + * Returns the total number of characters that the %string can hold + * before needing to allocate more memory. + */ + size_type + capacity() const _GLIBCXX_NOEXCEPT + { return _M_rep()->_M_capacity; } + + /** + * @brief Attempt to preallocate enough memory for specified number of + * characters. + * @param __res_arg Number of characters required. + * @throw std::length_error If @a __res_arg exceeds @c max_size(). + * + * This function attempts to reserve enough memory for the + * %string to hold the specified number of characters. If the + * number requested is more than max_size(), length_error is + * thrown. + * + * The advantage of this function is that if optimal code is a + * necessity and the user can determine the string length that will be + * required, the user can reserve the memory in %advance, and thus + * prevent a possible reallocation of memory and copying of %string + * data. + */ + void + reserve(size_type __res_arg = 0); + + /** + * Erases the string, making it empty. + */ + void + clear() _GLIBCXX_NOEXCEPT + { _M_mutate(0, this->size(), 0); } + + /** + * Returns true if the %string is empty. Equivalent to + * *this == "". + */ + bool + empty() const _GLIBCXX_NOEXCEPT + { return this->size() == 0; } + + // Element access: + /** + * @brief Subscript access to the data contained in the %string. + * @param __pos The index of the character to access. + * @return Read-only (constant) reference to the character. + * + * This operator allows for easy, array-style, data access. + * Note that data access with this operator is unchecked and + * out_of_range lookups are not defined. (For checked lookups + * see at().) + */ + const_reference + operator[] (size_type __pos) const + { + _GLIBCXX_DEBUG_ASSERT(__pos <= size()); + return _M_data()[__pos]; + } + + /** + * @brief Subscript access to the data contained in the %string. + * @param __pos The index of the character to access. + * @return Read/write reference to the character. + * + * This operator allows for easy, array-style, data access. + * Note that data access with this operator is unchecked and + * out_of_range lookups are not defined. (For checked lookups + * see at().) Unshares the string. + */ + reference + operator[](size_type __pos) + { + // allow pos == size() as v3 extension: + _GLIBCXX_DEBUG_ASSERT(__pos <= size()); + // but be strict in pedantic mode: + _GLIBCXX_DEBUG_PEDASSERT(__pos < size()); + _M_leak(); + return _M_data()[__pos]; + } + + /** + * @brief Provides access to the data contained in the %string. + * @param __n The index of the character to access. + * @return Read-only (const) reference to the character. + * @throw std::out_of_range If @a n is an invalid index. + * + * This function provides for safer data access. The parameter is + * first checked that it is in the range of the string. The function + * throws out_of_range if the check fails. + */ + const_reference + at(size_type __n) const + { + if (__n >= this->size()) + __throw_out_of_range(__N("basic_string::at")); + return _M_data()[__n]; + } + + /** + * @brief Provides access to the data contained in the %string. + * @param __n The index of the character to access. + * @return Read/write reference to the character. + * @throw std::out_of_range If @a n is an invalid index. + * + * This function provides for safer data access. The parameter is + * first checked that it is in the range of the string. The function + * throws out_of_range if the check fails. Success results in + * unsharing the string. + */ + reference + at(size_type __n) + { + if (__n >= size()) + __throw_out_of_range(__N("basic_string::at")); + _M_leak(); + return _M_data()[__n]; + } + +#if __cplusplus >= 201103L + /** + * Returns a read/write reference to the data at the first + * element of the %string. + */ + reference + front() + { return operator[](0); } + + /** + * Returns a read-only (constant) reference to the data at the first + * element of the %string. + */ + const_reference + front() const + { return operator[](0); } + + /** + * Returns a read/write reference to the data at the last + * element of the %string. + */ + reference + back() + { return operator[](this->size() - 1); } + + /** + * Returns a read-only (constant) reference to the data at the + * last element of the %string. + */ + const_reference + back() const + { return operator[](this->size() - 1); } +#endif + + // Modifiers: + /** + * @brief Append a string to this string. + * @param __str The string to append. + * @return Reference to this string. + */ + basic_string& + operator+=(const basic_string& __str) + { return this->append(__str); } + + /** + * @brief Append a C string. + * @param __s The C string to append. + * @return Reference to this string. + */ + basic_string& + operator+=(const _CharT* __s) + { return this->append(__s); } + + /** + * @brief Append a character. + * @param __c The character to append. + * @return Reference to this string. + */ + basic_string& + operator+=(_CharT __c) + { + this->push_back(__c); + return *this; + } + +#if __cplusplus >= 201103L + /** + * @brief Append an initializer_list of characters. + * @param __l The initializer_list of characters to be appended. + * @return Reference to this string. + */ + basic_string& + operator+=(initializer_list<_CharT> __l) + { return this->append(__l.begin(), __l.size()); } +#endif // C++11 + + /** + * @brief Append a string to this string. + * @param __str The string to append. + * @return Reference to this string. + */ + basic_string& + append(const basic_string& __str); + + /** + * @brief Append a substring. + * @param __str The string to append. + * @param __pos Index of the first character of str to append. + * @param __n The number of characters to append. + * @return Reference to this string. + * @throw std::out_of_range if @a __pos is not a valid index. + * + * This function appends @a __n characters from @a __str + * starting at @a __pos to this string. If @a __n is is larger + * than the number of available characters in @a __str, the + * remainder of @a __str is appended. + */ + basic_string& + append(const basic_string& __str, size_type __pos, size_type __n); + + /** + * @brief Append a C substring. + * @param __s The C string to append. + * @param __n The number of characters to append. + * @return Reference to this string. + */ + basic_string& + append(const _CharT* __s, size_type __n); + + /** + * @brief Append a C string. + * @param __s The C string to append. + * @return Reference to this string. + */ + basic_string& + append(const _CharT* __s) + { + __glibcxx_requires_string(__s); + return this->append(__s, traits_type::length(__s)); + } + + /** + * @brief Append multiple characters. + * @param __n The number of characters to append. + * @param __c The character to use. + * @return Reference to this string. + * + * Appends __n copies of __c to this string. + */ + basic_string& + append(size_type __n, _CharT __c); + +#if __cplusplus >= 201103L + /** + * @brief Append an initializer_list of characters. + * @param __l The initializer_list of characters to append. + * @return Reference to this string. + */ + basic_string& + append(initializer_list<_CharT> __l) + { return this->append(__l.begin(), __l.size()); } +#endif // C++11 + + /** + * @brief Append a range of characters. + * @param __first Iterator referencing the first character to append. + * @param __last Iterator marking the end of the range. + * @return Reference to this string. + * + * Appends characters in the range [__first,__last) to this string. + */ + template + basic_string& + append(_InputIterator __first, _InputIterator __last) + { return this->replace(_M_iend(), _M_iend(), __first, __last); } + + /** + * @brief Append a single character. + * @param __c Character to append. + */ + 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); + } + + /** + * @brief Set value to contents of another string. + * @param __str Source string to use. + * @return Reference to this string. + */ + basic_string& + assign(const basic_string& __str); + +#if __cplusplus >= 201103L + /** + * @brief Set value to contents of another string. + * @param __str Source string to use. + * @return Reference to this string. + * + * This function sets this string to the exact contents of @a __str. + * @a __str is a valid, but unspecified string. + */ + basic_string& + assign(basic_string&& __str) + { + this->swap(__str); + return *this; + } +#endif // C++11 + + /** + * @brief Set value to a substring of a string. + * @param __str The string to use. + * @param __pos Index of the first character of str. + * @param __n Number of characters to use. + * @return Reference to this string. + * @throw std::out_of_range if @a pos is not a valid index. + * + * This function sets this string to the substring of @a __str + * consisting of @a __n characters at @a __pos. If @a __n is + * is larger than the number of available characters in @a + * __str, the remainder of @a __str is used. + */ + 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)); } + + /** + * @brief Set value to a C substring. + * @param __s The C string to use. + * @param __n Number of characters to use. + * @return Reference to this string. + * + * This function sets the value of this string to the first @a __n + * characters of @a __s. If @a __n is is larger than the number of + * available characters in @a __s, the remainder of @a __s is used. + */ + basic_string& + assign(const _CharT* __s, size_type __n); + + /** + * @brief Set value to contents of a C string. + * @param __s The C string to use. + * @return Reference to this string. + * + * This function sets the value of this string to the value of @a __s. + * The data is copied, so there is no dependence on @a __s once the + * function returns. + */ + basic_string& + assign(const _CharT* __s) + { + __glibcxx_requires_string(__s); + return this->assign(__s, traits_type::length(__s)); + } + + /** + * @brief Set value to multiple characters. + * @param __n Length of the resulting string. + * @param __c The character to use. + * @return Reference to this string. + * + * This function sets the value of this string to @a __n copies of + * character @a __c. + */ + basic_string& + assign(size_type __n, _CharT __c) + { return _M_replace_aux(size_type(0), this->size(), __n, __c); } + + /** + * @brief Set value to a range of characters. + * @param __first Iterator referencing the first character to append. + * @param __last Iterator marking the end of the range. + * @return Reference to this string. + * + * Sets value of string to characters in the range [__first,__last). + */ + template + basic_string& + assign(_InputIterator __first, _InputIterator __last) + { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } + +#if __cplusplus >= 201103L + /** + * @brief Set value to an initializer_list of characters. + * @param __l The initializer_list of characters to assign. + * @return Reference to this string. + */ + basic_string& + assign(initializer_list<_CharT> __l) + { return this->assign(__l.begin(), __l.size()); } +#endif // C++11 + + /** + * @brief Insert multiple characters. + * @param __p Iterator referencing location in string to insert at. + * @param __n Number of characters to insert + * @param __c The character to insert. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Inserts @a __n copies of character @a __c starting at the + * position referenced by iterator @a __p. If adding + * characters causes the length to exceed max_size(), + * length_error is thrown. The value of the string doesn't + * change if an error is thrown. + */ + void + insert(iterator __p, size_type __n, _CharT __c) + { this->replace(__p, __p, __n, __c); } + + /** + * @brief Insert a range of characters. + * @param __p Iterator referencing location in string to insert at. + * @param __beg Start of range. + * @param __end End of range. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Inserts characters in range [__beg,__end). If adding + * characters causes the length to exceed max_size(), + * length_error is thrown. The value of the string doesn't + * change if an error is thrown. + */ + template + void + insert(iterator __p, _InputIterator __beg, _InputIterator __end) + { this->replace(__p, __p, __beg, __end); } + +#if __cplusplus >= 201103L + /** + * @brief Insert an initializer_list of characters. + * @param __p Iterator referencing location in string to insert at. + * @param __l The initializer_list of characters to insert. + * @throw std::length_error If new length exceeds @c max_size(). + */ + void + insert(iterator __p, initializer_list<_CharT> __l) + { + _GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend()); + this->insert(__p - _M_ibegin(), __l.begin(), __l.size()); + } +#endif // C++11 + + /** + * @brief Insert value of a string. + * @param __pos1 Iterator referencing location in string to insert at. + * @param __str The string to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Inserts value of @a __str starting at @a __pos1. If adding + * characters causes the length to exceed max_size(), + * length_error is thrown. The value of the string doesn't + * change if an error is thrown. + */ + basic_string& + insert(size_type __pos1, const basic_string& __str) + { return this->insert(__pos1, __str, size_type(0), __str.size()); } + + /** + * @brief Insert a substring. + * @param __pos1 Iterator referencing location in string to insert at. + * @param __str The string to insert. + * @param __pos2 Start of characters in str to insert. + * @param __n Number of characters to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * @throw std::out_of_range If @a pos1 > size() or + * @a __pos2 > @a str.size(). + * + * Starting at @a pos1, insert @a __n character of @a __str + * beginning with @a __pos2. If adding characters causes the + * length to exceed max_size(), length_error is thrown. If @a + * __pos1 is beyond the end of this string or @a __pos2 is + * beyond the end of @a __str, out_of_range is thrown. The + * value of the string doesn't change if an error is thrown. + */ + 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)); } + + /** + * @brief Insert a C substring. + * @param __pos Iterator referencing location in string to insert at. + * @param __s The C string to insert. + * @param __n The number of characters to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * @throw std::out_of_range If @a __pos is beyond the end of this + * string. + * + * Inserts the first @a __n characters of @a __s starting at @a + * __pos. If adding characters causes the length to exceed + * max_size(), length_error is thrown. If @a __pos is beyond + * end(), out_of_range is thrown. The value of the string + * doesn't change if an error is thrown. + */ + basic_string& + insert(size_type __pos, const _CharT* __s, size_type __n); + + /** + * @brief Insert a C string. + * @param __pos Iterator referencing location in string to insert at. + * @param __s The C string to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * @throw std::out_of_range If @a pos is beyond the end of this + * string. + * + * Inserts the first @a n characters of @a __s starting at @a __pos. If + * adding characters causes the length to exceed max_size(), + * length_error is thrown. If @a __pos is beyond end(), out_of_range is + * thrown. The value of the string doesn't change if an error is + * thrown. + */ + basic_string& + insert(size_type __pos, const _CharT* __s) + { + __glibcxx_requires_string(__s); + return this->insert(__pos, __s, traits_type::length(__s)); + } + + /** + * @brief Insert multiple characters. + * @param __pos Index in string to insert at. + * @param __n Number of characters to insert + * @param __c The character to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * @throw std::out_of_range If @a __pos is beyond the end of this + * string. + * + * Inserts @a __n copies of character @a __c starting at index + * @a __pos. If adding characters causes the length to exceed + * max_size(), length_error is thrown. If @a __pos > length(), + * out_of_range is thrown. The value of the string doesn't + * change if an error is thrown. + */ + 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); } + + /** + * @brief Insert one character. + * @param __p Iterator referencing position in string to insert at. + * @param __c The character to insert. + * @return Iterator referencing newly inserted char. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Inserts character @a __c at position referenced by @a __p. + * If adding character causes the length to exceed max_size(), + * length_error is thrown. If @a __p is beyond end of string, + * out_of_range is thrown. The value of the string doesn't + * change if an error is thrown. + */ + iterator + insert(iterator __p, _CharT __c) + { + _GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend()); + 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); + } + + /** + * @brief Remove characters. + * @param __pos Index of first character to remove (default 0). + * @param __n Number of characters to remove (default remainder). + * @return Reference to this string. + * @throw std::out_of_range If @a pos is beyond the end of this + * string. + * + * Removes @a __n characters from this string starting at @a + * __pos. The length of the string is reduced by @a __n. If + * there are < @a __n characters to remove, the remainder of + * the string is truncated. If @a __p is beyond end of string, + * out_of_range is thrown. The value of the string doesn't + * change if an error is thrown. + */ + 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; + } + + /** + * @brief Remove one character. + * @param __position Iterator referencing the character to remove. + * @return iterator referencing same location after removal. + * + * Removes the character at @a __position from this string. The value + * of the string doesn't change if an error is thrown. + */ + iterator + erase(iterator __position) + { + _GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin() + && __position < _M_iend()); + 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); + } + + /** + * @brief Remove a range of characters. + * @param __first Iterator referencing the first character to remove. + * @param __last Iterator referencing the end of the range. + * @return Iterator referencing location of first after removal. + * + * Removes the characters in the range [first,last) from this string. + * The value of the string doesn't change if an error is thrown. + */ + iterator + erase(iterator __first, iterator __last); + +#if __cplusplus >= 201103L + /** + * @brief Remove the last character. + * + * The string must be non-empty. + */ + void + pop_back() + { erase(size()-1, 1); } +#endif // C++11 + + /** + * @brief Replace characters with value from another string. + * @param __pos Index of first character to replace. + * @param __n Number of characters to be replaced. + * @param __str String to insert. + * @return Reference to this string. + * @throw std::out_of_range If @a pos is beyond the end of this + * string. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__pos,__pos+__n) from + * this string. In place, the value of @a __str is inserted. + * If @a __pos is beyond end of string, out_of_range is thrown. + * If the length of the result exceeds max_size(), length_error + * is thrown. The value of the string doesn't change if an + * error is thrown. + */ + basic_string& + replace(size_type __pos, size_type __n, const basic_string& __str) + { return this->replace(__pos, __n, __str._M_data(), __str.size()); } + + /** + * @brief Replace characters with value from another string. + * @param __pos1 Index of first character to replace. + * @param __n1 Number of characters to be replaced. + * @param __str String to insert. + * @param __pos2 Index of first character of str to use. + * @param __n2 Number of characters from str to use. + * @return Reference to this string. + * @throw std::out_of_range If @a __pos1 > size() or @a __pos2 > + * __str.size(). + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__pos1,__pos1 + n) from this + * string. In place, the value of @a __str is inserted. If @a __pos is + * beyond end of string, out_of_range is thrown. If the length of the + * result exceeds max_size(), length_error is thrown. The value of the + * string doesn't change if an error is thrown. + */ + 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)); } + + /** + * @brief Replace characters with value of a C substring. + * @param __pos Index of first character to replace. + * @param __n1 Number of characters to be replaced. + * @param __s C string to insert. + * @param __n2 Number of characters from @a s to use. + * @return Reference to this string. + * @throw std::out_of_range If @a pos1 > size(). + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__pos,__pos + __n1) + * from this string. In place, the first @a __n2 characters of + * @a __s are inserted, or all of @a __s if @a __n2 is too large. If + * @a __pos is beyond end of string, out_of_range is thrown. If + * the length of result exceeds max_size(), length_error is + * thrown. The value of the string doesn't change if an error + * is thrown. + */ + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s, + size_type __n2); + + /** + * @brief Replace characters with value of a C string. + * @param __pos Index of first character to replace. + * @param __n1 Number of characters to be replaced. + * @param __s C string to insert. + * @return Reference to this string. + * @throw std::out_of_range If @a pos > size(). + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__pos,__pos + __n1) + * from this string. In place, the characters of @a __s are + * inserted. If @a __pos is beyond end of string, out_of_range + * is thrown. If the length of result exceeds max_size(), + * length_error is thrown. The value of the string doesn't + * change if an error is thrown. + */ + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s) + { + __glibcxx_requires_string(__s); + return this->replace(__pos, __n1, __s, traits_type::length(__s)); + } + + /** + * @brief Replace characters with multiple characters. + * @param __pos Index of first character to replace. + * @param __n1 Number of characters to be replaced. + * @param __n2 Number of characters to insert. + * @param __c Character to insert. + * @return Reference to this string. + * @throw std::out_of_range If @a __pos > size(). + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [pos,pos + n1) from this + * string. In place, @a __n2 copies of @a __c are inserted. + * If @a __pos is beyond end of string, out_of_range is thrown. + * If the length of result exceeds max_size(), length_error is + * thrown. The value of the string doesn't change if an error + * is thrown. + */ + 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); } + + /** + * @brief Replace range of characters with string. + * @param __i1 Iterator referencing start of range to replace. + * @param __i2 Iterator referencing end of range to replace. + * @param __str String value to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__i1,__i2). In place, + * the value of @a __str is inserted. If the length of result + * exceeds max_size(), length_error is thrown. The value of + * the string doesn't change if an error is thrown. + */ + basic_string& + replace(iterator __i1, iterator __i2, const basic_string& __str) + { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } + + /** + * @brief Replace range of characters with C substring. + * @param __i1 Iterator referencing start of range to replace. + * @param __i2 Iterator referencing end of range to replace. + * @param __s C string value to insert. + * @param __n Number of characters from s to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__i1,__i2). In place, + * the first @a __n characters of @a __s are inserted. If the + * length of result exceeds max_size(), length_error is thrown. + * The value of the string doesn't change if an error is + * thrown. + */ + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) + { + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 + && __i2 <= _M_iend()); + return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n); + } + + /** + * @brief Replace range of characters with C string. + * @param __i1 Iterator referencing start of range to replace. + * @param __i2 Iterator referencing end of range to replace. + * @param __s C string value to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__i1,__i2). In place, + * the characters of @a __s are inserted. If the length of + * result exceeds max_size(), length_error is thrown. The + * value of the string doesn't change if an error is thrown. + */ + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __s) + { + __glibcxx_requires_string(__s); + return this->replace(__i1, __i2, __s, traits_type::length(__s)); + } + + /** + * @brief Replace range of characters with multiple characters + * @param __i1 Iterator referencing start of range to replace. + * @param __i2 Iterator referencing end of range to replace. + * @param __n Number of characters to insert. + * @param __c Character to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__i1,__i2). In place, + * @a __n copies of @a __c are inserted. If the length of + * result exceeds max_size(), length_error is thrown. The + * value of the string doesn't change if an error is thrown. + */ + basic_string& + replace(iterator __i1, iterator __i2, size_type __n, _CharT __c) + { + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 + && __i2 <= _M_iend()); + return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c); + } + + /** + * @brief Replace range of characters with range. + * @param __i1 Iterator referencing start of range to replace. + * @param __i2 Iterator referencing end of range to replace. + * @param __k1 Iterator referencing start of range to insert. + * @param __k2 Iterator referencing end of range to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__i1,__i2). In place, + * characters in the range [__k1,__k2) are inserted. If the + * length of result exceeds max_size(), length_error is thrown. + * The value of the string doesn't change if an error is + * thrown. + */ + template + basic_string& + replace(iterator __i1, iterator __i2, + _InputIterator __k1, _InputIterator __k2) + { + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 + && __i2 <= _M_iend()); + __glibcxx_requires_valid_range(__k1, __k2); + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral()); + } + + // Specializations for the common case of pointer and iterator: + // useful to avoid the overhead of temporary buffering in _M_replace. + basic_string& + replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2) + { + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 + && __i2 <= _M_iend()); + __glibcxx_requires_valid_range(__k1, __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) + { + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 + && __i2 <= _M_iend()); + __glibcxx_requires_valid_range(__k1, __k2); + return this->replace(__i1 - _M_ibegin(), __i2 - __i1, + __k1, __k2 - __k1); + } + + basic_string& + replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2) + { + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 + && __i2 <= _M_iend()); + __glibcxx_requires_valid_range(__k1, __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) + { + _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2 + && __i2 <= _M_iend()); + __glibcxx_requires_valid_range(__k1, __k2); + return this->replace(__i1 - _M_ibegin(), __i2 - __i1, + __k1.base(), __k2 - __k1); + } + +#if __cplusplus >= 201103L + /** + * @brief Replace range of characters with initializer_list. + * @param __i1 Iterator referencing start of range to replace. + * @param __i2 Iterator referencing end of range to replace. + * @param __l The initializer_list of characters to insert. + * @return Reference to this string. + * @throw std::length_error If new length exceeds @c max_size(). + * + * Removes the characters in the range [__i1,__i2). In place, + * characters in the range [__k1,__k2) are inserted. If the + * length of result exceeds max_size(), length_error is thrown. + * The value of the string doesn't change if an error is + * thrown. + */ + basic_string& replace(iterator __i1, iterator __i2, + initializer_list<_CharT> __l) + { return this->replace(__i1, __i2, __l.begin(), __l.end()); } +#endif // C++11 + + 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); + + // _S_construct_aux is used to implement the 21.3.1 para 15 which + // requires special behaviour if _InIter is an integral type + 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()); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + 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()); + } + + // For Input Iterators, used in istreambuf_iterators, etc. + template + static _CharT* + _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, + input_iterator_tag); + + // For forward_iterators up to random_access_iterators, used for + // string::iterator, _CharT*, etc. + 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: + + /** + * @brief Copy substring into C string. + * @param __s C string to copy value into. + * @param __n Number of characters to copy. + * @param __pos Index of first character to copy. + * @return Number of characters actually copied + * @throw std::out_of_range If __pos > size(). + * + * Copies up to @a __n characters starting at @a __pos into the + * C string @a __s. If @a __pos is %greater than size(), + * out_of_range is thrown. + */ + size_type + copy(_CharT* __s, size_type __n, size_type __pos = 0) const; + + /** + * @brief Swap contents with another string. + * @param __s String to swap with. + * + * Exchanges the contents of this string with that of @a __s in constant + * time. + */ + void + swap(basic_string& __s); + + // String operations: + /** + * @brief Return const pointer to null-terminated contents. + * + * This is a handle to internal data. Do not modify or dire things may + * happen. + */ + const _CharT* + c_str() const _GLIBCXX_NOEXCEPT + { return _M_data(); } + + /** + * @brief Return const pointer to contents. + * + * This is a handle to internal data. Do not modify or dire things may + * happen. + */ + const _CharT* + data() const _GLIBCXX_NOEXCEPT + { return _M_data(); } + + /** + * @brief Return copy of allocator used to construct this string. + */ + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return _M_dataplus; } + + /** + * @brief Find position of a C substring. + * @param __s C string to locate. + * @param __pos Index of character to search from. + * @param __n Number of characters from @a s to search for. + * @return Index of start of first occurrence. + * + * Starting from @a __pos, searches forward for the first @a + * __n characters in @a __s within this string. If found, + * returns the index where it begins. If not found, returns + * npos. + */ + size_type + find(const _CharT* __s, size_type __pos, size_type __n) const; + + /** + * @brief Find position of a string. + * @param __str String to locate. + * @param __pos Index of character to search from (default 0). + * @return Index of start of first occurrence. + * + * Starting from @a __pos, searches forward for value of @a __str within + * this string. If found, returns the index where it begins. If not + * found, returns npos. + */ + size_type + find(const basic_string& __str, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT + { return this->find(__str.data(), __pos, __str.size()); } + + /** + * @brief Find position of a C string. + * @param __s C string to locate. + * @param __pos Index of character to search from (default 0). + * @return Index of start of first occurrence. + * + * Starting from @a __pos, searches forward for the value of @a + * __s within this string. If found, returns the index where + * it begins. If not found, returns npos. + */ + size_type + find(const _CharT* __s, size_type __pos = 0) const + { + __glibcxx_requires_string(__s); + return this->find(__s, __pos, traits_type::length(__s)); + } + + /** + * @brief Find position of a character. + * @param __c Character to locate. + * @param __pos Index of character to search from (default 0). + * @return Index of first occurrence. + * + * Starting from @a __pos, searches forward for @a __c within + * this string. If found, returns the index where it was + * found. If not found, returns npos. + */ + size_type + find(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT; + + /** + * @brief Find last position of a string. + * @param __str String to locate. + * @param __pos Index of character to search back from (default end). + * @return Index of start of last occurrence. + * + * Starting from @a __pos, searches backward for value of @a + * __str within this string. If found, returns the index where + * it begins. If not found, returns npos. + */ + size_type + rfind(const basic_string& __str, size_type __pos = npos) const + _GLIBCXX_NOEXCEPT + { return this->rfind(__str.data(), __pos, __str.size()); } + + /** + * @brief Find last position of a C substring. + * @param __s C string to locate. + * @param __pos Index of character to search back from. + * @param __n Number of characters from s to search for. + * @return Index of start of last occurrence. + * + * Starting from @a __pos, searches backward for the first @a + * __n characters in @a __s within this string. If found, + * returns the index where it begins. If not found, returns + * npos. + */ + size_type + rfind(const _CharT* __s, size_type __pos, size_type __n) const; + + /** + * @brief Find last position of a C string. + * @param __s C string to locate. + * @param __pos Index of character to start search at (default end). + * @return Index of start of last occurrence. + * + * Starting from @a __pos, searches backward for the value of + * @a __s within this string. If found, returns the index + * where it begins. If not found, returns npos. + */ + size_type + rfind(const _CharT* __s, size_type __pos = npos) const + { + __glibcxx_requires_string(__s); + return this->rfind(__s, __pos, traits_type::length(__s)); + } + + /** + * @brief Find last position of a character. + * @param __c Character to locate. + * @param __pos Index of character to search back from (default end). + * @return Index of last occurrence. + * + * Starting from @a __pos, searches backward for @a __c within + * this string. If found, returns the index where it was + * found. If not found, returns npos. + */ + size_type + rfind(_CharT __c, size_type __pos = npos) const _GLIBCXX_NOEXCEPT; + + /** + * @brief Find position of a character of string. + * @param __str String containing characters to locate. + * @param __pos Index of character to search from (default 0). + * @return Index of first occurrence. + * + * Starting from @a __pos, searches forward for one of the + * characters of @a __str within this string. If found, + * returns the index where it was found. If not found, returns + * npos. + */ + size_type + find_first_of(const basic_string& __str, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT + { return this->find_first_of(__str.data(), __pos, __str.size()); } + + /** + * @brief Find position of a character of C substring. + * @param __s String containing characters to locate. + * @param __pos Index of character to search from. + * @param __n Number of characters from s to search for. + * @return Index of first occurrence. + * + * Starting from @a __pos, searches forward for one of the + * first @a __n characters of @a __s within this string. If + * found, returns the index where it was found. If not found, + * returns npos. + */ + size_type + find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; + + /** + * @brief Find position of a character of C string. + * @param __s String containing characters to locate. + * @param __pos Index of character to search from (default 0). + * @return Index of first occurrence. + * + * Starting from @a __pos, searches forward for one of the + * characters of @a __s within this string. If found, returns + * the index where it was found. If not found, returns npos. + */ + size_type + find_first_of(const _CharT* __s, size_type __pos = 0) const + { + __glibcxx_requires_string(__s); + return this->find_first_of(__s, __pos, traits_type::length(__s)); + } + + /** + * @brief Find position of a character. + * @param __c Character to locate. + * @param __pos Index of character to search from (default 0). + * @return Index of first occurrence. + * + * Starting from @a __pos, searches forward for the character + * @a __c within this string. If found, returns the index + * where it was found. If not found, returns npos. + * + * Note: equivalent to find(__c, __pos). + */ + size_type + find_first_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT + { return this->find(__c, __pos); } + + /** + * @brief Find last position of a character of string. + * @param __str String containing characters to locate. + * @param __pos Index of character to search back from (default end). + * @return Index of last occurrence. + * + * Starting from @a __pos, searches backward for one of the + * characters of @a __str within this string. If found, + * returns the index where it was found. If not found, returns + * npos. + */ + size_type + find_last_of(const basic_string& __str, size_type __pos = npos) const + _GLIBCXX_NOEXCEPT + { return this->find_last_of(__str.data(), __pos, __str.size()); } + + /** + * @brief Find last position of a character of C substring. + * @param __s C string containing characters to locate. + * @param __pos Index of character to search back from. + * @param __n Number of characters from s to search for. + * @return Index of last occurrence. + * + * Starting from @a __pos, searches backward for one of the + * first @a __n characters of @a __s within this string. If + * found, returns the index where it was found. If not found, + * returns npos. + */ + size_type + find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; + + /** + * @brief Find last position of a character of C string. + * @param __s C string containing characters to locate. + * @param __pos Index of character to search back from (default end). + * @return Index of last occurrence. + * + * Starting from @a __pos, searches backward for one of the + * characters of @a __s within this string. If found, returns + * the index where it was found. If not found, returns npos. + */ + size_type + find_last_of(const _CharT* __s, size_type __pos = npos) const + { + __glibcxx_requires_string(__s); + return this->find_last_of(__s, __pos, traits_type::length(__s)); + } + + /** + * @brief Find last position of a character. + * @param __c Character to locate. + * @param __pos Index of character to search back from (default end). + * @return Index of last occurrence. + * + * Starting from @a __pos, searches backward for @a __c within + * this string. If found, returns the index where it was + * found. If not found, returns npos. + * + * Note: equivalent to rfind(__c, __pos). + */ + size_type + find_last_of(_CharT __c, size_type __pos = npos) const _GLIBCXX_NOEXCEPT + { return this->rfind(__c, __pos); } + + /** + * @brief Find position of a character not in string. + * @param __str String containing characters to avoid. + * @param __pos Index of character to search from (default 0). + * @return Index of first occurrence. + * + * Starting from @a __pos, searches forward for a character not contained + * in @a __str within this string. If found, returns the index where it + * was found. If not found, returns npos. + */ + size_type + find_first_not_of(const basic_string& __str, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT + { return this->find_first_not_of(__str.data(), __pos, __str.size()); } + + /** + * @brief Find position of a character not in C substring. + * @param __s C string containing characters to avoid. + * @param __pos Index of character to search from. + * @param __n Number of characters from __s to consider. + * @return Index of first occurrence. + * + * Starting from @a __pos, searches forward for a character not + * contained in the first @a __n characters of @a __s within + * this string. If found, returns the index where it was + * found. If not found, returns npos. + */ + size_type + find_first_not_of(const _CharT* __s, size_type __pos, + size_type __n) const; + + /** + * @brief Find position of a character not in C string. + * @param __s C string containing characters to avoid. + * @param __pos Index of character to search from (default 0). + * @return Index of first occurrence. + * + * Starting from @a __pos, searches forward for a character not + * contained in @a __s within this string. If found, returns + * the index where it was found. If not found, returns npos. + */ + size_type + find_first_not_of(const _CharT* __s, size_type __pos = 0) const + { + __glibcxx_requires_string(__s); + return this->find_first_not_of(__s, __pos, traits_type::length(__s)); + } + + /** + * @brief Find position of a different character. + * @param __c Character to avoid. + * @param __pos Index of character to search from (default 0). + * @return Index of first occurrence. + * + * Starting from @a __pos, searches forward for a character + * other than @a __c within this string. If found, returns the + * index where it was found. If not found, returns npos. + */ + size_type + find_first_not_of(_CharT __c, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT; + + /** + * @brief Find last position of a character not in string. + * @param __str String containing characters to avoid. + * @param __pos Index of character to search back from (default end). + * @return Index of last occurrence. + * + * Starting from @a __pos, searches backward for a character + * not contained in @a __str within this string. If found, + * returns the index where it was found. If not found, returns + * npos. + */ + size_type + find_last_not_of(const basic_string& __str, size_type __pos = npos) const + _GLIBCXX_NOEXCEPT + { return this->find_last_not_of(__str.data(), __pos, __str.size()); } + + /** + * @brief Find last position of a character not in C substring. + * @param __s C string containing characters to avoid. + * @param __pos Index of character to search back from. + * @param __n Number of characters from s to consider. + * @return Index of last occurrence. + * + * Starting from @a __pos, searches backward for a character not + * contained in the first @a __n characters of @a __s within this string. + * If found, returns the index where it was found. If not found, + * returns npos. + */ + size_type + find_last_not_of(const _CharT* __s, size_type __pos, + size_type __n) const; + /** + * @brief Find last position of a character not in C string. + * @param __s C string containing characters to avoid. + * @param __pos Index of character to search back from (default end). + * @return Index of last occurrence. + * + * Starting from @a __pos, searches backward for a character + * not contained in @a __s within this string. If found, + * returns the index where it was found. If not found, returns + * npos. + */ + size_type + find_last_not_of(const _CharT* __s, size_type __pos = npos) const + { + __glibcxx_requires_string(__s); + return this->find_last_not_of(__s, __pos, traits_type::length(__s)); + } + + /** + * @brief Find last position of a different character. + * @param __c Character to avoid. + * @param __pos Index of character to search back from (default end). + * @return Index of last occurrence. + * + * Starting from @a __pos, searches backward for a character other than + * @a __c within this string. If found, returns the index where it was + * found. If not found, returns npos. + */ + size_type + find_last_not_of(_CharT __c, size_type __pos = npos) const + _GLIBCXX_NOEXCEPT; + + /** + * @brief Get a substring. + * @param __pos Index of first character (default 0). + * @param __n Number of characters in substring (default remainder). + * @return The new string. + * @throw std::out_of_range If __pos > size(). + * + * Construct and return a new string using the @a __n + * characters starting at @a __pos. If the string is too + * short, use the remainder of the characters. If @a __pos is + * beyond the end of the string, out_of_range is thrown. + */ + basic_string + substr(size_type __pos = 0, size_type __n = npos) const + { return basic_string(*this, + _M_check(__pos, "basic_string::substr"), __n); } + + /** + * @brief Compare to a string. + * @param __str String to compare against. + * @return Integer < 0, 0, or > 0. + * + * Returns an integer < 0 if this string is ordered before @a + * __str, 0 if their values are equivalent, or > 0 if this + * string is ordered after @a __str. Determines the effective + * length rlen of the strings to compare as the smallest of + * size() and str.size(). The function then compares the two + * strings by calling traits::compare(data(), str.data(),rlen). + * If the result of the comparison is nonzero returns it, + * otherwise the shorter one is ordered first. + */ + 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; + } + + /** + * @brief Compare substring to a string. + * @param __pos Index of first character of substring. + * @param __n Number of characters in substring. + * @param __str String to compare against. + * @return Integer < 0, 0, or > 0. + * + * Form the substring of this string from the @a __n characters + * starting at @a __pos. Returns an integer < 0 if the + * substring is ordered before @a __str, 0 if their values are + * equivalent, or > 0 if the substring is ordered after @a + * __str. Determines the effective length rlen of the strings + * to compare as the smallest of the length of the substring + * and @a __str.size(). The function then compares the two + * strings by calling + * traits::compare(substring.data(),str.data(),rlen). If the + * result of the comparison is nonzero returns it, otherwise + * the shorter one is ordered first. + */ + int + compare(size_type __pos, size_type __n, const basic_string& __str) const; + + /** + * @brief Compare substring to a substring. + * @param __pos1 Index of first character of substring. + * @param __n1 Number of characters in substring. + * @param __str String to compare against. + * @param __pos2 Index of first character of substring of str. + * @param __n2 Number of characters in substring of str. + * @return Integer < 0, 0, or > 0. + * + * Form the substring of this string from the @a __n1 + * characters starting at @a __pos1. Form the substring of @a + * __str from the @a __n2 characters starting at @a __pos2. + * Returns an integer < 0 if this substring is ordered before + * the substring of @a __str, 0 if their values are equivalent, + * or > 0 if this substring is ordered after the substring of + * @a __str. Determines the effective length rlen of the + * strings to compare as the smallest of the lengths of the + * substrings. The function then compares the two strings by + * calling + * traits::compare(substring.data(),str.substr(pos2,n2).data(),rlen). + * If the result of the comparison is nonzero returns it, + * otherwise the shorter one is ordered first. + */ + int + compare(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) const; + + /** + * @brief Compare to a C string. + * @param __s C string to compare against. + * @return Integer < 0, 0, or > 0. + * + * Returns an integer < 0 if this string is ordered before @a __s, 0 if + * their values are equivalent, or > 0 if this string is ordered after + * @a __s. Determines the effective length rlen of the strings to + * compare as the smallest of size() and the length of a string + * constructed from @a __s. The function then compares the two strings + * by calling traits::compare(data(),s,rlen). If the result of the + * comparison is nonzero returns it, otherwise the shorter one is + * ordered first. + */ + int + compare(const _CharT* __s) const; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 5 String::compare specification questionable + /** + * @brief Compare substring to a C string. + * @param __pos Index of first character of substring. + * @param __n1 Number of characters in substring. + * @param __s C string to compare against. + * @return Integer < 0, 0, or > 0. + * + * Form the substring of this string from the @a __n1 + * characters starting at @a pos. Returns an integer < 0 if + * the substring is ordered before @a __s, 0 if their values + * are equivalent, or > 0 if the substring is ordered after @a + * __s. Determines the effective length rlen of the strings to + * compare as the smallest of the length of the substring and + * the length of a string constructed from @a __s. The + * function then compares the two string by calling + * traits::compare(substring.data(),__s,rlen). If the result of + * the comparison is nonzero returns it, otherwise the shorter + * one is ordered first. + */ + int + compare(size_type __pos, size_type __n1, const _CharT* __s) const; + + /** + * @brief Compare substring against a character %array. + * @param __pos Index of first character of substring. + * @param __n1 Number of characters in substring. + * @param __s character %array to compare against. + * @param __n2 Number of characters of s. + * @return Integer < 0, 0, or > 0. + * + * Form the substring of this string from the @a __n1 + * characters starting at @a __pos. Form a string from the + * first @a __n2 characters of @a __s. Returns an integer < 0 + * if this substring is ordered before the string from @a __s, + * 0 if their values are equivalent, or > 0 if this substring + * is ordered after the string from @a __s. Determines the + * effective length rlen of the strings to compare as the + * smallest of the length of the substring and @a __n2. The + * function then compares the two strings by calling + * traits::compare(substring.data(),s,rlen). If the result of + * the comparison is nonzero returns it, otherwise the shorter + * one is ordered first. + * + * NB: s must have at least n2 characters, '\\0' has + * no special meaning. + */ + int + compare(size_type __pos, size_type __n1, const _CharT* __s, + size_type __n2) const; + }; + + // operator+ + /** + * @brief Concatenate two strings. + * @param __lhs First string. + * @param __rhs Last string. + * @return New string with value of @a __lhs followed by @a __rhs. + */ + 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; + } + + /** + * @brief Concatenate C string and string. + * @param __lhs First string. + * @param __rhs Last string. + * @return New string with value of @a __lhs followed by @a __rhs. + */ + template + basic_string<_CharT,_Traits,_Alloc> + operator+(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Alloc>& __rhs); + + /** + * @brief Concatenate character and string. + * @param __lhs First string. + * @param __rhs Last string. + * @return New string with @a __lhs followed by @a __rhs. + */ + template + basic_string<_CharT,_Traits,_Alloc> + operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); + + /** + * @brief Concatenate string and C string. + * @param __lhs First string. + * @param __rhs Last string. + * @return New string with @a __lhs followed by @a __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; + } + + /** + * @brief Concatenate string and character. + * @param __lhs First string. + * @param __rhs Last string. + * @return New string with @a __lhs followed by @a __rhs. + */ + 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; + } + +#if __cplusplus >= 201103L + 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)); } +#endif + + // operator == + /** + * @brief Test equivalence of two strings. + * @param __lhs First string. + * @param __rhs Second string. + * @return True if @a __lhs.compare(@a __rhs) == 0. False otherwise. + */ + 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())); } + + /** + * @brief Test equivalence of C string and string. + * @param __lhs C string. + * @param __rhs String. + * @return True if @a __rhs.compare(@a __lhs) == 0. False otherwise. + */ + template + inline bool + operator==(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) == 0; } + + /** + * @brief Test equivalence of string and C string. + * @param __lhs String. + * @param __rhs C string. + * @return True if @a __lhs.compare(@a __rhs) == 0. False otherwise. + */ + template + inline bool + operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) == 0; } + + // operator != + /** + * @brief Test difference of two strings. + * @param __lhs First string. + * @param __rhs Second string. + * @return True if @a __lhs.compare(@a __rhs) != 0. False otherwise. + */ + template + inline bool + operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Test difference of C string and string. + * @param __lhs C string. + * @param __rhs String. + * @return True if @a __rhs.compare(@a __lhs) != 0. False otherwise. + */ + template + inline bool + operator!=(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Test difference of string and C string. + * @param __lhs String. + * @param __rhs C string. + * @return True if @a __lhs.compare(@a __rhs) != 0. False otherwise. + */ + template + inline bool + operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return !(__lhs == __rhs); } + + // operator < + /** + * @brief Test if string precedes string. + * @param __lhs First string. + * @param __rhs Second string. + * @return True if @a __lhs precedes @a __rhs. False otherwise. + */ + template + inline bool + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) < 0; } + + /** + * @brief Test if string precedes C string. + * @param __lhs String. + * @param __rhs C string. + * @return True if @a __lhs precedes @a __rhs. False otherwise. + */ + template + inline bool + operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) < 0; } + + /** + * @brief Test if C string precedes string. + * @param __lhs C string. + * @param __rhs String. + * @return True if @a __lhs precedes @a __rhs. False otherwise. + */ + template + inline bool + operator<(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) > 0; } + + // operator > + /** + * @brief Test if string follows string. + * @param __lhs First string. + * @param __rhs Second string. + * @return True if @a __lhs follows @a __rhs. False otherwise. + */ + template + inline bool + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) > 0; } + + /** + * @brief Test if string follows C string. + * @param __lhs String. + * @param __rhs C string. + * @return True if @a __lhs follows @a __rhs. False otherwise. + */ + template + inline bool + operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) > 0; } + + /** + * @brief Test if C string follows string. + * @param __lhs C string. + * @param __rhs String. + * @return True if @a __lhs follows @a __rhs. False otherwise. + */ + template + inline bool + operator>(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) < 0; } + + // operator <= + /** + * @brief Test if string doesn't follow string. + * @param __lhs First string. + * @param __rhs Second string. + * @return True if @a __lhs doesn't follow @a __rhs. False otherwise. + */ + template + inline bool + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) <= 0; } + + /** + * @brief Test if string doesn't follow C string. + * @param __lhs String. + * @param __rhs C string. + * @return True if @a __lhs doesn't follow @a __rhs. False otherwise. + */ + template + inline bool + operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) <= 0; } + + /** + * @brief Test if C string doesn't follow string. + * @param __lhs C string. + * @param __rhs String. + * @return True if @a __lhs doesn't follow @a __rhs. False otherwise. + */ + template + inline bool + operator<=(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) >= 0; } + + // operator >= + /** + * @brief Test if string doesn't precede string. + * @param __lhs First string. + * @param __rhs Second string. + * @return True if @a __lhs doesn't precede @a __rhs. False otherwise. + */ + template + inline bool + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __lhs.compare(__rhs) >= 0; } + + /** + * @brief Test if string doesn't precede C string. + * @param __lhs String. + * @param __rhs C string. + * @return True if @a __lhs doesn't precede @a __rhs. False otherwise. + */ + template + inline bool + operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, + const _CharT* __rhs) + { return __lhs.compare(__rhs) >= 0; } + + /** + * @brief Test if C string doesn't precede string. + * @param __lhs C string. + * @param __rhs String. + * @return True if @a __lhs doesn't precede @a __rhs. False otherwise. + */ + template + inline bool + operator>=(const _CharT* __lhs, + const basic_string<_CharT, _Traits, _Alloc>& __rhs) + { return __rhs.compare(__lhs) <= 0; } + + /** + * @brief Swap contents of two strings. + * @param __lhs First string. + * @param __rhs Second string. + * + * Exchanges the contents of @a __lhs and @a __rhs in constant time. + */ + template + inline void + swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, + basic_string<_CharT, _Traits, _Alloc>& __rhs) + { __lhs.swap(__rhs); } + + /** + * @brief Read stream into a string. + * @param __is Input stream. + * @param __str Buffer to store into. + * @return Reference to the input stream. + * + * Stores characters from @a __is into @a __str until whitespace is + * found, the end of the stream is encountered, or str.max_size() + * is reached. If is.width() is non-zero, that is the limit on the + * number of characters stored into @a __str. Any previous + * contents of @a __str are erased. + */ + 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); + + /** + * @brief Write string to a stream. + * @param __os Output stream. + * @param __str String to write out. + * @return Reference to the output stream. + * + * Output characters of @a __str into os following the same rules as for + * writing a C string. + */ + template + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, + const basic_string<_CharT, _Traits, _Alloc>& __str) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 586. string inserter not a formatted function + return __ostream_insert(__os, __str.data(), __str.size()); + } + + /** + * @brief Read a line from stream into a string. + * @param __is Input stream. + * @param __str Buffer to store into. + * @param __delim Character marking end of line. + * @return Reference to the input stream. + * + * Stores characters from @a __is into @a __str until @a __delim is + * found, the end of the stream is encountered, or str.max_size() + * is reached. Any previous contents of @a __str are erased. If + * @a __delim is encountered, it is extracted but not stored into + * @a __str. + */ + template + basic_istream<_CharT, _Traits>& + getline(basic_istream<_CharT, _Traits>& __is, + basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); + + /** + * @brief Read a line from stream into a string. + * @param __is Input stream. + * @param __str Buffer to store into. + * @return Reference to the input stream. + * + * Stores characters from is into @a __str until '\n' is + * found, the end of the stream is encountered, or str.max_size() + * is reached. Any previous contents of @a __str are erased. If + * end of line is encountered, it is extracted but not stored into + * @a __str. + */ + 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); + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + basic_istream& + getline(basic_istream& __in, basic_string& __str, + wchar_t __delim); +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ + && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // 21.4 Numeric Conversions [string.conversions]. + 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); } + + // NB: strtof vs strtod. + 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); } + + // NB: (v)snprintf vs sprintf. + + // DR 1261. + 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); + } + +#ifdef _GLIBCXX_USE_WCHAR_T + 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); } + + // NB: wcstof vs wcstod. + 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); } + + // DR 1261. + 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); + } +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* C++11 && _GLIBCXX_USE_C99 ... */ + +#if __cplusplus >= 201103L + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // DR 1182. + +#ifndef _GLIBCXX_COMPATIBILITY_CXX0X + /// std::hash specialization for string. + 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 + { }; + +#ifdef _GLIBCXX_USE_WCHAR_T + /// std::hash specialization for wstring. + 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 + { }; +#endif +#endif /* _GLIBCXX_COMPATIBILITY_CXX0X */ + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + /// std::hash specialization for u16string. + 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 + { }; + + /// std::hash specialization for u32string. + 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 + { }; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // C++11 + +#endif /* _BASIC_STRING_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_string.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_string.tcc new file mode 100644 index 0000000..317eb74 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/basic_string.tcc @@ -0,0 +1,1166 @@ +// Components for manipulating sequences of characters -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/basic_string.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{string} + */ + +// +// ISO C++ 14882: 21 Strings library +// + +// Written by Jason Merrill based upon the specification by Takanori Adachi +// in ANSI X3J16/94-0013R2. Rewritten by Nathan Myers to ISO-14882. + +#ifndef _BASIC_STRING_TCC +#define _BASIC_STRING_TCC 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + 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; + + // Linker sets _S_empty_rep_storage to all 0s (one reference, empty string) + // at static init time (before static ctors are run). + 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)]; + + // NB: This is the special case for Input Iterators, used in + // istreambuf_iterators, etc. + // Input Iterators have a cost structure very different from + // pointers, calling for a different coding style. + template + template + _CharT* + basic_string<_CharT, _Traits, _Alloc>:: + _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, + input_iterator_tag) + { +#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 + if (__beg == __end && __a == _Alloc()) + return _S_empty_rep()._M_refdata(); +#endif + // Avoid reallocation for common case. + _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); + __try + { + while (__beg != __end) + { + if (__len == __r->_M_capacity) + { + // Allocate more space. + _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; + } + } + __catch(...) + { + __r->_M_destroy(__a); + __throw_exception_again; + } + __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 _GLIBCXX_FULLY_DYNAMIC_STRING == 0 + if (__beg == __end && __a == _Alloc()) + return _S_empty_rep()._M_refdata(); +#endif + // NB: Not required, but considered best practice. + if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end) + __throw_logic_error(__N("basic_string::_S_construct null not valid")); + + const size_type __dnew = static_cast(std::distance(__beg, + __end)); + // Check for out_of_range and length_error exceptions. + _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a); + __try + { _S_copy_chars(__r->_M_refdata(), __beg, __end); } + __catch(...) + { + __r->_M_destroy(__a); + __throw_exception_again; + } + __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 _GLIBCXX_FULLY_DYNAMIC_STRING == 0 + if (__n == 0 && __a == _Alloc()) + return _S_empty_rep()._M_refdata(); +#endif + // Check for out_of_range and length_error exceptions. + _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) + { } + + // TBD: DPG annotate + 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) + { } + + // TBD: DPG annotate + 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) + { } + + // TBD: DPG annotate + template + template + basic_string<_CharT, _Traits, _Alloc>:: + basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) + : _M_dataplus(_S_construct(__beg, __end, __a), __a) + { } + +#if __cplusplus >= 201103L + 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) + { } +#endif + + template + basic_string<_CharT, _Traits, _Alloc>& + basic_string<_CharT, _Traits, _Alloc>:: + assign(const basic_string& __str) + { + if (_M_rep() != __str._M_rep()) + { + // XXX MT + 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) + { + __glibcxx_requires_string_len(__s, __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 + { + // Work in-place. + 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) + { + __glibcxx_requires_string_len(__s, __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) + { + __glibcxx_requires_string_len(__s, __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 + { + // Work in-place. + 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) + { + _GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last + && __last <= _M_iend()); + + // NB: This isn't just an optimization (bail out early when + // there is nothing to do, really), it's also a correctness + // issue vs MT, see libstdc++/40518. + 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) + { + __glibcxx_requires_string_len(__s, __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) + { + // Work in-place: non-overlapping case. + 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 + { + // Todo: overlapping case. + 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 _GLIBCXX_FULLY_DYNAMIC_STRING == 0 + if (_M_rep() == &_S_empty_rep()) + return; +#endif + 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()) + { + // Must reallocate. + 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) + { + // Work in-place. + _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()) + { + // Make sure we don't shrink below the current size + 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); + } + // The code below can usually be optimized away. + 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 83. String::npos vs. string::max_size() + if (__capacity > _S_max_size) + __throw_length_error(__N("basic_string::_S_create")); + + // The standard places no restriction on allocating more memory + // than is strictly needed within this layer at the moment or as + // requested by an explicit application call to reserve(). + + // Many malloc implementations perform quite poorly when an + // application attempts to allocate memory in a stepwise fashion + // growing each allocation size by only 1 char. Additionally, + // it makes little sense to allocate less linear memory than the + // natural blocking size of the malloc implementation. + // Unfortunately, we would need a somewhat low-level calculation + // with tuned parameters to get this perfect for any particular + // malloc implementation. Fortunately, generalizations about + // common features seen among implementations seems to suffice. + + // __pagesize need not match the actual VM page size for good + // results in practice, thus we pick a common value on the low + // side. __malloc_header_size is an estimate of the amount of + // overhead per memory allocation (in practice seen N * sizeof + // (void*) where N is 0, 2 or 4). According to folklore, + // picking this value on the high side is better than + // low-balling it (especially when this algorithm is used with + // malloc implementations that allocate memory blocks rounded up + // to a size which is a power of 2). + const size_type __pagesize = 4096; + const size_type __malloc_header_size = 4 * sizeof(void*); + + // The below implements an exponential growth policy, necessary to + // meet amortized linear time requirements of the library: see + // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html. + // It's active for allocations requiring an amount of memory above + // system pagesize. This is consistent with the requirements of the + // standard: http://gcc.gnu.org/ml/libstdc++/2001-07/msg00130.html + if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) + __capacity = 2 * __old_capacity; + + // NB: Need an array of char_type[__capacity], plus a terminating + // null char_type() element, plus enough for the _Rep data structure. + // Whew. Seemingly so needy, yet so elemental. + 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); + // Never allocate a string bigger than _S_max_size. + if (__capacity > _S_max_size) + __capacity = _S_max_size; + __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); + } + + // NB: Might throw, but no worries about a leak, mate: _Rep() + // does not throw. + void* __place = _Raw_bytes_alloc(__alloc).allocate(__size); + _Rep *__p = new (__place) _Rep; + __p->_M_capacity = __capacity; + // ABI compatibility - 3.4.x set in _S_create both + // _M_refcount and _M_length. All callers of _S_create + // in basic_string.tcc then set just _M_length. + // In 4.0.x and later both _M_refcount and _M_length + // are initialized in the callers, unfortunately we can + // have 3.4.x compiled code with _S_create callers inlined + // calling 4.0.x+ _S_create. + __p->_M_set_sharable(); + return __p; + } + + template + _CharT* + basic_string<_CharT, _Traits, _Alloc>::_Rep:: + _M_clone(const _Alloc& __alloc, size_type __res) + { + // Requested capacity of the clone. + 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); + // else nothing (in particular, avoid calling _M_mutate() unnecessarily.) + } + + 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) + { + __glibcxx_requires_string(__lhs); + 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); + __glibcxx_requires_string_len(__s, __n); + if (__n) + _M_copy(__s, _M_data() + __pos, __n); + // 21.3.5.7 par 3: do not append null. (good.) + 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 + { + __glibcxx_requires_string_len(__s, __n); + 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 _GLIBCXX_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 + { + __glibcxx_requires_string_len(__s, __n); + 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 _GLIBCXX_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 + { + __glibcxx_requires_string_len(__s, __n); + 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 + { + __glibcxx_requires_string_len(__s, __n); + 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 + { + __glibcxx_requires_string_len(__s, __n); + 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 _GLIBCXX_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 + { + __glibcxx_requires_string_len(__s, __n); + 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 _GLIBCXX_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 + { + __glibcxx_requires_string(__s); + 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 + { + __glibcxx_requires_string(__s); + _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 + { + __glibcxx_requires_string_len(__s, __n2); + _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; + } + + // 21.3.7.9 basic_string::getline and operators + 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) + { + __try + { + // Avoid reallocation for common case. + __str.erase(); + _CharT __buf[128]; + __size_type __len = 0; + const streamsize __w = __in.width(); + const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) + : __str.max_size(); + const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); + const __int_type __eof = _Traits::eof(); + __int_type __c = __in.rdbuf()->sgetc(); + + while (__extracted < __n + && !_Traits::eq_int_type(__c, __eof) + && !__ct.is(__ctype_base::space, + _Traits::to_char_type(__c))) + { + if (__len == sizeof(__buf) / sizeof(_CharT)) + { + __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); + __len = 0; + } + __buf[__len++] = _Traits::to_char_type(__c); + ++__extracted; + __c = __in.rdbuf()->snextc(); + } + __str.append(__buf, __len); + + if (_Traits::eq_int_type(__c, __eof)) + __err |= __ios_base::eofbit; + __in.width(0); + } + __catch(__cxxabiv1::__forced_unwind&) + { + __in._M_setstate(__ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 91. Description of operator>> and getline() for string<> + // might cause endless loop + __in._M_setstate(__ios_base::badbit); + } + } + // 211. operator>>(istream&, string&) doesn't set failbit + 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) + { + __try + { + __str.erase(); + const __int_type __idelim = _Traits::to_int_type(__delim); + const __int_type __eof = _Traits::eof(); + __int_type __c = __in.rdbuf()->sgetc(); + + while (__extracted < __n + && !_Traits::eq_int_type(__c, __eof) + && !_Traits::eq_int_type(__c, __idelim)) + { + __str += _Traits::to_char_type(__c); + ++__extracted; + __c = __in.rdbuf()->snextc(); + } + + if (_Traits::eq_int_type(__c, __eof)) + __err |= __ios_base::eofbit; + else if (_Traits::eq_int_type(__c, __idelim)) + { + ++__extracted; + __in.rdbuf()->sbumpc(); + } + else + __err |= __ios_base::failbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + __in._M_setstate(__ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 91. Description of operator>> and getline() for string<> + // might cause endless loop + __in._M_setstate(__ios_base::badbit); + } + } + if (!__extracted) + __err |= __ios_base::failbit; + if (__err) + __in.setstate(__err); + return __in; + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE > 0 + 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&); + +#ifdef _GLIBCXX_USE_WCHAR_T + 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&); +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/boost_concept_check.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/boost_concept_check.h new file mode 100644 index 0000000..ac3b8aa --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/boost_concept_check.h @@ -0,0 +1,790 @@ +// -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// (C) Copyright Jeremy Siek 2000. Permission to copy, use, modify, +// sell and distribute this software is granted provided this +// copyright notice appears in all copies. This software is provided +// "as is" without express or implied warranty, and with no claim as +// to its suitability for any purpose. +// + +/** @file bits/boost_concept_check.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iterator} + */ + +// GCC Note: based on version 1.12.0 of the Boost library. + +#ifndef _BOOST_CONCEPT_CHECK_H +#define _BOOST_CONCEPT_CHECK_H 1 + +#pragma GCC system_header + +#include +#include // for traits and tags + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#define _IsUnused __attribute__ ((__unused__)) + +// When the C-C code is in use, we would like this function to do as little +// as possible at runtime, use as few resources as possible, and hopefully +// be elided out of existence... hmmm. +template +inline void __function_requires() +{ + void (_Concept::*__x)() _IsUnused = &_Concept::__constraints; +} + +// No definition: if this is referenced, there's a problem with +// the instantiating type not being one of the required integer types. +// Unfortunately, this results in a link-time error, not a compile-time error. +void __error_type_must_be_an_integer_type(); +void __error_type_must_be_an_unsigned_integer_type(); +void __error_type_must_be_a_signed_integer_type(); + +// ??? Should the "concept_checking*" structs begin with more than _ ? +#define _GLIBCXX_CLASS_REQUIRES(_type_var, _ns, _concept) \ + typedef void (_ns::_concept <_type_var>::* _func##_type_var##_concept)(); \ + template <_func##_type_var##_concept _Tp1> \ + struct _concept_checking##_type_var##_concept { }; \ + typedef _concept_checking##_type_var##_concept< \ + &_ns::_concept <_type_var>::__constraints> \ + _concept_checking_typedef##_type_var##_concept + +#define _GLIBCXX_CLASS_REQUIRES2(_type_var1, _type_var2, _ns, _concept) \ + typedef void (_ns::_concept <_type_var1,_type_var2>::* _func##_type_var1##_type_var2##_concept)(); \ + template <_func##_type_var1##_type_var2##_concept _Tp1> \ + struct _concept_checking##_type_var1##_type_var2##_concept { }; \ + typedef _concept_checking##_type_var1##_type_var2##_concept< \ + &_ns::_concept <_type_var1,_type_var2>::__constraints> \ + _concept_checking_typedef##_type_var1##_type_var2##_concept + +#define _GLIBCXX_CLASS_REQUIRES3(_type_var1, _type_var2, _type_var3, _ns, _concept) \ + typedef void (_ns::_concept <_type_var1,_type_var2,_type_var3>::* _func##_type_var1##_type_var2##_type_var3##_concept)(); \ + template <_func##_type_var1##_type_var2##_type_var3##_concept _Tp1> \ + struct _concept_checking##_type_var1##_type_var2##_type_var3##_concept { }; \ + typedef _concept_checking##_type_var1##_type_var2##_type_var3##_concept< \ + &_ns::_concept <_type_var1,_type_var2,_type_var3>::__constraints> \ + _concept_checking_typedef##_type_var1##_type_var2##_type_var3##_concept + +#define _GLIBCXX_CLASS_REQUIRES4(_type_var1, _type_var2, _type_var3, _type_var4, _ns, _concept) \ + typedef void (_ns::_concept <_type_var1,_type_var2,_type_var3,_type_var4>::* _func##_type_var1##_type_var2##_type_var3##_type_var4##_concept)(); \ + template <_func##_type_var1##_type_var2##_type_var3##_type_var4##_concept _Tp1> \ + struct _concept_checking##_type_var1##_type_var2##_type_var3##_type_var4##_concept { }; \ + typedef _concept_checking##_type_var1##_type_var2##_type_var3##_type_var4##_concept< \ + &_ns::_concept <_type_var1,_type_var2,_type_var3,_type_var4>::__constraints> \ + _concept_checking_typedef##_type_var1##_type_var2##_type_var3##_type_var4##_concept + + +template +struct _Aux_require_same { }; + +template +struct _Aux_require_same<_Tp,_Tp> { typedef _Tp _Type; }; + + template + struct _SameTypeConcept + { + void __constraints() { + typedef typename _Aux_require_same<_Tp1, _Tp2>::_Type _Required; + } + }; + + template + struct _IntegerConcept { + void __constraints() { + __error_type_must_be_an_integer_type(); + } + }; + template <> struct _IntegerConcept { void __constraints() {} }; + template <> struct _IntegerConcept { void __constraints(){} }; + template <> struct _IntegerConcept { void __constraints() {} }; + template <> struct _IntegerConcept { void __constraints() {} }; + template <> struct _IntegerConcept { void __constraints() {} }; + template <> struct _IntegerConcept { void __constraints() {} }; + template <> struct _IntegerConcept { void __constraints() {} }; + template <> struct _IntegerConcept + { void __constraints() {} }; + + template + struct _SignedIntegerConcept { + void __constraints() { + __error_type_must_be_a_signed_integer_type(); + } + }; + template <> struct _SignedIntegerConcept { void __constraints() {} }; + template <> struct _SignedIntegerConcept { void __constraints() {} }; + template <> struct _SignedIntegerConcept { void __constraints() {} }; + template <> struct _SignedIntegerConcept { void __constraints(){}}; + + template + struct _UnsignedIntegerConcept { + void __constraints() { + __error_type_must_be_an_unsigned_integer_type(); + } + }; + template <> struct _UnsignedIntegerConcept + { void __constraints() {} }; + template <> struct _UnsignedIntegerConcept + { void __constraints() {} }; + template <> struct _UnsignedIntegerConcept + { void __constraints() {} }; + template <> struct _UnsignedIntegerConcept + { void __constraints() {} }; + + //=========================================================================== + // Basic Concepts + + template + struct _DefaultConstructibleConcept + { + void __constraints() { + _Tp __a _IsUnused; // require default constructor + } + }; + + template + struct _AssignableConcept + { + void __constraints() { + __a = __a; // require assignment operator + __const_constraints(__a); + } + void __const_constraints(const _Tp& __b) { + __a = __b; // const required for argument to assignment + } + _Tp __a; + // possibly should be "Tp* a;" and then dereference "a" in constraint + // functions? present way would require a default ctor, i think... + }; + + template + struct _CopyConstructibleConcept + { + void __constraints() { + _Tp __a(__b); // require copy constructor + _Tp* __ptr _IsUnused = &__a; // require address of operator + __const_constraints(__a); + } + void __const_constraints(const _Tp& __a) { + _Tp __c _IsUnused(__a); // require const copy constructor + const _Tp* __ptr _IsUnused = &__a; // require const address of operator + } + _Tp __b; + }; + + // The SGI STL version of Assignable requires copy constructor and operator= + template + struct _SGIAssignableConcept + { + void __constraints() { + _Tp __b _IsUnused(__a); + __a = __a; // require assignment operator + __const_constraints(__a); + } + void __const_constraints(const _Tp& __b) { + _Tp __c _IsUnused(__b); + __a = __b; // const required for argument to assignment + } + _Tp __a; + }; + + template + struct _ConvertibleConcept + { + void __constraints() { + _To __y _IsUnused = __x; + } + _From __x; + }; + + // The C++ standard requirements for many concepts talk about return + // types that must be "convertible to bool". The problem with this + // requirement is that it leaves the door open for evil proxies that + // define things like operator|| with strange return types. Two + // possible solutions are: + // 1) require the return type to be exactly bool + // 2) stay with convertible to bool, and also + // specify stuff about all the logical operators. + // For now we just test for convertible to bool. + template + void __aux_require_boolean_expr(const _Tp& __t) { + bool __x _IsUnused = __t; + } + +// FIXME + template + struct _EqualityComparableConcept + { + void __constraints() { + __aux_require_boolean_expr(__a == __b); + } + _Tp __a, __b; + }; + + template + struct _LessThanComparableConcept + { + void __constraints() { + __aux_require_boolean_expr(__a < __b); + } + _Tp __a, __b; + }; + + // This is equivalent to SGI STL's LessThanComparable. + template + struct _ComparableConcept + { + void __constraints() { + __aux_require_boolean_expr(__a < __b); + __aux_require_boolean_expr(__a > __b); + __aux_require_boolean_expr(__a <= __b); + __aux_require_boolean_expr(__a >= __b); + } + _Tp __a, __b; + }; + +#define _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(_OP,_NAME) \ + template \ + struct _NAME { \ + void __constraints() { (void)__constraints_(); } \ + bool __constraints_() { \ + return __a _OP __b; \ + } \ + _First __a; \ + _Second __b; \ + } + +#define _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(_OP,_NAME) \ + template \ + struct _NAME { \ + void __constraints() { (void)__constraints_(); } \ + _Ret __constraints_() { \ + return __a _OP __b; \ + } \ + _First __a; \ + _Second __b; \ + } + + _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(==, _EqualOpConcept); + _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(!=, _NotEqualOpConcept); + _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<, _LessThanOpConcept); + _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<=, _LessEqualOpConcept); + _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>, _GreaterThanOpConcept); + _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>=, _GreaterEqualOpConcept); + + _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(+, _PlusOpConcept); + _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(*, _TimesOpConcept); + _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(/, _DivideOpConcept); + _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(-, _SubtractOpConcept); + _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT(%, _ModOpConcept); + +#undef _GLIBCXX_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT +#undef _GLIBCXX_DEFINE_BINARY_OPERATOR_CONSTRAINT + + //=========================================================================== + // Function Object Concepts + + template + struct _GeneratorConcept + { + void __constraints() { + const _Return& __r _IsUnused = __f();// require operator() member function + } + _Func __f; + }; + + + template + struct _GeneratorConcept<_Func,void> + { + void __constraints() { + __f(); // require operator() member function + } + _Func __f; + }; + + template + struct _UnaryFunctionConcept + { + void __constraints() { + __r = __f(__arg); // require operator() + } + _Func __f; + _Arg __arg; + _Return __r; + }; + + template + struct _UnaryFunctionConcept<_Func, void, _Arg> { + void __constraints() { + __f(__arg); // require operator() + } + _Func __f; + _Arg __arg; + }; + + template + struct _BinaryFunctionConcept + { + void __constraints() { + __r = __f(__first, __second); // require operator() + } + _Func __f; + _First __first; + _Second __second; + _Return __r; + }; + + template + struct _BinaryFunctionConcept<_Func, void, _First, _Second> + { + void __constraints() { + __f(__first, __second); // require operator() + } + _Func __f; + _First __first; + _Second __second; + }; + + template + struct _UnaryPredicateConcept + { + void __constraints() { + __aux_require_boolean_expr(__f(__arg)); // require op() returning bool + } + _Func __f; + _Arg __arg; + }; + + template + struct _BinaryPredicateConcept + { + void __constraints() { + __aux_require_boolean_expr(__f(__a, __b)); // require op() returning bool + } + _Func __f; + _First __a; + _Second __b; + }; + + // use this when functor is used inside a container class like std::set + template + struct _Const_BinaryPredicateConcept { + void __constraints() { + __const_constraints(__f); + } + void __const_constraints(const _Func& __fun) { + __function_requires<_BinaryPredicateConcept<_Func, _First, _Second> >(); + // operator() must be a const member function + __aux_require_boolean_expr(__fun(__a, __b)); + } + _Func __f; + _First __a; + _Second __b; + }; + + //=========================================================================== + // Iterator Concepts + + template + struct _TrivialIteratorConcept + { + void __constraints() { +// __function_requires< _DefaultConstructibleConcept<_Tp> >(); + __function_requires< _AssignableConcept<_Tp> >(); + __function_requires< _EqualityComparableConcept<_Tp> >(); +// typedef typename std::iterator_traits<_Tp>::value_type _V; + (void)*__i; // require dereference operator + } + _Tp __i; + }; + + template + struct _Mutable_TrivialIteratorConcept + { + void __constraints() { + __function_requires< _TrivialIteratorConcept<_Tp> >(); + *__i = *__j; // require dereference and assignment + } + _Tp __i, __j; + }; + + template + struct _InputIteratorConcept + { + void __constraints() { + __function_requires< _TrivialIteratorConcept<_Tp> >(); + // require iterator_traits typedef's + typedef typename std::iterator_traits<_Tp>::difference_type _Diff; +// __function_requires< _SignedIntegerConcept<_Diff> >(); + typedef typename std::iterator_traits<_Tp>::reference _Ref; + typedef typename std::iterator_traits<_Tp>::pointer _Pt; + typedef typename std::iterator_traits<_Tp>::iterator_category _Cat; + __function_requires< _ConvertibleConcept< + typename std::iterator_traits<_Tp>::iterator_category, + std::input_iterator_tag> >(); + ++__i; // require preincrement operator + __i++; // require postincrement operator + } + _Tp __i; + }; + + template + struct _OutputIteratorConcept + { + void __constraints() { + __function_requires< _AssignableConcept<_Tp> >(); + ++__i; // require preincrement operator + __i++; // require postincrement operator + *__i++ = __t; // require postincrement and assignment + } + _Tp __i; + _ValueT __t; + }; + + template + struct _ForwardIteratorConcept + { + void __constraints() { + __function_requires< _InputIteratorConcept<_Tp> >(); + __function_requires< _DefaultConstructibleConcept<_Tp> >(); + __function_requires< _ConvertibleConcept< + typename std::iterator_traits<_Tp>::iterator_category, + std::forward_iterator_tag> >(); + typedef typename std::iterator_traits<_Tp>::reference _Ref; + _Ref __r _IsUnused = *__i; + } + _Tp __i; + }; + + template + struct _Mutable_ForwardIteratorConcept + { + void __constraints() { + __function_requires< _ForwardIteratorConcept<_Tp> >(); + *__i++ = *__i; // require postincrement and assignment + } + _Tp __i; + }; + + template + struct _BidirectionalIteratorConcept + { + void __constraints() { + __function_requires< _ForwardIteratorConcept<_Tp> >(); + __function_requires< _ConvertibleConcept< + typename std::iterator_traits<_Tp>::iterator_category, + std::bidirectional_iterator_tag> >(); + --__i; // require predecrement operator + __i--; // require postdecrement operator + } + _Tp __i; + }; + + template + struct _Mutable_BidirectionalIteratorConcept + { + void __constraints() { + __function_requires< _BidirectionalIteratorConcept<_Tp> >(); + __function_requires< _Mutable_ForwardIteratorConcept<_Tp> >(); + *__i-- = *__i; // require postdecrement and assignment + } + _Tp __i; + }; + + + template + struct _RandomAccessIteratorConcept + { + void __constraints() { + __function_requires< _BidirectionalIteratorConcept<_Tp> >(); + __function_requires< _ComparableConcept<_Tp> >(); + __function_requires< _ConvertibleConcept< + typename std::iterator_traits<_Tp>::iterator_category, + std::random_access_iterator_tag> >(); + // ??? We don't use _Ref, are we just checking for "referenceability"? + typedef typename std::iterator_traits<_Tp>::reference _Ref; + + __i += __n; // require assignment addition operator + __i = __i + __n; __i = __n + __i; // require addition with difference type + __i -= __n; // require assignment subtraction op + __i = __i - __n; // require subtraction with + // difference type + __n = __i - __j; // require difference operator + (void)__i[__n]; // require element access operator + } + _Tp __a, __b; + _Tp __i, __j; + typename std::iterator_traits<_Tp>::difference_type __n; + }; + + template + struct _Mutable_RandomAccessIteratorConcept + { + void __constraints() { + __function_requires< _RandomAccessIteratorConcept<_Tp> >(); + __function_requires< _Mutable_BidirectionalIteratorConcept<_Tp> >(); + __i[__n] = *__i; // require element access and assignment + } + _Tp __i; + typename std::iterator_traits<_Tp>::difference_type __n; + }; + + //=========================================================================== + // Container Concepts + + template + struct _ContainerConcept + { + typedef typename _Container::value_type _Value_type; + typedef typename _Container::difference_type _Difference_type; + typedef typename _Container::size_type _Size_type; + typedef typename _Container::const_reference _Const_reference; + typedef typename _Container::const_pointer _Const_pointer; + typedef typename _Container::const_iterator _Const_iterator; + + void __constraints() { + __function_requires< _InputIteratorConcept<_Const_iterator> >(); + __function_requires< _AssignableConcept<_Container> >(); + const _Container __c; + __i = __c.begin(); + __i = __c.end(); + __n = __c.size(); + __n = __c.max_size(); + __b = __c.empty(); + } + bool __b; + _Const_iterator __i; + _Size_type __n; + }; + + template + struct _Mutable_ContainerConcept + { + typedef typename _Container::value_type _Value_type; + typedef typename _Container::reference _Reference; + typedef typename _Container::iterator _Iterator; + typedef typename _Container::pointer _Pointer; + + void __constraints() { + __function_requires< _ContainerConcept<_Container> >(); + __function_requires< _AssignableConcept<_Value_type> >(); + __function_requires< _InputIteratorConcept<_Iterator> >(); + + __i = __c.begin(); + __i = __c.end(); + __c.swap(__c2); + } + _Iterator __i; + _Container __c, __c2; + }; + + template + struct _ForwardContainerConcept + { + void __constraints() { + __function_requires< _ContainerConcept<_ForwardContainer> >(); + typedef typename _ForwardContainer::const_iterator _Const_iterator; + __function_requires< _ForwardIteratorConcept<_Const_iterator> >(); + } + }; + + template + struct _Mutable_ForwardContainerConcept + { + void __constraints() { + __function_requires< _ForwardContainerConcept<_ForwardContainer> >(); + __function_requires< _Mutable_ContainerConcept<_ForwardContainer> >(); + typedef typename _ForwardContainer::iterator _Iterator; + __function_requires< _Mutable_ForwardIteratorConcept<_Iterator> >(); + } + }; + + template + struct _ReversibleContainerConcept + { + typedef typename _ReversibleContainer::const_iterator _Const_iterator; + typedef typename _ReversibleContainer::const_reverse_iterator + _Const_reverse_iterator; + + void __constraints() { + __function_requires< _ForwardContainerConcept<_ReversibleContainer> >(); + __function_requires< _BidirectionalIteratorConcept<_Const_iterator> >(); + __function_requires< + _BidirectionalIteratorConcept<_Const_reverse_iterator> >(); + + const _ReversibleContainer __c; + _Const_reverse_iterator __i = __c.rbegin(); + __i = __c.rend(); + } + }; + + template + struct _Mutable_ReversibleContainerConcept + { + typedef typename _ReversibleContainer::iterator _Iterator; + typedef typename _ReversibleContainer::reverse_iterator _Reverse_iterator; + + void __constraints() { + __function_requires<_ReversibleContainerConcept<_ReversibleContainer> >(); + __function_requires< + _Mutable_ForwardContainerConcept<_ReversibleContainer> >(); + __function_requires<_Mutable_BidirectionalIteratorConcept<_Iterator> >(); + __function_requires< + _Mutable_BidirectionalIteratorConcept<_Reverse_iterator> >(); + + _Reverse_iterator __i = __c.rbegin(); + __i = __c.rend(); + } + _ReversibleContainer __c; + }; + + template + struct _RandomAccessContainerConcept + { + typedef typename _RandomAccessContainer::size_type _Size_type; + typedef typename _RandomAccessContainer::const_reference _Const_reference; + typedef typename _RandomAccessContainer::const_iterator _Const_iterator; + typedef typename _RandomAccessContainer::const_reverse_iterator + _Const_reverse_iterator; + + void __constraints() { + __function_requires< + _ReversibleContainerConcept<_RandomAccessContainer> >(); + __function_requires< _RandomAccessIteratorConcept<_Const_iterator> >(); + __function_requires< + _RandomAccessIteratorConcept<_Const_reverse_iterator> >(); + + const _RandomAccessContainer __c; + _Const_reference __r _IsUnused = __c[__n]; + } + _Size_type __n; + }; + + template + struct _Mutable_RandomAccessContainerConcept + { + typedef typename _RandomAccessContainer::size_type _Size_type; + typedef typename _RandomAccessContainer::reference _Reference; + typedef typename _RandomAccessContainer::iterator _Iterator; + typedef typename _RandomAccessContainer::reverse_iterator _Reverse_iterator; + + void __constraints() { + __function_requires< + _RandomAccessContainerConcept<_RandomAccessContainer> >(); + __function_requires< + _Mutable_ReversibleContainerConcept<_RandomAccessContainer> >(); + __function_requires< _Mutable_RandomAccessIteratorConcept<_Iterator> >(); + __function_requires< + _Mutable_RandomAccessIteratorConcept<_Reverse_iterator> >(); + + _Reference __r _IsUnused = __c[__i]; + } + _Size_type __i; + _RandomAccessContainer __c; + }; + + // A Sequence is inherently mutable + template + struct _SequenceConcept + { + typedef typename _Sequence::reference _Reference; + typedef typename _Sequence::const_reference _Const_reference; + + void __constraints() { + // Matt Austern's book puts DefaultConstructible here, the C++ + // standard places it in Container + // function_requires< DefaultConstructible >(); + __function_requires< _Mutable_ForwardContainerConcept<_Sequence> >(); + __function_requires< _DefaultConstructibleConcept<_Sequence> >(); + + _Sequence + __c _IsUnused(__n, __t), + __c2 _IsUnused(__first, __last); + + __c.insert(__p, __t); + __c.insert(__p, __n, __t); + __c.insert(__p, __first, __last); + + __c.erase(__p); + __c.erase(__p, __q); + + _Reference __r _IsUnused = __c.front(); + + __const_constraints(__c); + } + void __const_constraints(const _Sequence& __c) { + _Const_reference __r _IsUnused = __c.front(); + } + typename _Sequence::value_type __t; + typename _Sequence::size_type __n; + typename _Sequence::value_type *__first, *__last; + typename _Sequence::iterator __p, __q; + }; + + template + struct _FrontInsertionSequenceConcept + { + void __constraints() { + __function_requires< _SequenceConcept<_FrontInsertionSequence> >(); + + __c.push_front(__t); + __c.pop_front(); + } + _FrontInsertionSequence __c; + typename _FrontInsertionSequence::value_type __t; + }; + + template + struct _BackInsertionSequenceConcept + { + typedef typename _BackInsertionSequence::reference _Reference; + typedef typename _BackInsertionSequence::const_reference _Const_reference; + + void __constraints() { + __function_requires< _SequenceConcept<_BackInsertionSequence> >(); + + __c.push_back(__t); + __c.pop_back(); + _Reference __r _IsUnused = __c.back(); + } + void __const_constraints(const _BackInsertionSequence& __c) { + _Const_reference __r _IsUnused = __c.back(); + }; + _BackInsertionSequence __c; + typename _BackInsertionSequence::value_type __t; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#undef _IsUnused + +#endif // _GLIBCXX_BOOST_CONCEPT_CHECK + + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/c++0x_warning.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/c++0x_warning.h new file mode 100644 index 0000000..f47b374 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/c++0x_warning.h @@ -0,0 +1,37 @@ +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++0x_warning.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _CXX0X_WARNING_H +#define _CXX0X_WARNING_H 1 + +#if __cplusplus < 201103L +#error This file requires compiler and library support for the \ +ISO C++ 2011 standard. This support is currently experimental, and must be \ +enabled with the -std=c++11 or -std=gnu++11 compiler options. +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/char_traits.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/char_traits.h new file mode 100644 index 0000000..c293495 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/char_traits.h @@ -0,0 +1,573 @@ +// Character Traits for use by standard string and iostream -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/char_traits.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{string} + */ + +// +// ISO C++ 14882: 21 Strings library +// + +#ifndef _CHAR_TRAITS_H +#define _CHAR_TRAITS_H 1 + +#pragma GCC system_header + +#include // std::copy, std::fill_n +#include // For streampos +#include // For WEOF, wmemmove, wmemset, etc. + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief Mapping from character type to associated types. + * + * @note This is an implementation class for the generic version + * of char_traits. It defines int_type, off_type, pos_type, and + * state_type. By default these are unsigned long, streamoff, + * streampos, and mbstate_t. Users who need a different set of + * types, but who don't need to change the definitions of any function + * defined in char_traits, can specialize __gnu_cxx::_Char_types + * while leaving __gnu_cxx::char_traits alone. */ + template + struct _Char_types + { + typedef unsigned long int_type; + typedef std::streampos pos_type; + typedef std::streamoff off_type; + typedef std::mbstate_t state_type; + }; + + + /** + * @brief Base class used to implement std::char_traits. + * + * @note For any given actual character type, this definition is + * probably wrong. (Most of the member functions are likely to be + * right, but the int_type and state_type typedefs, and the eof() + * member function, are likely to be wrong.) The reason this class + * exists is so users can specialize it. Classes in namespace std + * may not be specialized for fundamental types, but classes in + * namespace __gnu_cxx may be. + * + * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html + * for advice on how to make use of this class for @a unusual character + * types. Also, check out include/ext/pod_char_traits.h. + */ + template + struct char_traits + { + typedef _CharT char_type; + typedef typename _Char_types<_CharT>::int_type int_type; + typedef typename _Char_types<_CharT>::pos_type pos_type; + typedef typename _Char_types<_CharT>::off_type off_type; + typedef typename _Char_types<_CharT>::state_type state_type; + + static void + assign(char_type& __c1, const char_type& __c2) + { __c1 = __c2; } + + static _GLIBCXX_CONSTEXPR bool + eq(const char_type& __c1, const char_type& __c2) + { return __c1 == __c2; } + + static _GLIBCXX_CONSTEXPR bool + lt(const char_type& __c1, const char_type& __c2) + { return __c1 < __c2; } + + static int + compare(const char_type* __s1, const char_type* __s2, std::size_t __n); + + static std::size_t + length(const char_type* __s); + + static const char_type* + find(const char_type* __s, std::size_t __n, const char_type& __a); + + static char_type* + move(char_type* __s1, const char_type* __s2, std::size_t __n); + + static char_type* + copy(char_type* __s1, const char_type* __s2, std::size_t __n); + + static char_type* + assign(char_type* __s, std::size_t __n, char_type __a); + + static _GLIBCXX_CONSTEXPR char_type + to_char_type(const int_type& __c) + { return static_cast(__c); } + + static _GLIBCXX_CONSTEXPR int_type + to_int_type(const char_type& __c) + { return static_cast(__c); } + + static _GLIBCXX_CONSTEXPR bool + eq_int_type(const int_type& __c1, const int_type& __c2) + { return __c1 == __c2; } + + static _GLIBCXX_CONSTEXPR int_type + eof() + { return static_cast(_GLIBCXX_STDIO_EOF); } + + static _GLIBCXX_CONSTEXPR int_type + not_eof(const int_type& __c) + { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } + }; + + template + 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) + { + // NB: Inline std::copy so no recursive dependencies. + 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) + { + // NB: Inline std::fill_n so no recursive dependencies. + std::fill_n(__s, __n, __a); + return __s; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // 21.1 + /** + * @brief Basis for explicit traits specializations. + * + * @note For any given actual character type, this definition is + * probably wrong. Since this is just a thin wrapper around + * __gnu_cxx::char_traits, it is possible to achieve a more + * appropriate definition by specializing __gnu_cxx::char_traits. + * + * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html + * for advice on how to make use of this class for @a unusual character + * types. Also, check out include/ext/pod_char_traits.h. + */ + template + struct char_traits : public __gnu_cxx::char_traits<_CharT> + { }; + + + /// 21.1.3.1 char_traits specializations + 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) _GLIBCXX_NOEXCEPT + { __c1 = __c2; } + + static _GLIBCXX_CONSTEXPR bool + eq(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT + { return __c1 == __c2; } + + static _GLIBCXX_CONSTEXPR bool + lt(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT + { return __c1 < __c2; } + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n) + { 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 _GLIBCXX_CONSTEXPR char_type + to_char_type(const int_type& __c) _GLIBCXX_NOEXCEPT + { return static_cast(__c); } + + // To keep both the byte 0xff and the eof symbol 0xffffffff + // from ending up as 0xffffffff. + static _GLIBCXX_CONSTEXPR int_type + to_int_type(const char_type& __c) _GLIBCXX_NOEXCEPT + { return static_cast(static_cast(__c)); } + + static _GLIBCXX_CONSTEXPR bool + eq_int_type(const int_type& __c1, const int_type& __c2) _GLIBCXX_NOEXCEPT + { return __c1 == __c2; } + + static _GLIBCXX_CONSTEXPR int_type + eof() _GLIBCXX_NOEXCEPT + { return static_cast(_GLIBCXX_STDIO_EOF); } + + static _GLIBCXX_CONSTEXPR int_type + not_eof(const int_type& __c) _GLIBCXX_NOEXCEPT + { return (__c == eof()) ? 0 : __c; } + }; + + +#ifdef _GLIBCXX_USE_WCHAR_T + /// 21.1.3.2 char_traits specializations + template<> + struct char_traits + { + typedef wchar_t char_type; + typedef wint_t int_type; + typedef streamoff off_type; + typedef wstreampos pos_type; + typedef mbstate_t state_type; + + static void + assign(char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT + { __c1 = __c2; } + + static _GLIBCXX_CONSTEXPR bool + eq(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT + { return __c1 == __c2; } + + static _GLIBCXX_CONSTEXPR bool + lt(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT + { return __c1 < __c2; } + + static int + compare(const char_type* __s1, const char_type* __s2, size_t __n) + { 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 _GLIBCXX_CONSTEXPR char_type + to_char_type(const int_type& __c) _GLIBCXX_NOEXCEPT + { return char_type(__c); } + + static _GLIBCXX_CONSTEXPR int_type + to_int_type(const char_type& __c) _GLIBCXX_NOEXCEPT + { return int_type(__c); } + + static _GLIBCXX_CONSTEXPR bool + eq_int_type(const int_type& __c1, const int_type& __c2) _GLIBCXX_NOEXCEPT + { return __c1 == __c2; } + + static _GLIBCXX_CONSTEXPR int_type + eof() _GLIBCXX_NOEXCEPT + { return static_cast(WEOF); } + + static _GLIBCXX_CONSTEXPR int_type + not_eof(const int_type& __c) _GLIBCXX_NOEXCEPT + { return eq_int_type(__c, eof()) ? 0 : __c; } + }; +#endif //_GLIBCXX_USE_WCHAR_T + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if ((__cplusplus >= 201103L) \ + && defined(_GLIBCXX_USE_C99_STDINT_TR1)) + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + 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; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif + +#endif // _CHAR_TRAITS_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/codecvt.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/codecvt.h new file mode 100644 index 0000000..77cd93e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/codecvt.h @@ -0,0 +1,507 @@ +// Locale support (codecvt) -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/codecvt.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.1.5 Template class codecvt +// + +// Written by Benjamin Kosnik + +#ifndef _CODECVT_H +#define _CODECVT_H 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// Empty base class for codecvt facet [22.2.1.5]. + class codecvt_base + { + public: + enum result + { + ok, + partial, + error, + noconv + }; + }; + + /** + * @brief Common base for codecvt functions. + * + * This template class provides implementations of the public functions + * that forward to the protected virtual functions. + * + * This template also provides abstract stubs for the protected virtual + * functions. + */ + template + class __codecvt_abstract_base + : public locale::facet, public codecvt_base + { + public: + // Types: + typedef codecvt_base::result result; + typedef _InternT intern_type; + typedef _ExternT extern_type; + typedef _StateT state_type; + + // 22.2.1.5.1 codecvt members + /** + * @brief Convert from internal to external character set. + * + * Converts input string of intern_type to output string of + * extern_type. This is analogous to wcsrtombs. It does this by + * calling codecvt::do_out. + * + * The source and destination character sets are determined by the + * facet's locale, internal and external types. + * + * The characters in [from,from_end) are converted and written to + * [to,to_end). from_next and to_next are set to point to the + * character following the last successfully converted character, + * respectively. If the result needed no conversion, from_next and + * to_next are not affected. + * + * The @a state argument should be initialized if the input is at the + * beginning and carried from a previous call if continuing + * conversion. There are no guarantees about how @a state is used. + * + * The result returned is a member of codecvt_base::result. If + * all the input is converted, returns codecvt_base::ok. If no + * conversion is necessary, returns codecvt_base::noconv. If + * the input ends early or there is insufficient space in the + * output, returns codecvt_base::partial. Otherwise the + * conversion failed and codecvt_base::error is returned. + * + * @param __state Persistent conversion state data. + * @param __from Start of input. + * @param __from_end End of input. + * @param __from_next Returns start of unconverted data. + * @param __to Start of output buffer. + * @param __to_end End of output buffer. + * @param __to_next Returns start of unused output area. + * @return codecvt_base::result. + */ + result + out(state_type& __state, const intern_type* __from, + const intern_type* __from_end, const intern_type*& __from_next, + extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const + { + return this->do_out(__state, __from, __from_end, __from_next, + __to, __to_end, __to_next); + } + + /** + * @brief Reset conversion state. + * + * Writes characters to output that would restore @a state to initial + * conditions. The idea is that if a partial conversion occurs, then + * the converting the characters written by this function would leave + * the state in initial conditions, rather than partial conversion + * state. It does this by calling codecvt::do_unshift(). + * + * For example, if 4 external characters always converted to 1 internal + * character, and input to in() had 6 external characters with state + * saved, this function would write two characters to the output and + * set the state to initialized conditions. + * + * The source and destination character sets are determined by the + * facet's locale, internal and external types. + * + * The result returned is a member of codecvt_base::result. If the + * state could be reset and data written, returns codecvt_base::ok. If + * no conversion is necessary, returns codecvt_base::noconv. If the + * output has insufficient space, returns codecvt_base::partial. + * Otherwise the reset failed and codecvt_base::error is returned. + * + * @param __state Persistent conversion state data. + * @param __to Start of output buffer. + * @param __to_end End of output buffer. + * @param __to_next Returns start of unused output area. + * @return codecvt_base::result. + */ + result + unshift(state_type& __state, extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const + { return this->do_unshift(__state, __to,__to_end,__to_next); } + + /** + * @brief Convert from external to internal character set. + * + * Converts input string of extern_type to output string of + * intern_type. This is analogous to mbsrtowcs. It does this by + * calling codecvt::do_in. + * + * The source and destination character sets are determined by the + * facet's locale, internal and external types. + * + * The characters in [from,from_end) are converted and written to + * [to,to_end). from_next and to_next are set to point to the + * character following the last successfully converted character, + * respectively. If the result needed no conversion, from_next and + * to_next are not affected. + * + * The @a state argument should be initialized if the input is at the + * beginning and carried from a previous call if continuing + * conversion. There are no guarantees about how @a state is used. + * + * The result returned is a member of codecvt_base::result. If + * all the input is converted, returns codecvt_base::ok. If no + * conversion is necessary, returns codecvt_base::noconv. If + * the input ends early or there is insufficient space in the + * output, returns codecvt_base::partial. Otherwise the + * conversion failed and codecvt_base::error is returned. + * + * @param __state Persistent conversion state data. + * @param __from Start of input. + * @param __from_end End of input. + * @param __from_next Returns start of unconverted data. + * @param __to Start of output buffer. + * @param __to_end End of output buffer. + * @param __to_next Returns start of unused output area. + * @return codecvt_base::result. + */ + result + in(state_type& __state, const extern_type* __from, + const extern_type* __from_end, const extern_type*& __from_next, + intern_type* __to, intern_type* __to_end, + intern_type*& __to_next) const + { + return this->do_in(__state, __from, __from_end, __from_next, + __to, __to_end, __to_next); + } + + int + encoding() const throw() + { return this->do_encoding(); } + + bool + always_noconv() const throw() + { return this->do_always_noconv(); } + + int + length(state_type& __state, const extern_type* __from, + const extern_type* __end, size_t __max) const + { return this->do_length(__state, __from, __end, __max); } + + int + max_length() const throw() + { return this->do_max_length(); } + + protected: + explicit + __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } + + virtual + ~__codecvt_abstract_base() { } + + /** + * @brief Convert from internal to external character set. + * + * Converts input string of intern_type to output string of + * extern_type. This function is a hook for derived classes to change + * the value returned. @see out for more information. + */ + virtual result + do_out(state_type& __state, const intern_type* __from, + const intern_type* __from_end, const intern_type*& __from_next, + extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const = 0; + + virtual result + do_unshift(state_type& __state, extern_type* __to, + extern_type* __to_end, extern_type*& __to_next) const = 0; + + virtual result + do_in(state_type& __state, const extern_type* __from, + const extern_type* __from_end, const extern_type*& __from_next, + intern_type* __to, intern_type* __to_end, + intern_type*& __to_next) const = 0; + + virtual int + do_encoding() const throw() = 0; + + virtual bool + do_always_noconv() const throw() = 0; + + virtual int + do_length(state_type&, const extern_type* __from, + const extern_type* __end, size_t __max) const = 0; + + virtual int + do_max_length() const throw() = 0; + }; + + + + /** + * @brief Primary class template codecvt. + * @ingroup locales + * + * NB: Generic, mostly useless implementation. + * + */ + template + class codecvt + : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> + { + public: + // Types: + typedef codecvt_base::result result; + typedef _InternT intern_type; + typedef _ExternT extern_type; + typedef _StateT state_type; + + protected: + __c_locale _M_c_locale_codecvt; + + public: + static locale::id id; + + explicit + codecvt(size_t __refs = 0) + : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs), + _M_c_locale_codecvt(0) + { } + + explicit + codecvt(__c_locale __cloc, size_t __refs = 0); + + protected: + virtual + ~codecvt() { } + + virtual result + do_out(state_type& __state, const intern_type* __from, + const intern_type* __from_end, const intern_type*& __from_next, + extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const; + + virtual result + do_unshift(state_type& __state, extern_type* __to, + extern_type* __to_end, extern_type*& __to_next) const; + + virtual result + do_in(state_type& __state, const extern_type* __from, + const extern_type* __from_end, const extern_type*& __from_next, + intern_type* __to, intern_type* __to_end, + intern_type*& __to_next) const; + + virtual int + do_encoding() const throw(); + + virtual bool + do_always_noconv() const throw(); + + virtual int + do_length(state_type&, const extern_type* __from, + const extern_type* __end, size_t __max) const; + + virtual int + do_max_length() const throw(); + }; + + template + locale::id codecvt<_InternT, _ExternT, _StateT>::id; + + /// class codecvt specialization. + template<> + class codecvt + : public __codecvt_abstract_base + { + public: + // Types: + typedef char intern_type; + typedef char extern_type; + typedef mbstate_t state_type; + + protected: + __c_locale _M_c_locale_codecvt; + + public: + static locale::id id; + + explicit + codecvt(size_t __refs = 0); + + explicit + codecvt(__c_locale __cloc, size_t __refs = 0); + + protected: + virtual + ~codecvt(); + + virtual result + do_out(state_type& __state, const intern_type* __from, + const intern_type* __from_end, const intern_type*& __from_next, + extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const; + + virtual result + do_unshift(state_type& __state, extern_type* __to, + extern_type* __to_end, extern_type*& __to_next) const; + + virtual result + do_in(state_type& __state, const extern_type* __from, + const extern_type* __from_end, const extern_type*& __from_next, + intern_type* __to, intern_type* __to_end, + intern_type*& __to_next) const; + + virtual int + do_encoding() const throw(); + + virtual bool + do_always_noconv() const throw(); + + virtual int + do_length(state_type&, const extern_type* __from, + const extern_type* __end, size_t __max) const; + + virtual int + do_max_length() const throw(); + }; + +#ifdef _GLIBCXX_USE_WCHAR_T + /// class codecvt specialization. + template<> + class codecvt + : public __codecvt_abstract_base + { + public: + // Types: + typedef wchar_t intern_type; + typedef char extern_type; + typedef mbstate_t state_type; + + protected: + __c_locale _M_c_locale_codecvt; + + public: + static locale::id id; + + explicit + codecvt(size_t __refs = 0); + + explicit + codecvt(__c_locale __cloc, size_t __refs = 0); + + protected: + virtual + ~codecvt(); + + virtual result + do_out(state_type& __state, const intern_type* __from, + const intern_type* __from_end, const intern_type*& __from_next, + extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const; + + virtual result + do_unshift(state_type& __state, + extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const; + + virtual result + do_in(state_type& __state, + const extern_type* __from, const extern_type* __from_end, + const extern_type*& __from_next, + intern_type* __to, intern_type* __to_end, + intern_type*& __to_next) const; + + virtual + int do_encoding() const throw(); + + virtual + bool do_always_noconv() const throw(); + + virtual + int do_length(state_type&, const extern_type* __from, + const extern_type* __end, size_t __max) const; + + virtual int + do_max_length() const throw(); + }; +#endif //_GLIBCXX_USE_WCHAR_T + + /// class codecvt_byname [22.2.1.6]. + template + class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> + { + public: + explicit + codecvt_byname(const char* __s, size_t __refs = 0) + : codecvt<_InternT, _ExternT, _StateT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_codecvt); + this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); + } + } + + protected: + virtual + ~codecvt_byname() { } + }; + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template class codecvt_byname; + + extern template + const codecvt& + use_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template class codecvt_byname; + + extern template + const codecvt& + use_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // _CODECVT_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/concept_check.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/concept_check.h new file mode 100644 index 0000000..589fd6a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/concept_check.h @@ -0,0 +1,80 @@ +// Concept-checking control -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/concept_check.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iterator} + */ + +#ifndef _CONCEPT_CHECK_H +#define _CONCEPT_CHECK_H 1 + +#pragma GCC system_header + +#include + +// All places in libstdc++-v3 where these are used, or /might/ be used, or +// don't need to be used, or perhaps /should/ be used, are commented with +// "concept requirements" (and maybe some more text). So grep like crazy +// if you're looking for additional places to use these. + +// Concept-checking code is off by default unless users turn it on via +// configure options or editing c++config.h. + +#ifndef _GLIBCXX_CONCEPT_CHECKS + +#define __glibcxx_function_requires(...) +#define __glibcxx_class_requires(_a,_b) +#define __glibcxx_class_requires2(_a,_b,_c) +#define __glibcxx_class_requires3(_a,_b,_c,_d) +#define __glibcxx_class_requires4(_a,_b,_c,_d,_e) + +#else // the checks are on + +#include + +// Note that the obvious and elegant approach of +// +//#define glibcxx_function_requires(C) debug::function_requires< debug::C >() +// +// won't work due to concept templates with more than one parameter, e.g., +// BinaryPredicateConcept. The preprocessor tries to split things up on +// the commas in the template argument list. We can't use an inner pair of +// parenthesis to hide the commas, because "debug::(Temp)" isn't +// a valid instantiation pattern. Thus, we steal a feature from C99. + +#define __glibcxx_function_requires(...) \ + __gnu_cxx::__function_requires< __gnu_cxx::__VA_ARGS__ >(); +#define __glibcxx_class_requires(_a,_C) \ + _GLIBCXX_CLASS_REQUIRES(_a, __gnu_cxx, _C); +#define __glibcxx_class_requires2(_a,_b,_C) \ + _GLIBCXX_CLASS_REQUIRES2(_a, _b, __gnu_cxx, _C); +#define __glibcxx_class_requires3(_a,_b,_c,_C) \ + _GLIBCXX_CLASS_REQUIRES3(_a, _b, _c, __gnu_cxx, _C); +#define __glibcxx_class_requires4(_a,_b,_c,_d,_C) \ + _GLIBCXX_CLASS_REQUIRES4(_a, _b, _c, _d, __gnu_cxx, _C); + +#endif // enable/disable + +#endif // _GLIBCXX_CONCEPT_CHECK diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/cpp_type_traits.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/cpp_type_traits.h new file mode 100644 index 0000000..6c03c98 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/cpp_type_traits.h @@ -0,0 +1,424 @@ +// The -*- C++ -*- type traits classes for internal use in libstdc++ + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpp_type_traits.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/type_traits} + */ + +// Written by Gabriel Dos Reis + +#ifndef _CPP_TYPE_TRAITS_H +#define _CPP_TYPE_TRAITS_H 1 + +#pragma GCC system_header + +#include + +// +// This file provides some compile-time information about various types. +// These representations were designed, on purpose, to be constant-expressions +// and not types as found in . In particular, they +// can be used in control structures and the optimizer hopefully will do +// the obvious thing. +// +// Why integral expressions, and not functions nor types? +// Firstly, these compile-time entities are used as template-arguments +// so function return values won't work: We need compile-time entities. +// We're left with types and constant integral expressions. +// Secondly, from the point of view of ease of use, type-based compile-time +// information is -not- *that* convenient. On has to write lots of +// overloaded functions and to hope that the compiler will select the right +// one. As a net effect, the overall structure isn't very clear at first +// glance. +// Thirdly, partial ordering and overload resolution (of function templates) +// is highly costly in terms of compiler-resource. It is a Good Thing to +// keep these resource consumption as least as possible. +// +// See valarray_array.h for a case use. +// +// -- Gaby (dosreis@cmla.ens-cachan.fr) 2000-03-06. +// +// Update 2005: types are also provided and has been +// removed. +// + +// Forward declaration hack, should really include this from somewhere. +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + class __normal_iterator; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + struct __true_type { }; + struct __false_type { }; + + template + struct __truth_type + { typedef __false_type __type; }; + + template<> + struct __truth_type + { typedef __true_type __type; }; + + // N.B. The conversions to bool are needed due to the issue + // explained in c++/19404. + template + struct __traitor + { + enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; + typedef typename __truth_type<__value>::__type __type; + }; + + // Compare for equality of types. + template + struct __are_same + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template + struct __are_same<_Tp, _Tp> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + // Holds if the template-argument is a void type. + template + struct __is_void + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_void + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + // + // Integer types + // + template + struct __is_integer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + // Thirteen specializations (yes there are eleven standard integer + // types; long long and unsigned long long are + // supported as extensions) + 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; + }; + +# ifdef _GLIBCXX_USE_WCHAR_T + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; +# endif + +#if __cplusplus >= 201103L + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template<> + struct __is_integer + { + enum { __value = 1 }; + typedef __true_type __type; + }; +#endif + + 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; + }; + + // + // Floating point types + // + template + struct __is_floating + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + // three specializations (float, double and 'long double') + 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; + }; + + // + // Pointer types + // + template + struct __is_pointer + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template + struct __is_pointer<_Tp*> + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + // + // Normal iterator 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; + }; + + // + // An arithmetic type is an integer type or a floating point type + // + template + struct __is_arithmetic + : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > + { }; + + // + // A fundamental type is `void' or and arithmetic type + // + template + struct __is_fundamental + : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> > + { }; + + // + // A scalar type is an arithmetic type or a pointer type + // + template + struct __is_scalar + : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > + { }; + + // + // For use in std::copy and std::find overloads for streambuf iterators. + // + template + struct __is_char + { + enum { __value = 0 }; + typedef __false_type __type; + }; + + template<> + struct __is_char + { + enum { __value = 1 }; + typedef __true_type __type; + }; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + struct __is_char + { + enum { __value = 1 }; + typedef __true_type __type; + }; +#endif + + 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; + }; + + // + // Move iterator type + // + template + struct __is_move_iterator + { + enum { __value = 0 }; + typedef __false_type __type; + }; + +#if __cplusplus >= 201103L + template + class move_iterator; + + template + struct __is_move_iterator< move_iterator<_Iterator> > + { + enum { __value = 1 }; + typedef __true_type __type; + }; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif //_CPP_TYPE_TRAITS_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/cxxabi_forced.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/cxxabi_forced.h new file mode 100644 index 0000000..1ca6581 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/cxxabi_forced.h @@ -0,0 +1,60 @@ +// cxxabi.h subset for cancellation -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of GCC. +// +// GCC is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// GCC is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_forced.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_FORCED_H +#define _CXXABI_FORCED_H 1 + +#pragma GCC system_header + +#pragma GCC visibility push(default) + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + /** + * @brief Thrown as part of forced unwinding. + * @ingroup exceptions + * + * A magic placeholder class that can be caught by reference to + * recognize forced unwinding. + */ + class __forced_unwind + { + virtual ~__forced_unwind() throw(); + + // Prevent catch by value. + virtual void __pure_dummy() = 0; + }; +} +#endif // __cplusplus + +#pragma GCC visibility pop + +#endif // __CXXABI_FORCED_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/deque.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/deque.tcc new file mode 100644 index 0000000..89c5ef7 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/deque.tcc @@ -0,0 +1,1068 @@ +// Deque implementation (out of line) -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/deque.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{deque} + */ + +#ifndef _DEQUE_TCC +#define _DEQUE_TCC 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + +#if __cplusplus >= 201103L + template + void + deque<_Tp, _Alloc>:: + _M_default_initialize() + { + _Map_pointer __cur; + __try + { + for (__cur = this->_M_impl._M_start._M_node; + __cur < this->_M_impl._M_finish._M_node; + ++__cur) + std::__uninitialized_default_a(*__cur, *__cur + _S_buffer_size(), + _M_get_Tp_allocator()); + std::__uninitialized_default_a(this->_M_impl._M_finish._M_first, + this->_M_impl._M_finish._M_cur, + _M_get_Tp_allocator()); + } + __catch(...) + { + std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), + _M_get_Tp_allocator()); + __throw_exception_again; + } + } +#endif + + template + deque<_Tp, _Alloc>& + deque<_Tp, _Alloc>:: + operator=(const deque& __x) + { + const size_type __len = size(); + if (&__x != this) + { + if (__len >= __x.size()) + _M_erase_at_end(std::copy(__x.begin(), __x.end(), + this->_M_impl._M_start)); + else + { + const_iterator __mid = __x.begin() + difference_type(__len); + std::copy(__x.begin(), __mid, this->_M_impl._M_start); + insert(this->_M_impl._M_finish, __mid, __x.end()); + } + } + return *this; + } + +#if __cplusplus >= 201103L + template + template + void + deque<_Tp, _Alloc>:: + emplace_front(_Args&&... __args) + { + if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) + { + this->_M_impl.construct(this->_M_impl._M_start._M_cur - 1, + std::forward<_Args>(__args)...); + --this->_M_impl._M_start._M_cur; + } + else + _M_push_front_aux(std::forward<_Args>(__args)...); + } + + template + template + void + deque<_Tp, _Alloc>:: + emplace_back(_Args&&... __args) + { + if (this->_M_impl._M_finish._M_cur + != this->_M_impl._M_finish._M_last - 1) + { + this->_M_impl.construct(this->_M_impl._M_finish._M_cur, + std::forward<_Args>(__args)...); + ++this->_M_impl._M_finish._M_cur; + } + else + _M_push_back_aux(std::forward<_Args>(__args)...); + } +#endif + + template + typename deque<_Tp, _Alloc>::iterator + deque<_Tp, _Alloc>:: + insert(iterator __position, const value_type& __x) + { + if (__position._M_cur == this->_M_impl._M_start._M_cur) + { + push_front(__x); + return this->_M_impl._M_start; + } + else if (__position._M_cur == this->_M_impl._M_finish._M_cur) + { + push_back(__x); + iterator __tmp = this->_M_impl._M_finish; + --__tmp; + return __tmp; + } + else + return _M_insert_aux(__position, __x); + } + +#if __cplusplus >= 201103L + template + template + typename deque<_Tp, _Alloc>::iterator + deque<_Tp, _Alloc>:: + emplace(iterator __position, _Args&&... __args) + { + if (__position._M_cur == this->_M_impl._M_start._M_cur) + { + emplace_front(std::forward<_Args>(__args)...); + return this->_M_impl._M_start; + } + else if (__position._M_cur == this->_M_impl._M_finish._M_cur) + { + emplace_back(std::forward<_Args>(__args)...); + iterator __tmp = this->_M_impl._M_finish; + --__tmp; + return __tmp; + } + else + return _M_insert_aux(__position, std::forward<_Args>(__args)...); + } +#endif + + template + typename deque<_Tp, _Alloc>::iterator + deque<_Tp, _Alloc>:: + erase(iterator __position) + { + iterator __next = __position; + ++__next; + const difference_type __index = __position - begin(); + if (static_cast(__index) < (size() >> 1)) + { + if (__position != begin()) + _GLIBCXX_MOVE_BACKWARD3(begin(), __position, __next); + pop_front(); + } + else + { + if (__next != end()) + _GLIBCXX_MOVE3(__next, end(), __position); + pop_back(); + } + return begin() + __index; + } + + template + typename deque<_Tp, _Alloc>::iterator + deque<_Tp, _Alloc>:: + erase(iterator __first, iterator __last) + { + if (__first == __last) + return __first; + else if (__first == begin() && __last == end()) + { + clear(); + return end(); + } + else + { + const difference_type __n = __last - __first; + const difference_type __elems_before = __first - begin(); + if (static_cast(__elems_before) <= (size() - __n) / 2) + { + if (__first != begin()) + _GLIBCXX_MOVE_BACKWARD3(begin(), __first, __last); + _M_erase_at_begin(begin() + __n); + } + else + { + if (__last != end()) + _GLIBCXX_MOVE3(__last, end(), __first); + _M_erase_at_end(end() - __n); + } + return begin() + __elems_before; + } + } + + template + template + void + deque<_Tp, _Alloc>:: + _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 + deque<_Tp, _Alloc>:: + _M_fill_insert(iterator __pos, size_type __n, const value_type& __x) + { + if (__pos._M_cur == this->_M_impl._M_start._M_cur) + { + iterator __new_start = _M_reserve_elements_at_front(__n); + __try + { + std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start, + __x, _M_get_Tp_allocator()); + this->_M_impl._M_start = __new_start; + } + __catch(...) + { + _M_destroy_nodes(__new_start._M_node, + this->_M_impl._M_start._M_node); + __throw_exception_again; + } + } + else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) + { + iterator __new_finish = _M_reserve_elements_at_back(__n); + __try + { + std::__uninitialized_fill_a(this->_M_impl._M_finish, + __new_finish, __x, + _M_get_Tp_allocator()); + this->_M_impl._M_finish = __new_finish; + } + __catch(...) + { + _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, + __new_finish._M_node + 1); + __throw_exception_again; + } + } + else + _M_insert_aux(__pos, __n, __x); + } + +#if __cplusplus >= 201103L + template + void + deque<_Tp, _Alloc>:: + _M_default_append(size_type __n) + { + if (__n) + { + iterator __new_finish = _M_reserve_elements_at_back(__n); + __try + { + std::__uninitialized_default_a(this->_M_impl._M_finish, + __new_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish = __new_finish; + } + __catch(...) + { + _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, + __new_finish._M_node + 1); + __throw_exception_again; + } + } + } + + template + bool + deque<_Tp, _Alloc>:: + _M_shrink_to_fit() + { + const difference_type __front_capacity + = (this->_M_impl._M_start._M_cur - this->_M_impl._M_start._M_first); + if (__front_capacity == 0) + return false; + + const difference_type __back_capacity + = (this->_M_impl._M_finish._M_last - this->_M_impl._M_finish._M_cur); + if (__front_capacity + __back_capacity < _S_buffer_size()) + return false; + + return std::__shrink_to_fit_aux::_S_do_it(*this); + } +#endif + + template + void + deque<_Tp, _Alloc>:: + _M_fill_initialize(const value_type& __value) + { + _Map_pointer __cur; + __try + { + for (__cur = this->_M_impl._M_start._M_node; + __cur < this->_M_impl._M_finish._M_node; + ++__cur) + std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(), + __value, _M_get_Tp_allocator()); + std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first, + this->_M_impl._M_finish._M_cur, + __value, _M_get_Tp_allocator()); + } + __catch(...) + { + std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), + _M_get_Tp_allocator()); + __throw_exception_again; + } + } + + template + template + void + deque<_Tp, _Alloc>:: + _M_range_initialize(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag) + { + this->_M_initialize_map(0); + __try + { + for (; __first != __last; ++__first) +#if __cplusplus >= 201103L + emplace_back(*__first); +#else + push_back(*__first); +#endif + } + __catch(...) + { + clear(); + __throw_exception_again; + } + } + + template + template + void + deque<_Tp, _Alloc>:: + _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag) + { + const size_type __n = std::distance(__first, __last); + this->_M_initialize_map(__n); + + _Map_pointer __cur_node; + __try + { + for (__cur_node = this->_M_impl._M_start._M_node; + __cur_node < this->_M_impl._M_finish._M_node; + ++__cur_node) + { + _ForwardIterator __mid = __first; + std::advance(__mid, _S_buffer_size()); + std::__uninitialized_copy_a(__first, __mid, *__cur_node, + _M_get_Tp_allocator()); + __first = __mid; + } + std::__uninitialized_copy_a(__first, __last, + this->_M_impl._M_finish._M_first, + _M_get_Tp_allocator()); + } + __catch(...) + { + std::_Destroy(this->_M_impl._M_start, + iterator(*__cur_node, __cur_node), + _M_get_Tp_allocator()); + __throw_exception_again; + } + } + + // Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_last - 1. + template +#if __cplusplus >= 201103L + template + void + deque<_Tp, _Alloc>:: + _M_push_back_aux(_Args&&... __args) +#else + void + deque<_Tp, _Alloc>:: + _M_push_back_aux(const value_type& __t) +#endif + { + _M_reserve_map_at_back(); + *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node(); + __try + { +#if __cplusplus >= 201103L + this->_M_impl.construct(this->_M_impl._M_finish._M_cur, + std::forward<_Args>(__args)...); +#else + this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __t); +#endif + this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node + + 1); + this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first; + } + __catch(...) + { + _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1)); + __throw_exception_again; + } + } + + // Called only if _M_impl._M_start._M_cur == _M_impl._M_start._M_first. + template +#if __cplusplus >= 201103L + template + void + deque<_Tp, _Alloc>:: + _M_push_front_aux(_Args&&... __args) +#else + void + deque<_Tp, _Alloc>:: + _M_push_front_aux(const value_type& __t) +#endif + { + _M_reserve_map_at_front(); + *(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node(); + __try + { + this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + - 1); + this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1; +#if __cplusplus >= 201103L + this->_M_impl.construct(this->_M_impl._M_start._M_cur, + std::forward<_Args>(__args)...); +#else + this->_M_impl.construct(this->_M_impl._M_start._M_cur, __t); +#endif + } + __catch(...) + { + ++this->_M_impl._M_start; + _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1)); + __throw_exception_again; + } + } + + // Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_first. + template + void deque<_Tp, _Alloc>:: + _M_pop_back_aux() + { + _M_deallocate_node(this->_M_impl._M_finish._M_first); + this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1); + this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1; + this->_M_impl.destroy(this->_M_impl._M_finish._M_cur); + } + + // Called only if _M_impl._M_start._M_cur == _M_impl._M_start._M_last - 1. + // Note that if the deque has at least one element (a precondition for this + // member function), and if + // _M_impl._M_start._M_cur == _M_impl._M_start._M_last, + // then the deque must have at least two nodes. + template + void deque<_Tp, _Alloc>:: + _M_pop_front_aux() + { + this->_M_impl.destroy(this->_M_impl._M_start._M_cur); + _M_deallocate_node(this->_M_impl._M_start._M_first); + this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1); + this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first; + } + + template + template + void + deque<_Tp, _Alloc>:: + _M_range_insert_aux(iterator __pos, + _InputIterator __first, _InputIterator __last, + std::input_iterator_tag) + { std::copy(__first, __last, std::inserter(*this, __pos)); } + + template + template + void + deque<_Tp, _Alloc>:: + _M_range_insert_aux(iterator __pos, + _ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag) + { + const size_type __n = std::distance(__first, __last); + if (__pos._M_cur == this->_M_impl._M_start._M_cur) + { + iterator __new_start = _M_reserve_elements_at_front(__n); + __try + { + std::__uninitialized_copy_a(__first, __last, __new_start, + _M_get_Tp_allocator()); + this->_M_impl._M_start = __new_start; + } + __catch(...) + { + _M_destroy_nodes(__new_start._M_node, + this->_M_impl._M_start._M_node); + __throw_exception_again; + } + } + else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) + { + iterator __new_finish = _M_reserve_elements_at_back(__n); + __try + { + std::__uninitialized_copy_a(__first, __last, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish = __new_finish; + } + __catch(...) + { + _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, + __new_finish._M_node + 1); + __throw_exception_again; + } + } + else + _M_insert_aux(__pos, __first, __last, __n); + } + + template +#if __cplusplus >= 201103L + template + typename deque<_Tp, _Alloc>::iterator + deque<_Tp, _Alloc>:: + _M_insert_aux(iterator __pos, _Args&&... __args) + { + value_type __x_copy(std::forward<_Args>(__args)...); // XXX copy +#else + typename deque<_Tp, _Alloc>::iterator + deque<_Tp, _Alloc>:: + _M_insert_aux(iterator __pos, const value_type& __x) + { + value_type __x_copy = __x; // XXX copy +#endif + difference_type __index = __pos - this->_M_impl._M_start; + if (static_cast(__index) < size() / 2) + { + push_front(_GLIBCXX_MOVE(front())); + iterator __front1 = this->_M_impl._M_start; + ++__front1; + iterator __front2 = __front1; + ++__front2; + __pos = this->_M_impl._M_start + __index; + iterator __pos1 = __pos; + ++__pos1; + _GLIBCXX_MOVE3(__front2, __pos1, __front1); + } + else + { + push_back(_GLIBCXX_MOVE(back())); + iterator __back1 = this->_M_impl._M_finish; + --__back1; + iterator __back2 = __back1; + --__back2; + __pos = this->_M_impl._M_start + __index; + _GLIBCXX_MOVE_BACKWARD3(__pos, __back2, __back1); + } + *__pos = _GLIBCXX_MOVE(__x_copy); + return __pos; + } + + template + void + deque<_Tp, _Alloc>:: + _M_insert_aux(iterator __pos, size_type __n, const value_type& __x) + { + const difference_type __elems_before = __pos - this->_M_impl._M_start; + const size_type __length = this->size(); + value_type __x_copy = __x; + if (__elems_before < difference_type(__length / 2)) + { + iterator __new_start = _M_reserve_elements_at_front(__n); + iterator __old_start = this->_M_impl._M_start; + __pos = this->_M_impl._M_start + __elems_before; + __try + { + if (__elems_before >= difference_type(__n)) + { + iterator __start_n = (this->_M_impl._M_start + + difference_type(__n)); + std::__uninitialized_move_a(this->_M_impl._M_start, + __start_n, __new_start, + _M_get_Tp_allocator()); + this->_M_impl._M_start = __new_start; + _GLIBCXX_MOVE3(__start_n, __pos, __old_start); + std::fill(__pos - difference_type(__n), __pos, __x_copy); + } + else + { + std::__uninitialized_move_fill(this->_M_impl._M_start, + __pos, __new_start, + this->_M_impl._M_start, + __x_copy, + _M_get_Tp_allocator()); + this->_M_impl._M_start = __new_start; + std::fill(__old_start, __pos, __x_copy); + } + } + __catch(...) + { + _M_destroy_nodes(__new_start._M_node, + this->_M_impl._M_start._M_node); + __throw_exception_again; + } + } + else + { + iterator __new_finish = _M_reserve_elements_at_back(__n); + iterator __old_finish = this->_M_impl._M_finish; + const difference_type __elems_after = + difference_type(__length) - __elems_before; + __pos = this->_M_impl._M_finish - __elems_after; + __try + { + if (__elems_after > difference_type(__n)) + { + iterator __finish_n = (this->_M_impl._M_finish + - difference_type(__n)); + std::__uninitialized_move_a(__finish_n, + this->_M_impl._M_finish, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish = __new_finish; + _GLIBCXX_MOVE_BACKWARD3(__pos, __finish_n, __old_finish); + std::fill(__pos, __pos + difference_type(__n), __x_copy); + } + else + { + std::__uninitialized_fill_move(this->_M_impl._M_finish, + __pos + difference_type(__n), + __x_copy, __pos, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish = __new_finish; + std::fill(__pos, __old_finish, __x_copy); + } + } + __catch(...) + { + _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, + __new_finish._M_node + 1); + __throw_exception_again; + } + } + } + + template + template + void + deque<_Tp, _Alloc>:: + _M_insert_aux(iterator __pos, + _ForwardIterator __first, _ForwardIterator __last, + size_type __n) + { + const difference_type __elemsbefore = __pos - this->_M_impl._M_start; + const size_type __length = size(); + if (static_cast(__elemsbefore) < __length / 2) + { + iterator __new_start = _M_reserve_elements_at_front(__n); + iterator __old_start = this->_M_impl._M_start; + __pos = this->_M_impl._M_start + __elemsbefore; + __try + { + if (__elemsbefore >= difference_type(__n)) + { + iterator __start_n = (this->_M_impl._M_start + + difference_type(__n)); + std::__uninitialized_move_a(this->_M_impl._M_start, + __start_n, __new_start, + _M_get_Tp_allocator()); + this->_M_impl._M_start = __new_start; + _GLIBCXX_MOVE3(__start_n, __pos, __old_start); + std::copy(__first, __last, __pos - difference_type(__n)); + } + else + { + _ForwardIterator __mid = __first; + std::advance(__mid, difference_type(__n) - __elemsbefore); + std::__uninitialized_move_copy(this->_M_impl._M_start, + __pos, __first, __mid, + __new_start, + _M_get_Tp_allocator()); + this->_M_impl._M_start = __new_start; + std::copy(__mid, __last, __old_start); + } + } + __catch(...) + { + _M_destroy_nodes(__new_start._M_node, + this->_M_impl._M_start._M_node); + __throw_exception_again; + } + } + else + { + iterator __new_finish = _M_reserve_elements_at_back(__n); + iterator __old_finish = this->_M_impl._M_finish; + const difference_type __elemsafter = + difference_type(__length) - __elemsbefore; + __pos = this->_M_impl._M_finish - __elemsafter; + __try + { + if (__elemsafter > difference_type(__n)) + { + iterator __finish_n = (this->_M_impl._M_finish + - difference_type(__n)); + std::__uninitialized_move_a(__finish_n, + this->_M_impl._M_finish, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish = __new_finish; + _GLIBCXX_MOVE_BACKWARD3(__pos, __finish_n, __old_finish); + std::copy(__first, __last, __pos); + } + else + { + _ForwardIterator __mid = __first; + std::advance(__mid, __elemsafter); + std::__uninitialized_copy_move(__mid, __last, __pos, + this->_M_impl._M_finish, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish = __new_finish; + std::copy(__first, __mid, __pos); + } + } + __catch(...) + { + _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, + __new_finish._M_node + 1); + __throw_exception_again; + } + } + } + + template + void + deque<_Tp, _Alloc>:: + _M_destroy_data_aux(iterator __first, iterator __last) + { + for (_Map_pointer __node = __first._M_node + 1; + __node < __last._M_node; ++__node) + std::_Destroy(*__node, *__node + _S_buffer_size(), + _M_get_Tp_allocator()); + + if (__first._M_node != __last._M_node) + { + std::_Destroy(__first._M_cur, __first._M_last, + _M_get_Tp_allocator()); + std::_Destroy(__last._M_first, __last._M_cur, + _M_get_Tp_allocator()); + } + else + std::_Destroy(__first._M_cur, __last._M_cur, + _M_get_Tp_allocator()); + } + + template + void + deque<_Tp, _Alloc>:: + _M_new_elements_at_front(size_type __new_elems) + { + if (this->max_size() - this->size() < __new_elems) + __throw_length_error(__N("deque::_M_new_elements_at_front")); + + const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) + / _S_buffer_size()); + _M_reserve_map_at_front(__new_nodes); + size_type __i; + __try + { + for (__i = 1; __i <= __new_nodes; ++__i) + *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node(); + } + __catch(...) + { + for (size_type __j = 1; __j < __i; ++__j) + _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j)); + __throw_exception_again; + } + } + + template + void + deque<_Tp, _Alloc>:: + _M_new_elements_at_back(size_type __new_elems) + { + if (this->max_size() - this->size() < __new_elems) + __throw_length_error(__N("deque::_M_new_elements_at_back")); + + const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) + / _S_buffer_size()); + _M_reserve_map_at_back(__new_nodes); + size_type __i; + __try + { + for (__i = 1; __i <= __new_nodes; ++__i) + *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node(); + } + __catch(...) + { + for (size_type __j = 1; __j < __i; ++__j) + _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j)); + __throw_exception_again; + } + } + + template + void + deque<_Tp, _Alloc>:: + _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front) + { + const size_type __old_num_nodes + = this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1; + const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add; + + _Map_pointer __new_nstart; + if (this->_M_impl._M_map_size > 2 * __new_num_nodes) + { + __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size + - __new_num_nodes) / 2 + + (__add_at_front ? __nodes_to_add : 0); + if (__new_nstart < this->_M_impl._M_start._M_node) + std::copy(this->_M_impl._M_start._M_node, + this->_M_impl._M_finish._M_node + 1, + __new_nstart); + else + std::copy_backward(this->_M_impl._M_start._M_node, + this->_M_impl._M_finish._M_node + 1, + __new_nstart + __old_num_nodes); + } + else + { + size_type __new_map_size = this->_M_impl._M_map_size + + std::max(this->_M_impl._M_map_size, + __nodes_to_add) + 2; + + _Map_pointer __new_map = this->_M_allocate_map(__new_map_size); + __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2 + + (__add_at_front ? __nodes_to_add : 0); + std::copy(this->_M_impl._M_start._M_node, + this->_M_impl._M_finish._M_node + 1, + __new_nstart); + _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); + + this->_M_impl._M_map = __new_map; + this->_M_impl._M_map_size = __new_map_size; + } + + this->_M_impl._M_start._M_set_node(__new_nstart); + this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1); + } + + // Overload for deque::iterators, exploiting the "segmented-iterator + // optimization". + template + void + fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>& __first, + const _Deque_iterator<_Tp, _Tp&, _Tp*>& __last, const _Tp& __value) + { + typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; + + for (typename _Self::_Map_pointer __node = __first._M_node + 1; + __node < __last._M_node; ++__node) + std::fill(*__node, *__node + _Self::_S_buffer_size(), __value); + + if (__first._M_node != __last._M_node) + { + std::fill(__first._M_cur, __first._M_last, __value); + std::fill(__last._M_first, __last._M_cur, __value); + } + else + std::fill(__first._M_cur, __last._M_cur, __value); + } + + template + _Deque_iterator<_Tp, _Tp&, _Tp*> + copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, + _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, + _Deque_iterator<_Tp, _Tp&, _Tp*> __result) + { + typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; + typedef typename _Self::difference_type difference_type; + + difference_type __len = __last - __first; + while (__len > 0) + { + const difference_type __clen + = std::min(__len, std::min(__first._M_last - __first._M_cur, + __result._M_last - __result._M_cur)); + std::copy(__first._M_cur, __first._M_cur + __clen, __result._M_cur); + __first += __clen; + __result += __clen; + __len -= __clen; + } + return __result; + } + + template + _Deque_iterator<_Tp, _Tp&, _Tp*> + copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, + _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, + _Deque_iterator<_Tp, _Tp&, _Tp*> __result) + { + typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; + typedef typename _Self::difference_type difference_type; + + difference_type __len = __last - __first; + while (__len > 0) + { + difference_type __llen = __last._M_cur - __last._M_first; + _Tp* __lend = __last._M_cur; + + difference_type __rlen = __result._M_cur - __result._M_first; + _Tp* __rend = __result._M_cur; + + if (!__llen) + { + __llen = _Self::_S_buffer_size(); + __lend = *(__last._M_node - 1) + __llen; + } + if (!__rlen) + { + __rlen = _Self::_S_buffer_size(); + __rend = *(__result._M_node - 1) + __rlen; + } + + const difference_type __clen = std::min(__len, + std::min(__llen, __rlen)); + std::copy_backward(__lend - __clen, __lend, __rend); + __last -= __clen; + __result -= __clen; + __len -= __clen; + } + return __result; + } + +#if __cplusplus >= 201103L + template + _Deque_iterator<_Tp, _Tp&, _Tp*> + move(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, + _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, + _Deque_iterator<_Tp, _Tp&, _Tp*> __result) + { + typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; + typedef typename _Self::difference_type difference_type; + + difference_type __len = __last - __first; + while (__len > 0) + { + const difference_type __clen + = std::min(__len, std::min(__first._M_last - __first._M_cur, + __result._M_last - __result._M_cur)); + std::move(__first._M_cur, __first._M_cur + __clen, __result._M_cur); + __first += __clen; + __result += __clen; + __len -= __clen; + } + return __result; + } + + template + _Deque_iterator<_Tp, _Tp&, _Tp*> + move_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, + _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, + _Deque_iterator<_Tp, _Tp&, _Tp*> __result) + { + typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; + typedef typename _Self::difference_type difference_type; + + difference_type __len = __last - __first; + while (__len > 0) + { + difference_type __llen = __last._M_cur - __last._M_first; + _Tp* __lend = __last._M_cur; + + difference_type __rlen = __result._M_cur - __result._M_first; + _Tp* __rend = __result._M_cur; + + if (!__llen) + { + __llen = _Self::_S_buffer_size(); + __lend = *(__last._M_node - 1) + __llen; + } + if (!__rlen) + { + __rlen = _Self::_S_buffer_size(); + __rend = *(__result._M_node - 1) + __rlen; + } + + const difference_type __clen = std::min(__len, + std::min(__llen, __rlen)); + std::move_backward(__lend - __clen, __lend, __rend); + __last -= __clen; + __result -= __clen; + __len -= __clen; + } + return __result; + } +#endif + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/exception_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/exception_defines.h new file mode 100644 index 0000000..802a2d7 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/exception_defines.h @@ -0,0 +1,45 @@ +// -fno-exceptions Support -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/exception_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{exception} + */ + +#ifndef _EXCEPTION_DEFINES_H +#define _EXCEPTION_DEFINES_H 1 + +#ifndef __EXCEPTIONS +// Iff -fno-exceptions, transform error handling code to work without it. +# define __try if (true) +# define __catch(X) if (false) +# define __throw_exception_again +#else +// Else proceed normally. +# define __try try +# define __catch(X) catch(X) +# define __throw_exception_again throw +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/exception_ptr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/exception_ptr.h new file mode 100644 index 0000000..bbf8f85 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/exception_ptr.h @@ -0,0 +1,198 @@ +// Exception Handling support header (exception_ptr class) for -*- C++ -*- + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of GCC. +// +// GCC is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// GCC is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/exception_ptr.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{exception} + */ + +#ifndef _EXCEPTION_PTR_H +#define _EXCEPTION_PTR_H + +#pragma GCC visibility push(default) + +#include +#include + +#if ATOMIC_INT_LOCK_FREE < 2 +# error This platform does not support exception propagation. +#endif + +extern "C++" { + +namespace std +{ + class type_info; + + /** + * @addtogroup exceptions + * @{ + */ + namespace __exception_ptr + { + class exception_ptr; + } + + using __exception_ptr::exception_ptr; + + /** Obtain an exception_ptr to the currently handled exception. If there + * is none, or the currently handled exception is foreign, return the null + * value. + */ + exception_ptr current_exception() _GLIBCXX_USE_NOEXCEPT; + + /// Throw the object pointed to by the exception_ptr. + void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); + + namespace __exception_ptr + { + /** + * @brief An opaque pointer to an arbitrary exception. + * @ingroup exceptions + */ + class exception_ptr + { + void* _M_exception_object; + + explicit exception_ptr(void* __e) _GLIBCXX_USE_NOEXCEPT; + + void _M_addref() _GLIBCXX_USE_NOEXCEPT; + void _M_release() _GLIBCXX_USE_NOEXCEPT; + + void *_M_get() const _GLIBCXX_NOEXCEPT __attribute__ ((__pure__)); + + friend exception_ptr std::current_exception() _GLIBCXX_USE_NOEXCEPT; + friend void std::rethrow_exception(exception_ptr); + + public: + exception_ptr() _GLIBCXX_USE_NOEXCEPT; + + exception_ptr(const exception_ptr&) _GLIBCXX_USE_NOEXCEPT; + +#if __cplusplus >= 201103L + exception_ptr(nullptr_t) noexcept + : _M_exception_object(0) + { } + + exception_ptr(exception_ptr&& __o) noexcept + : _M_exception_object(__o._M_exception_object) + { __o._M_exception_object = 0; } +#endif + +#if (__cplusplus < 201103L) || defined (_GLIBCXX_EH_PTR_COMPAT) + typedef void (exception_ptr::*__safe_bool)(); + + // For construction from nullptr or 0. + exception_ptr(__safe_bool) _GLIBCXX_USE_NOEXCEPT; +#endif + + exception_ptr& + operator=(const exception_ptr&) _GLIBCXX_USE_NOEXCEPT; + +#if __cplusplus >= 201103L + exception_ptr& + operator=(exception_ptr&& __o) noexcept + { + exception_ptr(static_cast(__o)).swap(*this); + return *this; + } +#endif + + ~exception_ptr() _GLIBCXX_USE_NOEXCEPT; + + void + swap(exception_ptr&) _GLIBCXX_USE_NOEXCEPT; + +#ifdef _GLIBCXX_EH_PTR_COMPAT + // Retained for compatibility with CXXABI_1.3. + void _M_safe_bool_dummy() _GLIBCXX_USE_NOEXCEPT + __attribute__ ((__const__)); + bool operator!() const _GLIBCXX_USE_NOEXCEPT + __attribute__ ((__pure__)); + operator __safe_bool() const _GLIBCXX_USE_NOEXCEPT; +#endif + +#if __cplusplus >= 201103L + explicit operator bool() const + { return _M_exception_object; } +#endif + + friend bool + operator==(const exception_ptr&, const exception_ptr&) + _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); + + const class std::type_info* + __cxa_exception_type() const _GLIBCXX_USE_NOEXCEPT + __attribute__ ((__pure__)); + }; + + bool + operator==(const exception_ptr&, const exception_ptr&) + _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); + + bool + operator!=(const exception_ptr&, const exception_ptr&) + _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); + + inline void + swap(exception_ptr& __lhs, exception_ptr& __rhs) + { __lhs.swap(__rhs); } + + } // namespace __exception_ptr + + + /// Obtain an exception_ptr pointing to a copy of the supplied object. + template + exception_ptr + copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT + { + __try + { +#ifdef __EXCEPTIONS + throw __ex; +#endif + } + __catch(...) + { + return current_exception(); + } + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 1130. copy_exception name misleading + /// Obtain an exception_ptr pointing to a copy of the supplied object. + template + exception_ptr + make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT + { return std::copy_exception<_Ex>(__ex); } + + // @} group exceptions +} // namespace std + +} // extern "C++" + +#pragma GCC visibility pop + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/forward_list.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/forward_list.h new file mode 100644 index 0000000..608d678 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/forward_list.h @@ -0,0 +1,1402 @@ +// -*- C++ -*- + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/forward_list.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{forward_list} + */ + +#ifndef _FORWARD_LIST_H +#define _FORWARD_LIST_H 1 + +#pragma GCC system_header + +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * @brief A helper basic node class for %forward_list. + * This is just a linked list with nothing inside it. + * There are purely list shuffling utility methods here. + */ + struct _Fwd_list_node_base + { + _Fwd_list_node_base() = default; + + _Fwd_list_node_base* _M_next = nullptr; + + _Fwd_list_node_base* + _M_transfer_after(_Fwd_list_node_base* __begin, + _Fwd_list_node_base* __end) + { + _Fwd_list_node_base* __keep = __begin->_M_next; + if (__end) + { + __begin->_M_next = __end->_M_next; + __end->_M_next = _M_next; + } + else + __begin->_M_next = 0; + _M_next = __keep; + return __end; + } + + void + _M_reverse_after() noexcept + { + _Fwd_list_node_base* __tail = _M_next; + if (!__tail) + return; + while (_Fwd_list_node_base* __temp = __tail->_M_next) + { + _Fwd_list_node_base* __keep = _M_next; + _M_next = __temp; + __tail->_M_next = __temp->_M_next; + _M_next->_M_next = __keep; + } + } + }; + + /** + * @brief A helper node class for %forward_list. + * This is just a linked list with uninitialized storage for a + * data value in each node. + * There is a sorting utility method. + */ + template + struct _Fwd_list_node + : public _Fwd_list_node_base + { + _Fwd_list_node() = default; + + typename aligned_storage::value>::type + _M_storage; + + _Tp* + _M_valptr() noexcept + { + return static_cast<_Tp*>(static_cast(&_M_storage)); + } + + const _Tp* + _M_valptr() const noexcept + { + return static_cast(static_cast(&_M_storage)); + } + }; + + /** + * @brief A forward_list::iterator. + * + * All the functions are op overloads. + */ + template + struct _Fwd_list_iterator + { + typedef _Fwd_list_iterator<_Tp> _Self; + typedef _Fwd_list_node<_Tp> _Node; + + typedef _Tp value_type; + typedef _Tp* pointer; + typedef _Tp& reference; + typedef ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Fwd_list_iterator() + : _M_node() { } + + explicit + _Fwd_list_iterator(_Fwd_list_node_base* __n) + : _M_node(__n) { } + + reference + operator*() const + { return *static_cast<_Node*>(this->_M_node)->_M_valptr(); } + + pointer + operator->() const + { return static_cast<_Node*>(this->_M_node)->_M_valptr(); } + + _Self& + operator++() + { + _M_node = _M_node->_M_next; + return *this; + } + + _Self + operator++(int) + { + _Self __tmp(*this); + _M_node = _M_node->_M_next; + 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; } + + _Self + _M_next() const + { + if (_M_node) + return _Fwd_list_iterator(_M_node->_M_next); + else + return _Fwd_list_iterator(0); + } + + _Fwd_list_node_base* _M_node; + }; + + /** + * @brief A forward_list::const_iterator. + * + * All the functions are op overloads. + */ + template + struct _Fwd_list_const_iterator + { + typedef _Fwd_list_const_iterator<_Tp> _Self; + typedef const _Fwd_list_node<_Tp> _Node; + typedef _Fwd_list_iterator<_Tp> iterator; + + typedef _Tp value_type; + typedef const _Tp* pointer; + typedef const _Tp& reference; + typedef ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Fwd_list_const_iterator() + : _M_node() { } + + explicit + _Fwd_list_const_iterator(const _Fwd_list_node_base* __n) + : _M_node(__n) { } + + _Fwd_list_const_iterator(const iterator& __iter) + : _M_node(__iter._M_node) { } + + reference + operator*() const + { return *static_cast<_Node*>(this->_M_node)->_M_valptr(); } + + pointer + operator->() const + { return static_cast<_Node*>(this->_M_node)->_M_valptr(); } + + _Self& + operator++() + { + _M_node = _M_node->_M_next; + return *this; + } + + _Self + operator++(int) + { + _Self __tmp(*this); + _M_node = _M_node->_M_next; + 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; } + + _Self + _M_next() const + { + if (this->_M_node) + return _Fwd_list_const_iterator(_M_node->_M_next); + else + return _Fwd_list_const_iterator(0); + } + + const _Fwd_list_node_base* _M_node; + }; + + /** + * @brief Forward list iterator equality comparison. + */ + template + inline bool + operator==(const _Fwd_list_iterator<_Tp>& __x, + const _Fwd_list_const_iterator<_Tp>& __y) + { return __x._M_node == __y._M_node; } + + /** + * @brief Forward list iterator inequality comparison. + */ + template + inline bool + operator!=(const _Fwd_list_iterator<_Tp>& __x, + const _Fwd_list_const_iterator<_Tp>& __y) + { return __x._M_node != __y._M_node; } + + /** + * @brief Base class for %forward_list. + */ + template + struct _Fwd_list_base + { + protected: + typedef typename __gnu_cxx::__alloc_traits<_Alloc> _Alloc_traits; + typedef typename _Alloc_traits::template rebind<_Tp>::other + _Tp_alloc_type; + + typedef typename _Alloc_traits::template + rebind<_Fwd_list_node<_Tp>>::other _Node_alloc_type; + + typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits; + + struct _Fwd_list_impl + : public _Node_alloc_type + { + _Fwd_list_node_base _M_head; + + _Fwd_list_impl() + : _Node_alloc_type(), _M_head() + { } + + _Fwd_list_impl(const _Node_alloc_type& __a) + : _Node_alloc_type(__a), _M_head() + { } + + _Fwd_list_impl(_Node_alloc_type&& __a) + : _Node_alloc_type(std::move(__a)), _M_head() + { } + }; + + _Fwd_list_impl _M_impl; + + public: + typedef _Fwd_list_iterator<_Tp> iterator; + typedef _Fwd_list_const_iterator<_Tp> const_iterator; + typedef _Fwd_list_node<_Tp> _Node; + + _Node_alloc_type& + _M_get_Node_allocator() noexcept + { return *static_cast<_Node_alloc_type*>(&this->_M_impl); } + + const _Node_alloc_type& + _M_get_Node_allocator() const noexcept + { return *static_cast(&this->_M_impl); } + + _Fwd_list_base() + : _M_impl() { } + + _Fwd_list_base(const _Node_alloc_type& __a) + : _M_impl(__a) { } + + _Fwd_list_base(_Fwd_list_base&& __lst, const _Node_alloc_type& __a); + + _Fwd_list_base(_Fwd_list_base&& __lst) + : _M_impl(std::move(__lst._M_get_Node_allocator())) + { + this->_M_impl._M_head._M_next = __lst._M_impl._M_head._M_next; + __lst._M_impl._M_head._M_next = 0; + } + + ~_Fwd_list_base() + { _M_erase_after(&_M_impl._M_head, 0); } + + protected: + + _Node* + _M_get_node() + { return _Node_alloc_traits::allocate(_M_get_Node_allocator(), 1); } + + template + _Node* + _M_create_node(_Args&&... __args) + { + _Node* __node = this->_M_get_node(); + __try + { + _Tp_alloc_type __a(_M_get_Node_allocator()); + typedef allocator_traits<_Tp_alloc_type> _Alloc_traits; + ::new ((void*)__node) _Node(); + _Alloc_traits::construct(__a, __node->_M_valptr(), + std::forward<_Args>(__args)...); + } + __catch(...) + { + this->_M_put_node(__node); + __throw_exception_again; + } + return __node; + } + + template + _Fwd_list_node_base* + _M_insert_after(const_iterator __pos, _Args&&... __args); + + void + _M_put_node(_Node* __p) + { _Node_alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); } + + _Fwd_list_node_base* + _M_erase_after(_Fwd_list_node_base* __pos); + + _Fwd_list_node_base* + _M_erase_after(_Fwd_list_node_base* __pos, + _Fwd_list_node_base* __last); + }; + + /** + * @brief A standard container with linear time access to elements, + * and fixed time insertion/deletion at any point in the sequence. + * + * @ingroup sequences + * + * @tparam _Tp Type of element. + * @tparam _Alloc Allocator type, defaults to allocator<_Tp>. + * + * Meets the requirements of a container, a + * sequence, including the + * optional sequence requirements with the + * %exception of @c at and @c operator[]. + * + * This is a @e singly @e linked %list. Traversal up the + * %list requires linear time, but adding and removing elements (or + * @e nodes) is done in constant time, regardless of where the + * change takes place. Unlike std::vector and std::deque, + * random-access iterators are not provided, so subscripting ( @c + * [] ) access is not allowed. For algorithms which only need + * sequential access, this lack makes no difference. + * + * Also unlike the other standard containers, std::forward_list provides + * specialized algorithms %unique to linked lists, such as + * splicing, sorting, and in-place reversal. + */ + template > + class forward_list : private _Fwd_list_base<_Tp, _Alloc> + { + private: + typedef _Fwd_list_base<_Tp, _Alloc> _Base; + typedef _Fwd_list_node<_Tp> _Node; + typedef _Fwd_list_node_base _Node_base; + typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; + typedef typename _Base::_Node_alloc_type _Node_alloc_type; + typedef typename _Base::_Node_alloc_traits _Node_alloc_traits; + typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; + + public: + // types: + typedef _Tp value_type; + typedef typename _Alloc_traits::pointer pointer; + typedef typename _Alloc_traits::const_pointer const_pointer; + typedef typename _Alloc_traits::reference reference; + typedef typename _Alloc_traits::const_reference const_reference; + + typedef _Fwd_list_iterator<_Tp> iterator; + typedef _Fwd_list_const_iterator<_Tp> const_iterator; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef _Alloc allocator_type; + + // 23.3.4.2 construct/copy/destroy: + + /** + * @brief Creates a %forward_list with no elements. + * @param __al An allocator object. + */ + explicit + forward_list(const _Alloc& __al = _Alloc()) + : _Base(_Node_alloc_type(__al)) + { } + + /** + * @brief Copy constructor with allocator argument. + * @param __list Input list to copy. + * @param __al An allocator object. + */ + forward_list(const forward_list& __list, const _Alloc& __al) + : _Base(_Node_alloc_type(__al)) + { _M_range_initialize(__list.begin(), __list.end()); } + + /** + * @brief Move constructor with allocator argument. + * @param __list Input list to move. + * @param __al An allocator object. + */ + forward_list(forward_list&& __list, const _Alloc& __al) + noexcept(_Node_alloc_traits::_S_always_equal()) + : _Base(std::move(__list), _Node_alloc_type(__al)) + { } + + /** + * @brief Creates a %forward_list with default constructed elements. + * @param __n The number of elements to initially create. + * + * This constructor creates the %forward_list with @a __n default + * constructed elements. + */ + explicit + forward_list(size_type __n, const _Alloc& __al = _Alloc()) + : _Base(_Node_alloc_type(__al)) + { _M_default_initialize(__n); } + + /** + * @brief Creates a %forward_list with copies of an exemplar element. + * @param __n The number of elements to initially create. + * @param __value An element to copy. + * @param __al An allocator object. + * + * This constructor fills the %forward_list with @a __n copies of + * @a __value. + */ + forward_list(size_type __n, const _Tp& __value, + const _Alloc& __al = _Alloc()) + : _Base(_Node_alloc_type(__al)) + { _M_fill_initialize(__n, __value); } + + /** + * @brief Builds a %forward_list from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __al An allocator object. + * + * Create a %forward_list consisting of copies of the elements from + * [@a __first,@a __last). This is linear in N (where N is + * distance(@a __first,@a __last)). + */ + template> + forward_list(_InputIterator __first, _InputIterator __last, + const _Alloc& __al = _Alloc()) + : _Base(_Node_alloc_type(__al)) + { _M_range_initialize(__first, __last); } + + /** + * @brief The %forward_list copy constructor. + * @param __list A %forward_list of identical element and allocator + * types. + */ + forward_list(const forward_list& __list) + : _Base(_Node_alloc_traits::_S_select_on_copy( + __list._M_get_Node_allocator())) + { _M_range_initialize(__list.begin(), __list.end()); } + + /** + * @brief The %forward_list move constructor. + * @param __list A %forward_list of identical element and allocator + * types. + * + * The newly-created %forward_list contains the exact contents of @a + * __list. The contents of @a __list are a valid, but unspecified + * %forward_list. + */ + forward_list(forward_list&& __list) noexcept + : _Base(std::move(__list)) { } + + /** + * @brief Builds a %forward_list from an initializer_list + * @param __il An initializer_list of value_type. + * @param __al An allocator object. + * + * Create a %forward_list consisting of copies of the elements + * in the initializer_list @a __il. This is linear in __il.size(). + */ + forward_list(std::initializer_list<_Tp> __il, + const _Alloc& __al = _Alloc()) + : _Base(_Node_alloc_type(__al)) + { _M_range_initialize(__il.begin(), __il.end()); } + + /** + * @brief The forward_list dtor. + */ + ~forward_list() noexcept + { } + + /** + * @brief The %forward_list assignment operator. + * @param __list A %forward_list of identical element and allocator + * types. + * + * All the elements of @a __list are copied, but unlike the copy + * constructor, the allocator object is not copied. + */ + forward_list& + operator=(const forward_list& __list); + + /** + * @brief The %forward_list move assignment operator. + * @param __list A %forward_list of identical element and allocator + * types. + * + * The contents of @a __list are moved into this %forward_list + * (without copying, if the allocators permit it). + * @a __list is a valid, but unspecified %forward_list + */ + forward_list& + operator=(forward_list&& __list) + noexcept(_Node_alloc_traits::_S_nothrow_move()) + { + constexpr bool __move_storage = + _Node_alloc_traits::_S_propagate_on_move_assign() + || _Node_alloc_traits::_S_always_equal(); + _M_move_assign(std::move(__list), + integral_constant()); + return *this; + } + + /** + * @brief The %forward_list initializer list assignment operator. + * @param __il An initializer_list of value_type. + * + * Replace the contents of the %forward_list with copies of the + * elements in the initializer_list @a __il. This is linear in + * __il.size(). + */ + forward_list& + operator=(std::initializer_list<_Tp> __il) + { + assign(__il); + return *this; + } + + /** + * @brief Assigns a range to a %forward_list. + * @param __first An input iterator. + * @param __last An input iterator. + * + * This function fills a %forward_list with copies of the elements + * in the range [@a __first,@a __last). + * + * Note that the assignment completely changes the %forward_list and + * that the number of elements of the resulting %forward_list is the + * same as the number of elements assigned. Old data is lost. + */ + template> + void + assign(_InputIterator __first, _InputIterator __last) + { + typedef is_assignable<_Tp, decltype(*__first)> __assignable; + _M_assign(__first, __last, __assignable()); + } + + /** + * @brief Assigns a given value to a %forward_list. + * @param __n Number of elements to be assigned. + * @param __val Value to be assigned. + * + * This function fills a %forward_list with @a __n copies of the + * given value. Note that the assignment completely changes the + * %forward_list, and that the resulting %forward_list has __n + * elements. Old data is lost. + */ + void + assign(size_type __n, const _Tp& __val) + { _M_assign_n(__n, __val, is_copy_assignable<_Tp>()); } + + /** + * @brief Assigns an initializer_list to a %forward_list. + * @param __il An initializer_list of value_type. + * + * Replace the contents of the %forward_list with copies of the + * elements in the initializer_list @a __il. This is linear in + * il.size(). + */ + void + assign(std::initializer_list<_Tp> __il) + { assign(__il.begin(), __il.end()); } + + /// Get a copy of the memory allocation object. + allocator_type + get_allocator() const noexcept + { return allocator_type(this->_M_get_Node_allocator()); } + + // 23.3.4.3 iterators: + + /** + * Returns a read/write iterator that points before the first element + * in the %forward_list. Iteration is done in ordinary element order. + */ + iterator + before_begin() noexcept + { return iterator(&this->_M_impl._M_head); } + + /** + * Returns a read-only (constant) iterator that points before the + * first element in the %forward_list. Iteration is done in ordinary + * element order. + */ + const_iterator + before_begin() const noexcept + { return const_iterator(&this->_M_impl._M_head); } + + /** + * Returns a read/write iterator that points to the first element + * in the %forward_list. Iteration is done in ordinary element order. + */ + iterator + begin() noexcept + { return iterator(this->_M_impl._M_head._M_next); } + + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %forward_list. Iteration is done in ordinary + * element order. + */ + const_iterator + begin() const noexcept + { return const_iterator(this->_M_impl._M_head._M_next); } + + /** + * Returns a read/write iterator that points one past the last + * element in the %forward_list. Iteration is done in ordinary + * element order. + */ + iterator + end() noexcept + { return iterator(0); } + + /** + * Returns a read-only iterator that points one past the last + * element in the %forward_list. Iteration is done in ordinary + * element order. + */ + const_iterator + end() const noexcept + { return const_iterator(0); } + + /** + * Returns a read-only (constant) iterator that points to the + * first element in the %forward_list. Iteration is done in ordinary + * element order. + */ + const_iterator + cbegin() const noexcept + { return const_iterator(this->_M_impl._M_head._M_next); } + + /** + * Returns a read-only (constant) iterator that points before the + * first element in the %forward_list. Iteration is done in ordinary + * element order. + */ + const_iterator + cbefore_begin() const noexcept + { return const_iterator(&this->_M_impl._M_head); } + + /** + * Returns a read-only (constant) iterator that points one past + * the last element in the %forward_list. Iteration is done in + * ordinary element order. + */ + const_iterator + cend() const noexcept + { return const_iterator(0); } + + /** + * Returns true if the %forward_list is empty. (Thus begin() would + * equal end().) + */ + bool + empty() const noexcept + { return this->_M_impl._M_head._M_next == 0; } + + /** + * Returns the largest possible number of elements of %forward_list. + */ + size_type + max_size() const noexcept + { return _Node_alloc_traits::max_size(this->_M_get_Node_allocator()); } + + // 23.3.4.4 element access: + + /** + * Returns a read/write reference to the data at the first + * element of the %forward_list. + */ + reference + front() + { + _Node* __front = static_cast<_Node*>(this->_M_impl._M_head._M_next); + return *__front->_M_valptr(); + } + + /** + * Returns a read-only (constant) reference to the data at the first + * element of the %forward_list. + */ + const_reference + front() const + { + _Node* __front = static_cast<_Node*>(this->_M_impl._M_head._M_next); + return *__front->_M_valptr(); + } + + // 23.3.4.5 modiï¬ers: + + /** + * @brief Constructs object in %forward_list at the front of the + * list. + * @param __args Arguments. + * + * This function will insert an object of type Tp constructed + * with Tp(std::forward(args)...) at the front of the list + * Due to the nature of a %forward_list this operation can + * be done in constant time, and does not invalidate iterators + * and references. + */ + template + void + emplace_front(_Args&&... __args) + { this->_M_insert_after(cbefore_begin(), + std::forward<_Args>(__args)...); } + + /** + * @brief Add data to the front of the %forward_list. + * @param __val Data to be added. + * + * This is a typical stack operation. The function creates an + * element at the front of the %forward_list and assigns the given + * data to it. Due to the nature of a %forward_list this operation + * can be done in constant time, and does not invalidate iterators + * and references. + */ + void + push_front(const _Tp& __val) + { this->_M_insert_after(cbefore_begin(), __val); } + + /** + * + */ + void + push_front(_Tp&& __val) + { this->_M_insert_after(cbefore_begin(), std::move(__val)); } + + /** + * @brief Removes first element. + * + * This is a typical stack operation. It shrinks the %forward_list + * by one. Due to the nature of a %forward_list this operation can + * be done in constant time, and only invalidates iterators/references + * to the element being removed. + * + * Note that no data is returned, and if the first element's data + * is needed, it should be retrieved before pop_front() is + * called. + */ + void + pop_front() + { this->_M_erase_after(&this->_M_impl._M_head); } + + /** + * @brief Constructs object in %forward_list after the specified + * iterator. + * @param __pos A const_iterator into the %forward_list. + * @param __args Arguments. + * @return An iterator that points to the inserted data. + * + * This function will insert an object of type T constructed + * with T(std::forward(args)...) after the specified + * location. Due to the nature of a %forward_list this operation can + * be done in constant time, and does not invalidate iterators + * and references. + */ + template + iterator + emplace_after(const_iterator __pos, _Args&&... __args) + { return iterator(this->_M_insert_after(__pos, + std::forward<_Args>(__args)...)); } + + /** + * @brief Inserts given value into %forward_list after specified + * iterator. + * @param __pos An iterator into the %forward_list. + * @param __val Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given value after + * the specified location. Due to the nature of a %forward_list this + * operation can be done in constant time, and does not + * invalidate iterators and references. + */ + iterator + insert_after(const_iterator __pos, const _Tp& __val) + { return iterator(this->_M_insert_after(__pos, __val)); } + + /** + * + */ + iterator + insert_after(const_iterator __pos, _Tp&& __val) + { return iterator(this->_M_insert_after(__pos, std::move(__val))); } + + /** + * @brief Inserts a number of copies of given data into the + * %forward_list. + * @param __pos An iterator into the %forward_list. + * @param __n Number of elements to be inserted. + * @param __val Data to be inserted. + * @return An iterator pointing to the last inserted copy of + * @a val or @a pos if @a n == 0. + * + * This function will insert a specified number of copies of the + * given data after the location specified by @a pos. + * + * This operation is linear in the number of elements inserted and + * does not invalidate iterators and references. + */ + iterator + insert_after(const_iterator __pos, size_type __n, const _Tp& __val); + + /** + * @brief Inserts a range into the %forward_list. + * @param __pos An iterator into the %forward_list. + * @param __first An input iterator. + * @param __last An input iterator. + * @return An iterator pointing to the last inserted element or + * @a __pos if @a __first == @a __last. + * + * This function will insert copies of the data in the range + * [@a __first,@a __last) into the %forward_list after the + * location specified by @a __pos. + * + * This operation is linear in the number of elements inserted and + * does not invalidate iterators and references. + */ + template> + iterator + insert_after(const_iterator __pos, + _InputIterator __first, _InputIterator __last); + + /** + * @brief Inserts the contents of an initializer_list into + * %forward_list after the specified iterator. + * @param __pos An iterator into the %forward_list. + * @param __il An initializer_list of value_type. + * @return An iterator pointing to the last inserted element + * or @a __pos if @a __il is empty. + * + * This function will insert copies of the data in the + * initializer_list @a __il into the %forward_list before the location + * specified by @a __pos. + * + * This operation is linear in the number of elements inserted and + * does not invalidate iterators and references. + */ + iterator + insert_after(const_iterator __pos, std::initializer_list<_Tp> __il) + { return insert_after(__pos, __il.begin(), __il.end()); } + + /** + * @brief Removes the element pointed to by the iterator following + * @c pos. + * @param __pos Iterator pointing before element to be erased. + * @return An iterator pointing to the element following the one + * that was erased, or end() if no such element exists. + * + * This function will erase the element at the given position and + * thus shorten the %forward_list by one. + * + * Due to the nature of a %forward_list this operation can be done + * in constant time, and only invalidates iterators/references to + * the element being removed. The user is also cautioned that + * this function only erases the element, and that if the element + * is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + iterator + erase_after(const_iterator __pos) + { return iterator(this->_M_erase_after(const_cast<_Node_base*> + (__pos._M_node))); } + + /** + * @brief Remove a range of elements. + * @param __pos Iterator pointing before the first element to be + * erased. + * @param __last Iterator pointing to one past the last element to be + * erased. + * @return @ __last. + * + * This function will erase the elements in the range + * @a (__pos,__last) and shorten the %forward_list accordingly. + * + * This operation is linear time in the size of the range and only + * invalidates iterators/references to the element being removed. + * The user is also cautioned that this function only erases the + * elements, and that if the elements themselves are pointers, the + * pointed-to memory is not touched in any way. Managing the pointer + * is the user's responsibility. + */ + iterator + erase_after(const_iterator __pos, const_iterator __last) + { return iterator(this->_M_erase_after(const_cast<_Node_base*> + (__pos._M_node), + const_cast<_Node_base*> + (__last._M_node))); } + + /** + * @brief Swaps data with another %forward_list. + * @param __list A %forward_list of the same element and allocator + * types. + * + * This exchanges the elements between two lists in constant + * time. Note that the global std::swap() function is + * specialized such that std::swap(l1,l2) will feed to this + * function. + */ + void + swap(forward_list& __list) + noexcept(_Node_alloc_traits::_S_nothrow_swap()) + { + std::swap(this->_M_impl._M_head._M_next, + __list._M_impl._M_head._M_next); + _Node_alloc_traits::_S_on_swap(this->_M_get_Node_allocator(), + __list._M_get_Node_allocator()); + } + + /** + * @brief Resizes the %forward_list to the specified number of + * elements. + * @param __sz Number of elements the %forward_list should contain. + * + * This function will %resize the %forward_list to the specified + * number of elements. If the number is smaller than the + * %forward_list's current number of elements the %forward_list + * is truncated, otherwise the %forward_list is extended and the + * new elements are default constructed. + */ + void + resize(size_type __sz); + + /** + * @brief Resizes the %forward_list to the specified number of + * elements. + * @param __sz Number of elements the %forward_list should contain. + * @param __val Data with which new elements should be populated. + * + * This function will %resize the %forward_list to the specified + * number of elements. If the number is smaller than the + * %forward_list's current number of elements the %forward_list + * is truncated, otherwise the %forward_list is extended and new + * elements are populated with given data. + */ + void + resize(size_type __sz, const value_type& __val); + + /** + * @brief Erases all the elements. + * + * Note that this function only erases + * the elements, and that if the elements themselves are + * pointers, the pointed-to memory is not touched in any way. + * Managing the pointer is the user's responsibility. + */ + void + clear() noexcept + { this->_M_erase_after(&this->_M_impl._M_head, 0); } + + // 23.3.4.6 forward_list operations: + + /** + * @brief Insert contents of another %forward_list. + * @param __pos Iterator referencing the element to insert after. + * @param __list Source list. + * + * The elements of @a list are inserted in constant time after + * the element referenced by @a pos. @a list becomes an empty + * list. + * + * Requires this != @a x. + */ + void + splice_after(const_iterator __pos, forward_list&& __list) + { + if (!__list.empty()) + _M_splice_after(__pos, __list.before_begin(), __list.end()); + } + + void + splice_after(const_iterator __pos, forward_list& __list) + { splice_after(__pos, std::move(__list)); } + + /** + * @brief Insert element from another %forward_list. + * @param __pos Iterator referencing the element to insert after. + * @param __list Source list. + * @param __i Iterator referencing the element before the element + * to move. + * + * Removes the element in list @a list referenced by @a i and + * inserts it into the current list after @a pos. + */ + void + splice_after(const_iterator __pos, forward_list&& __list, + const_iterator __i); + + void + splice_after(const_iterator __pos, forward_list& __list, + const_iterator __i) + { splice_after(__pos, std::move(__list), __i); } + + /** + * @brief Insert range from another %forward_list. + * @param __pos Iterator referencing the element to insert after. + * @param __list Source list. + * @param __before Iterator referencing before the start of range + * in list. + * @param __last Iterator referencing the end of range in list. + * + * Removes elements in the range (__before,__last) and inserts them + * after @a __pos in constant time. + * + * Undefined if @a __pos is in (__before,__last). + */ + void + splice_after(const_iterator __pos, forward_list&&, + const_iterator __before, const_iterator __last) + { _M_splice_after(__pos, __before, __last); } + + void + splice_after(const_iterator __pos, forward_list&, + const_iterator __before, const_iterator __last) + { _M_splice_after(__pos, __before, __last); } + + /** + * @brief Remove all elements equal to value. + * @param __val The value to remove. + * + * Removes every element in the list equal to @a __val. + * Remaining elements stay in list order. Note that this + * function only erases the elements, and that if the elements + * themselves are pointers, the pointed-to memory is not + * touched in any way. Managing the pointer is the user's + * responsibility. + */ + void + remove(const _Tp& __val); + + /** + * @brief Remove all elements satisfying a predicate. + * @param __pred Unary predicate function or object. + * + * Removes every element in the list for which the predicate + * returns true. Remaining elements stay in list order. Note + * that this function only erases the elements, and that if the + * elements themselves are pointers, the pointed-to memory is + * not touched in any way. Managing the pointer is the user's + * responsibility. + */ + template + void + remove_if(_Pred __pred); + + /** + * @brief Remove consecutive duplicate elements. + * + * For each consecutive set of elements with the same value, + * remove all but the first one. Remaining elements stay in + * list order. Note that this function only erases the + * elements, and that if the elements themselves are pointers, + * the pointed-to memory is not touched in any way. Managing + * the pointer is the user's responsibility. + */ + void + unique() + { unique(std::equal_to<_Tp>()); } + + /** + * @brief Remove consecutive elements satisfying a predicate. + * @param __binary_pred Binary predicate function or object. + * + * For each consecutive set of elements [first,last) that + * satisfy predicate(first,i) where i is an iterator in + * [first,last), remove all but the first one. Remaining + * elements stay in list order. Note that this function only + * erases the elements, and that if the elements themselves are + * pointers, the pointed-to memory is not touched in any way. + * Managing the pointer is the user's responsibility. + */ + template + void + unique(_BinPred __binary_pred); + + /** + * @brief Merge sorted lists. + * @param __list Sorted list to merge. + * + * Assumes that both @a list and this list are sorted according to + * operator<(). Merges elements of @a __list into this list in + * sorted order, leaving @a __list empty when complete. Elements in + * this list precede elements in @a __list that are equal. + */ + void + merge(forward_list&& __list) + { merge(std::move(__list), std::less<_Tp>()); } + + void + merge(forward_list& __list) + { merge(std::move(__list)); } + + /** + * @brief Merge sorted lists according to comparison function. + * @param __list Sorted list to merge. + * @param __comp Comparison function defining sort order. + * + * Assumes that both @a __list and this list are sorted according to + * comp. Merges elements of @a __list into this list + * in sorted order, leaving @a __list empty when complete. Elements + * in this list precede elements in @a __list that are equivalent + * according to comp(). + */ + template + void + merge(forward_list&& __list, _Comp __comp); + + template + void + merge(forward_list& __list, _Comp __comp) + { merge(std::move(__list), __comp); } + + /** + * @brief Sort the elements of the list. + * + * Sorts the elements of this list in NlogN time. Equivalent + * elements remain in list order. + */ + void + sort() + { sort(std::less<_Tp>()); } + + /** + * @brief Sort the forward_list using a comparison function. + * + * Sorts the elements of this list in NlogN time. Equivalent + * elements remain in list order. + */ + template + void + sort(_Comp __comp); + + /** + * @brief Reverse the elements in list. + * + * Reverse the order of elements in the list in linear time. + */ + void + reverse() noexcept + { this->_M_impl._M_head._M_reverse_after(); } + + private: + // Called by the range constructor to implement [23.3.4.2]/9 + template + void + _M_range_initialize(_InputIterator __first, _InputIterator __last); + + // Called by forward_list(n,v,a), and the range constructor when it + // turns out to be the same thing. + void + _M_fill_initialize(size_type __n, const value_type& __value); + + // Called by splice_after and insert_after. + iterator + _M_splice_after(const_iterator __pos, const_iterator __before, + const_iterator __last); + + // Called by forward_list(n). + void + _M_default_initialize(size_type __n); + + // Called by resize(sz). + void + _M_default_insert_after(const_iterator __pos, size_type __n); + + // Called by operator=(forward_list&&) + void + _M_move_assign(forward_list&& __list, std::true_type) noexcept + { + clear(); + std::swap(this->_M_impl._M_head._M_next, + __list._M_impl._M_head._M_next); + std::__alloc_on_move(this->_M_get_Node_allocator(), + __list._M_get_Node_allocator()); + } + + // Called by operator=(forward_list&&) + void + _M_move_assign(forward_list&& __list, std::false_type) + { + if (__list._M_get_Node_allocator() == this->_M_get_Node_allocator()) + _M_move_assign(std::move(__list), std::true_type()); + else + // The rvalue's allocator cannot be moved, or is not equal, + // so we need to individually move each element. + this->assign(std::__make_move_if_noexcept_iterator(__list.begin()), + std::__make_move_if_noexcept_iterator(__list.end())); + } + + // Called by assign(_InputIterator, _InputIterator) if _Tp is + // CopyAssignable. + template + void + _M_assign(_InputIterator __first, _InputIterator __last, true_type) + { + auto __prev = before_begin(); + auto __curr = begin(); + auto __end = end(); + while (__curr != __end && __first != __last) + { + *__curr = *__first; + ++__prev; + ++__curr; + ++__first; + } + if (__first != __last) + insert_after(__prev, __first, __last); + else if (__curr != __end) + erase_after(__prev, __end); + } + + // Called by assign(_InputIterator, _InputIterator) if _Tp is not + // CopyAssignable. + template + void + _M_assign(_InputIterator __first, _InputIterator __last, false_type) + { + clear(); + insert_after(cbefore_begin(), __first, __last); + } + + // Called by assign(size_type, const _Tp&) if Tp is CopyAssignable + void + _M_assign_n(size_type __n, const _Tp& __val, true_type) + { + auto __prev = before_begin(); + auto __curr = begin(); + auto __end = end(); + while (__curr != __end && __n > 0) + { + *__curr = __val; + ++__prev; + ++__curr; + --__n; + } + if (__n > 0) + insert_after(__prev, __n, __val); + else if (__curr != __end) + erase_after(__prev, __end); + } + + // Called by assign(size_type, const _Tp&) if Tp is non-CopyAssignable + void + _M_assign_n(size_type __n, const _Tp& __val, false_type) + { + clear(); + insert_after(cbefore_begin(), __n, __val); + } + }; + + /** + * @brief Forward list equality comparison. + * @param __lx A %forward_list + * @param __ly A %forward_list of the same type as @a __lx. + * @return True iff the elements of the forward lists are equal. + * + * This is an equivalence relation. It is linear in the number of + * elements of the forward lists. Deques are considered equivalent + * if corresponding elements compare equal. + */ + template + bool + operator==(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly); + + /** + * @brief Forward list ordering relation. + * @param __lx A %forward_list. + * @param __ly A %forward_list of the same type as @a __lx. + * @return True iff @a __lx is lexicographically less than @a __ly. + * + * This is a total ordering relation. It is linear in the number of + * elements of the forward lists. The elements must be comparable + * with @c <. + * + * See std::lexicographical_compare() for how the determination is made. + */ + template + inline bool + operator<(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return std::lexicographical_compare(__lx.cbegin(), __lx.cend(), + __ly.cbegin(), __ly.cend()); } + + /// Based on operator== + template + inline bool + operator!=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__lx == __ly); } + + /// Based on operator< + template + inline bool + operator>(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return (__ly < __lx); } + + /// Based on operator< + template + inline bool + operator>=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__lx < __ly); } + + /// Based on operator< + template + inline bool + operator<=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__ly < __lx); } + + /// See std::forward_list::swap(). + template + inline void + swap(forward_list<_Tp, _Alloc>& __lx, + forward_list<_Tp, _Alloc>& __ly) + { __lx.swap(__ly); } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif // _FORWARD_LIST_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/forward_list.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/forward_list.tcc new file mode 100644 index 0000000..19ce80c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/forward_list.tcc @@ -0,0 +1,511 @@ +// -*- C++ -*- + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/forward_list.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{forward_list} + */ + +#ifndef _FORWARD_LIST_TCC +#define _FORWARD_LIST_TCC 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + template + _Fwd_list_base<_Tp, _Alloc>:: + _Fwd_list_base(_Fwd_list_base&& __lst, const _Node_alloc_type& __a) + : _M_impl(__a) + { + if (__lst._M_get_Node_allocator() == __a) + { + this->_M_impl._M_head._M_next = __lst._M_impl._M_head._M_next; + __lst._M_impl._M_head._M_next = 0; + } + else + { + this->_M_impl._M_head._M_next = 0; + _Fwd_list_node_base* __to = &this->_M_impl._M_head; + _Node* __curr = static_cast<_Node*>(__lst._M_impl._M_head._M_next); + + while (__curr) + { + __to->_M_next = + _M_create_node(std::move_if_noexcept(*__curr->_M_valptr())); + __to = __to->_M_next; + __curr = static_cast<_Node*>(__curr->_M_next); + } + } + } + + template + template + _Fwd_list_node_base* + _Fwd_list_base<_Tp, _Alloc>:: + _M_insert_after(const_iterator __pos, _Args&&... __args) + { + _Fwd_list_node_base* __to + = const_cast<_Fwd_list_node_base*>(__pos._M_node); + _Node* __thing = _M_create_node(std::forward<_Args>(__args)...); + __thing->_M_next = __to->_M_next; + __to->_M_next = __thing; + return __to->_M_next; + } + + template + _Fwd_list_node_base* + _Fwd_list_base<_Tp, _Alloc>:: + _M_erase_after(_Fwd_list_node_base* __pos) + { + _Node* __curr = static_cast<_Node*>(__pos->_M_next); + __pos->_M_next = __curr->_M_next; + _Tp_alloc_type __a(_M_get_Node_allocator()); + allocator_traits<_Tp_alloc_type>::destroy(__a, __curr->_M_valptr()); + __curr->~_Node(); + _M_put_node(__curr); + return __pos->_M_next; + } + + template + _Fwd_list_node_base* + _Fwd_list_base<_Tp, _Alloc>:: + _M_erase_after(_Fwd_list_node_base* __pos, + _Fwd_list_node_base* __last) + { + _Node* __curr = static_cast<_Node*>(__pos->_M_next); + while (__curr != __last) + { + _Node* __temp = __curr; + __curr = static_cast<_Node*>(__curr->_M_next); + _Tp_alloc_type __a(_M_get_Node_allocator()); + allocator_traits<_Tp_alloc_type>::destroy(__a, __temp->_M_valptr()); + __temp->~_Node(); + _M_put_node(__temp); + } + __pos->_M_next = __last; + return __last; + } + + // Called by the range constructor to implement [23.3.4.2]/9 + template + template + void + forward_list<_Tp, _Alloc>:: + _M_range_initialize(_InputIterator __first, _InputIterator __last) + { + _Node_base* __to = &this->_M_impl._M_head; + for (; __first != __last; ++__first) + { + __to->_M_next = this->_M_create_node(*__first); + __to = __to->_M_next; + } + } + + // Called by forward_list(n,v,a). + template + void + forward_list<_Tp, _Alloc>:: + _M_fill_initialize(size_type __n, const value_type& __value) + { + _Node_base* __to = &this->_M_impl._M_head; + for (; __n; --__n) + { + __to->_M_next = this->_M_create_node(__value); + __to = __to->_M_next; + } + } + + template + void + forward_list<_Tp, _Alloc>:: + _M_default_initialize(size_type __n) + { + _Node_base* __to = &this->_M_impl._M_head; + for (; __n; --__n) + { + __to->_M_next = this->_M_create_node(); + __to = __to->_M_next; + } + } + + template + forward_list<_Tp, _Alloc>& + forward_list<_Tp, _Alloc>:: + operator=(const forward_list& __list) + { + if (&__list != this) + { + if (_Node_alloc_traits::_S_propagate_on_copy_assign()) + { + auto& __this_alloc = this->_M_get_Node_allocator(); + auto& __that_alloc = __list._M_get_Node_allocator(); + if (!_Node_alloc_traits::_S_always_equal() + && __this_alloc != __that_alloc) + { + // replacement allocator cannot free existing storage + clear(); + } + std::__alloc_on_copy(__this_alloc, __that_alloc); + } + assign(__list.cbegin(), __list.cend()); + } + return *this; + } + + template + void + forward_list<_Tp, _Alloc>:: + _M_default_insert_after(const_iterator __pos, size_type __n) + { + const_iterator __saved_pos = __pos; + __try + { + for (; __n; --__n) + __pos = emplace_after(__pos); + } + __catch(...) + { + erase_after(__saved_pos, ++__pos); + __throw_exception_again; + } + } + + template + void + forward_list<_Tp, _Alloc>:: + resize(size_type __sz) + { + iterator __k = before_begin(); + + size_type __len = 0; + while (__k._M_next() != end() && __len < __sz) + { + ++__k; + ++__len; + } + if (__len == __sz) + erase_after(__k, end()); + else + _M_default_insert_after(__k, __sz - __len); + } + + template + void + forward_list<_Tp, _Alloc>:: + resize(size_type __sz, const value_type& __val) + { + iterator __k = before_begin(); + + size_type __len = 0; + while (__k._M_next() != end() && __len < __sz) + { + ++__k; + ++__len; + } + if (__len == __sz) + erase_after(__k, end()); + else + insert_after(__k, __sz - __len, __val); + } + + template + typename forward_list<_Tp, _Alloc>::iterator + forward_list<_Tp, _Alloc>:: + _M_splice_after(const_iterator __pos, + const_iterator __before, const_iterator __last) + { + _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node); + _Node_base* __b = const_cast<_Node_base*>(__before._M_node); + _Node_base* __end = __b; + + while (__end && __end->_M_next != __last._M_node) + __end = __end->_M_next; + + if (__b != __end) + return iterator(__tmp->_M_transfer_after(__b, __end)); + else + return iterator(__tmp); + } + + template + void + forward_list<_Tp, _Alloc>:: + splice_after(const_iterator __pos, forward_list&&, + const_iterator __i) + { + const_iterator __j = __i; + ++__j; + + if (__pos == __i || __pos == __j) + return; + + _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node); + __tmp->_M_transfer_after(const_cast<_Node_base*>(__i._M_node), + const_cast<_Node_base*>(__j._M_node)); + } + + template + typename forward_list<_Tp, _Alloc>::iterator + forward_list<_Tp, _Alloc>:: + insert_after(const_iterator __pos, size_type __n, const _Tp& __val) + { + if (__n) + { + forward_list __tmp(__n, __val, get_allocator()); + return _M_splice_after(__pos, __tmp.before_begin(), __tmp.end()); + } + else + return iterator(const_cast<_Node_base*>(__pos._M_node)); + } + + template + template + typename forward_list<_Tp, _Alloc>::iterator + forward_list<_Tp, _Alloc>:: + insert_after(const_iterator __pos, + _InputIterator __first, _InputIterator __last) + { + forward_list __tmp(__first, __last, get_allocator()); + if (!__tmp.empty()) + return _M_splice_after(__pos, __tmp.before_begin(), __tmp.end()); + else + return iterator(const_cast<_Node_base*>(__pos._M_node)); + } + + template + void + forward_list<_Tp, _Alloc>:: + remove(const _Tp& __val) + { + _Node* __curr = static_cast<_Node*>(&this->_M_impl._M_head); + _Node* __extra = 0; + + while (_Node* __tmp = static_cast<_Node*>(__curr->_M_next)) + { + if (*__tmp->_M_valptr() == __val) + { + if (__tmp->_M_valptr() != std::__addressof(__val)) + { + this->_M_erase_after(__curr); + continue; + } + else + __extra = __curr; + } + __curr = static_cast<_Node*>(__curr->_M_next); + } + + if (__extra) + this->_M_erase_after(__extra); + } + + template + template + void + forward_list<_Tp, _Alloc>:: + remove_if(_Pred __pred) + { + _Node* __curr = static_cast<_Node*>(&this->_M_impl._M_head); + while (_Node* __tmp = static_cast<_Node*>(__curr->_M_next)) + { + if (__pred(*__tmp->_M_valptr())) + this->_M_erase_after(__curr); + else + __curr = static_cast<_Node*>(__curr->_M_next); + } + } + + template + template + void + forward_list<_Tp, _Alloc>:: + unique(_BinPred __binary_pred) + { + iterator __first = begin(); + iterator __last = end(); + if (__first == __last) + return; + iterator __next = __first; + while (++__next != __last) + { + if (__binary_pred(*__first, *__next)) + erase_after(__first); + else + __first = __next; + __next = __first; + } + } + + template + template + void + forward_list<_Tp, _Alloc>:: + merge(forward_list&& __list, _Comp __comp) + { + _Node_base* __node = &this->_M_impl._M_head; + while (__node->_M_next && __list._M_impl._M_head._M_next) + { + if (__comp(*static_cast<_Node*> + (__list._M_impl._M_head._M_next)->_M_valptr(), + *static_cast<_Node*> + (__node->_M_next)->_M_valptr())) + __node->_M_transfer_after(&__list._M_impl._M_head, + __list._M_impl._M_head._M_next); + __node = __node->_M_next; + } + if (__list._M_impl._M_head._M_next) + { + __node->_M_next = __list._M_impl._M_head._M_next; + __list._M_impl._M_head._M_next = 0; + } + } + + template + bool + operator==(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { + // We don't have size() so we need to walk through both lists + // making sure both iterators are valid. + auto __ix = __lx.cbegin(); + auto __iy = __ly.cbegin(); + while (__ix != __lx.cend() && __iy != __ly.cend()) + { + if (*__ix != *__iy) + return false; + ++__ix; + ++__iy; + } + if (__ix == __lx.cend() && __iy == __ly.cend()) + return true; + else + return false; + } + + template + template + void + forward_list<_Tp, _Alloc>:: + sort(_Comp __comp) + { + // If `next' is 0, return immediately. + _Node* __list = static_cast<_Node*>(this->_M_impl._M_head._M_next); + if (!__list) + return; + + unsigned long __insize = 1; + + while (1) + { + _Node* __p = __list; + __list = 0; + _Node* __tail = 0; + + // Count number of merges we do in this pass. + unsigned long __nmerges = 0; + + while (__p) + { + ++__nmerges; + // There exists a merge to be done. + // Step `insize' places along from p. + _Node* __q = __p; + unsigned long __psize = 0; + for (unsigned long __i = 0; __i < __insize; ++__i) + { + ++__psize; + __q = static_cast<_Node*>(__q->_M_next); + if (!__q) + break; + } + + // If q hasn't fallen off end, we have two lists to merge. + unsigned long __qsize = __insize; + + // Now we have two lists; merge them. + while (__psize > 0 || (__qsize > 0 && __q)) + { + // Decide whether next node of merge comes from p or q. + _Node* __e; + if (__psize == 0) + { + // p is empty; e must come from q. + __e = __q; + __q = static_cast<_Node*>(__q->_M_next); + --__qsize; + } + else if (__qsize == 0 || !__q) + { + // q is empty; e must come from p. + __e = __p; + __p = static_cast<_Node*>(__p->_M_next); + --__psize; + } + else if (__comp(*__p->_M_valptr(), *__q->_M_valptr())) + { + // First node of p is lower; e must come from p. + __e = __p; + __p = static_cast<_Node*>(__p->_M_next); + --__psize; + } + else + { + // First node of q is lower; e must come from q. + __e = __q; + __q = static_cast<_Node*>(__q->_M_next); + --__qsize; + } + + // Add the next node to the merged list. + if (__tail) + __tail->_M_next = __e; + else + __list = __e; + __tail = __e; + } + + // Now p has stepped `insize' places along, and q has too. + __p = __q; + } + __tail->_M_next = 0; + + // If we have done only one merge, we're finished. + // Allow for nmerges == 0, the empty list case. + if (__nmerges <= 1) + { + this->_M_impl._M_head._M_next = __list; + return; + } + + // Otherwise repeat, merging lists twice the size. + __insize *= 2; + } + } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _FORWARD_LIST_TCC */ + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/fstream.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/fstream.tcc new file mode 100644 index 0000000..483a576 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/fstream.tcc @@ -0,0 +1,982 @@ +// File based streams -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/fstream.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{fstream} + */ + +// +// ISO C++ 14882: 27.8 File-based streams +// + +#ifndef _FSTREAM_TCC +#define _FSTREAM_TCC 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + void + basic_filebuf<_CharT, _Traits>:: + _M_allocate_internal_buffer() + { + // Allocate internal buffer only if one doesn't already exist + // (either allocated or provided by the user via setbuf). + if (!_M_buf_allocated && !_M_buf) + { + _M_buf = new char_type[_M_buf_size]; + _M_buf_allocated = true; + } + } + + template + void + basic_filebuf<_CharT, _Traits>:: + _M_destroy_internal_buffer() throw() + { + if (_M_buf_allocated) + { + delete [] _M_buf; + _M_buf = 0; + _M_buf_allocated = false; + } + delete [] _M_ext_buf; + _M_ext_buf = 0; + _M_ext_buf_size = 0; + _M_ext_next = 0; + _M_ext_end = 0; + } + + template + basic_filebuf<_CharT, _Traits>:: + basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock), + _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(), + _M_state_last(), _M_buf(0), _M_buf_size(BUFSIZ), + _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(), + _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false), + _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0), + _M_ext_end(0) + { + if (has_facet<__codecvt_type>(this->_M_buf_locale)) + _M_codecvt = &use_facet<__codecvt_type>(this->_M_buf_locale); + } + + template + typename basic_filebuf<_CharT, _Traits>::__filebuf_type* + basic_filebuf<_CharT, _Traits>:: + open(const char* __s, ios_base::openmode __mode) + { + __filebuf_type *__ret = 0; + if (!this->is_open()) + { + _M_file.open(__s, __mode); + if (this->is_open()) + { + _M_allocate_internal_buffer(); + _M_mode = __mode; + + // Setup initial buffer to 'uncommitted' mode. + _M_reading = false; + _M_writing = false; + _M_set_buffer(-1); + + // Reset to initial state. + _M_state_last = _M_state_cur = _M_state_beg; + + // 27.8.1.3,4 + if ((__mode & ios_base::ate) + && this->seekoff(0, ios_base::end, __mode) + == pos_type(off_type(-1))) + this->close(); + else + __ret = this; + } + } + return __ret; + } + + template + typename basic_filebuf<_CharT, _Traits>::__filebuf_type* + basic_filebuf<_CharT, _Traits>:: + close() + { + if (!this->is_open()) + return 0; + + bool __testfail = false; + { + // NB: Do this here so that re-opened filebufs will be cool... + struct __close_sentry + { + basic_filebuf *__fb; + __close_sentry (basic_filebuf *__fbi): __fb(__fbi) { } + ~__close_sentry () + { + __fb->_M_mode = ios_base::openmode(0); + __fb->_M_pback_init = false; + __fb->_M_destroy_internal_buffer(); + __fb->_M_reading = false; + __fb->_M_writing = false; + __fb->_M_set_buffer(-1); + __fb->_M_state_last = __fb->_M_state_cur = __fb->_M_state_beg; + } + } __cs (this); + + __try + { + if (!_M_terminate_output()) + __testfail = true; + } + __catch(__cxxabiv1::__forced_unwind&) + { + _M_file.close(); + __throw_exception_again; + } + __catch(...) + { __testfail = true; } + } + + if (!_M_file.close()) + __testfail = true; + + if (__testfail) + return 0; + else + return this; + } + + template + streamsize + basic_filebuf<_CharT, _Traits>:: + showmanyc() + { + streamsize __ret = -1; + const bool __testin = _M_mode & ios_base::in; + if (__testin && this->is_open()) + { + // For a stateful encoding (-1) the pending sequence might be just + // shift and unshift prefixes with no actual character. + __ret = this->egptr() - this->gptr(); + +#if _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM + // About this workaround, see libstdc++/20806. + const bool __testbinary = _M_mode & ios_base::binary; + if (__check_facet(_M_codecvt).encoding() >= 0 + && __testbinary) +#else + if (__check_facet(_M_codecvt).encoding() >= 0) +#endif + __ret += _M_file.showmanyc() / _M_codecvt->max_length(); + } + return __ret; + } + + template + typename basic_filebuf<_CharT, _Traits>::int_type + basic_filebuf<_CharT, _Traits>:: + underflow() + { + int_type __ret = traits_type::eof(); + const bool __testin = _M_mode & ios_base::in; + if (__testin) + { + if (_M_writing) + { + if (overflow() == traits_type::eof()) + return __ret; + _M_set_buffer(-1); + _M_writing = false; + } + // Check for pback madness, and if so switch back to the + // normal buffers and jet outta here before expensive + // fileops happen... + _M_destroy_pback(); + + if (this->gptr() < this->egptr()) + return traits_type::to_int_type(*this->gptr()); + + // Get and convert input sequence. + const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; + + // Will be set to true if ::read() returns 0 indicating EOF. + bool __got_eof = false; + // Number of internal characters produced. + streamsize __ilen = 0; + codecvt_base::result __r = codecvt_base::ok; + if (__check_facet(_M_codecvt).always_noconv()) + { + __ilen = _M_file.xsgetn(reinterpret_cast(this->eback()), + __buflen); + if (__ilen == 0) + __got_eof = true; + } + else + { + // Worst-case number of external bytes. + // XXX Not done encoding() == -1. + const int __enc = _M_codecvt->encoding(); + streamsize __blen; // Minimum buffer size. + streamsize __rlen; // Number of chars to read. + if (__enc > 0) + __blen = __rlen = __buflen * __enc; + else + { + __blen = __buflen + _M_codecvt->max_length() - 1; + __rlen = __buflen; + } + const streamsize __remainder = _M_ext_end - _M_ext_next; + __rlen = __rlen > __remainder ? __rlen - __remainder : 0; + + // An imbue in 'read' mode implies first converting the external + // chars already present. + if (_M_reading && this->egptr() == this->eback() && __remainder) + __rlen = 0; + + // Allocate buffer if necessary and move unconverted + // bytes to front. + if (_M_ext_buf_size < __blen) + { + char* __buf = new char[__blen]; + if (__remainder) + __builtin_memcpy(__buf, _M_ext_next, __remainder); + + delete [] _M_ext_buf; + _M_ext_buf = __buf; + _M_ext_buf_size = __blen; + } + else if (__remainder) + __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); + + _M_ext_next = _M_ext_buf; + _M_ext_end = _M_ext_buf + __remainder; + _M_state_last = _M_state_cur; + + do + { + if (__rlen > 0) + { + // Sanity check! + // This may fail if the return value of + // codecvt::max_length() is bogus. + if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size) + { + __throw_ios_failure(__N("basic_filebuf::underflow " + "codecvt::max_length() " + "is not valid")); + } + streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen); + if (__elen == 0) + __got_eof = true; + else if (__elen == -1) + break; + _M_ext_end += __elen; + } + + char_type* __iend = this->eback(); + if (_M_ext_next < _M_ext_end) + __r = _M_codecvt->in(_M_state_cur, _M_ext_next, + _M_ext_end, _M_ext_next, + this->eback(), + this->eback() + __buflen, __iend); + if (__r == codecvt_base::noconv) + { + size_t __avail = _M_ext_end - _M_ext_buf; + __ilen = std::min(__avail, __buflen); + traits_type::copy(this->eback(), + reinterpret_cast + (_M_ext_buf), __ilen); + _M_ext_next = _M_ext_buf + __ilen; + } + else + __ilen = __iend - this->eback(); + + // _M_codecvt->in may return error while __ilen > 0: this is + // ok, and actually occurs in case of mixed encodings (e.g., + // XML files). + if (__r == codecvt_base::error) + break; + + __rlen = 1; + } + while (__ilen == 0 && !__got_eof); + } + + if (__ilen > 0) + { + _M_set_buffer(__ilen); + _M_reading = true; + __ret = traits_type::to_int_type(*this->gptr()); + } + else if (__got_eof) + { + // If the actual end of file is reached, set 'uncommitted' + // mode, thus allowing an immediate write without an + // intervening seek. + _M_set_buffer(-1); + _M_reading = false; + // However, reaching it while looping on partial means that + // the file has got an incomplete character. + if (__r == codecvt_base::partial) + __throw_ios_failure(__N("basic_filebuf::underflow " + "incomplete character in file")); + } + else if (__r == codecvt_base::error) + __throw_ios_failure(__N("basic_filebuf::underflow " + "invalid byte sequence in file")); + else + __throw_ios_failure(__N("basic_filebuf::underflow " + "error reading the file")); + } + return __ret; + } + + template + typename basic_filebuf<_CharT, _Traits>::int_type + basic_filebuf<_CharT, _Traits>:: + pbackfail(int_type __i) + { + int_type __ret = traits_type::eof(); + const bool __testin = _M_mode & ios_base::in; + if (__testin) + { + if (_M_writing) + { + if (overflow() == traits_type::eof()) + return __ret; + _M_set_buffer(-1); + _M_writing = false; + } + // Remember whether the pback buffer is active, otherwise below + // we may try to store in it a second char (libstdc++/9761). + const bool __testpb = _M_pback_init; + const bool __testeof = traits_type::eq_int_type(__i, __ret); + int_type __tmp; + if (this->eback() < this->gptr()) + { + this->gbump(-1); + __tmp = traits_type::to_int_type(*this->gptr()); + } + else if (this->seekoff(-1, ios_base::cur) != pos_type(off_type(-1))) + { + __tmp = this->underflow(); + if (traits_type::eq_int_type(__tmp, __ret)) + return __ret; + } + else + { + // At the beginning of the buffer, need to make a + // putback position available. But the seek may fail + // (f.i., at the beginning of a file, see + // libstdc++/9439) and in that case we return + // traits_type::eof(). + return __ret; + } + + // Try to put back __i into input sequence in one of three ways. + // Order these tests done in is unspecified by the standard. + if (!__testeof && traits_type::eq_int_type(__i, __tmp)) + __ret = __i; + else if (__testeof) + __ret = traits_type::not_eof(__i); + else if (!__testpb) + { + _M_create_pback(); + _M_reading = true; + *this->gptr() = traits_type::to_char_type(__i); + __ret = __i; + } + } + return __ret; + } + + template + typename basic_filebuf<_CharT, _Traits>::int_type + basic_filebuf<_CharT, _Traits>:: + overflow(int_type __c) + { + int_type __ret = traits_type::eof(); + const bool __testeof = traits_type::eq_int_type(__c, __ret); + const bool __testout = _M_mode & ios_base::out; + if (__testout) + { + if (_M_reading) + { + _M_destroy_pback(); + const int __gptr_off = _M_get_ext_pos(_M_state_last); + if (_M_seek(__gptr_off, ios_base::cur, _M_state_last) + == pos_type(off_type(-1))) + return __ret; + } + if (this->pbase() < this->pptr()) + { + // If appropriate, append the overflow char. + if (!__testeof) + { + *this->pptr() = traits_type::to_char_type(__c); + this->pbump(1); + } + + // Convert pending sequence to external representation, + // and output. + if (_M_convert_to_external(this->pbase(), + this->pptr() - this->pbase())) + { + _M_set_buffer(0); + __ret = traits_type::not_eof(__c); + } + } + else if (_M_buf_size > 1) + { + // Overflow in 'uncommitted' mode: set _M_writing, set + // the buffer to the initial 'write' mode, and put __c + // into the buffer. + _M_set_buffer(0); + _M_writing = true; + if (!__testeof) + { + *this->pptr() = traits_type::to_char_type(__c); + this->pbump(1); + } + __ret = traits_type::not_eof(__c); + } + else + { + // Unbuffered. + char_type __conv = traits_type::to_char_type(__c); + if (__testeof || _M_convert_to_external(&__conv, 1)) + { + _M_writing = true; + __ret = traits_type::not_eof(__c); + } + } + } + return __ret; + } + + template + bool + basic_filebuf<_CharT, _Traits>:: + _M_convert_to_external(_CharT* __ibuf, streamsize __ilen) + { + // Sizes of external and pending output. + streamsize __elen; + streamsize __plen; + if (__check_facet(_M_codecvt).always_noconv()) + { + __elen = _M_file.xsputn(reinterpret_cast(__ibuf), __ilen); + __plen = __ilen; + } + else + { + // Worst-case number of external bytes needed. + // XXX Not done encoding() == -1. + streamsize __blen = __ilen * _M_codecvt->max_length(); + char* __buf = static_cast(__builtin_alloca(__blen)); + + char* __bend; + const char_type* __iend; + codecvt_base::result __r; + __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen, + __iend, __buf, __buf + __blen, __bend); + + if (__r == codecvt_base::ok || __r == codecvt_base::partial) + __blen = __bend - __buf; + else if (__r == codecvt_base::noconv) + { + // Same as the always_noconv case above. + __buf = reinterpret_cast(__ibuf); + __blen = __ilen; + } + else + __throw_ios_failure(__N("basic_filebuf::_M_convert_to_external " + "conversion error")); + + __elen = _M_file.xsputn(__buf, __blen); + __plen = __blen; + + // Try once more for partial conversions. + if (__r == codecvt_base::partial && __elen == __plen) + { + const char_type* __iresume = __iend; + streamsize __rlen = this->pptr() - __iend; + __r = _M_codecvt->out(_M_state_cur, __iresume, + __iresume + __rlen, __iend, __buf, + __buf + __blen, __bend); + if (__r != codecvt_base::error) + { + __rlen = __bend - __buf; + __elen = _M_file.xsputn(__buf, __rlen); + __plen = __rlen; + } + else + __throw_ios_failure(__N("basic_filebuf::_M_convert_to_external " + "conversion error")); + } + } + return __elen == __plen; + } + + template + streamsize + basic_filebuf<_CharT, _Traits>:: + xsgetn(_CharT* __s, streamsize __n) + { + // Clear out pback buffer before going on to the real deal... + streamsize __ret = 0; + if (_M_pback_init) + { + if (__n > 0 && this->gptr() == this->eback()) + { + *__s++ = *this->gptr(); // emulate non-underflowing sbumpc + this->gbump(1); + __ret = 1; + --__n; + } + _M_destroy_pback(); + } + else if (_M_writing) + { + if (overflow() == traits_type::eof()) + return __ret; + _M_set_buffer(-1); + _M_writing = false; + } + + // Optimization in the always_noconv() case, to be generalized in the + // future: when __n > __buflen we read directly instead of using the + // buffer repeatedly. + const bool __testin = _M_mode & ios_base::in; + const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; + + if (__n > __buflen && __check_facet(_M_codecvt).always_noconv() + && __testin) + { + // First, copy the chars already present in the buffer. + const streamsize __avail = this->egptr() - this->gptr(); + if (__avail != 0) + { + traits_type::copy(__s, this->gptr(), __avail); + __s += __avail; + this->setg(this->eback(), this->gptr() + __avail, + this->egptr()); + __ret += __avail; + __n -= __avail; + } + + // Need to loop in case of short reads (relatively common + // with pipes). + streamsize __len; + for (;;) + { + __len = _M_file.xsgetn(reinterpret_cast(__s), + __n); + if (__len == -1) + __throw_ios_failure(__N("basic_filebuf::xsgetn " + "error reading the file")); + if (__len == 0) + break; + + __n -= __len; + __ret += __len; + if (__n == 0) + break; + + __s += __len; + } + + if (__n == 0) + { + _M_set_buffer(0); + _M_reading = true; + } + else if (__len == 0) + { + // If end of file is reached, set 'uncommitted' + // mode, thus allowing an immediate write without + // an intervening seek. + _M_set_buffer(-1); + _M_reading = false; + } + } + else + __ret += __streambuf_type::xsgetn(__s, __n); + + return __ret; + } + + template + streamsize + basic_filebuf<_CharT, _Traits>:: + xsputn(const _CharT* __s, streamsize __n) + { + streamsize __ret = 0; + // Optimization in the always_noconv() case, to be generalized in the + // future: when __n is sufficiently large we write directly instead of + // using the buffer. + const bool __testout = _M_mode & ios_base::out; + if (__check_facet(_M_codecvt).always_noconv() + && __testout && !_M_reading) + { + // Measurement would reveal the best choice. + const streamsize __chunk = 1ul << 10; + streamsize __bufavail = this->epptr() - this->pptr(); + + // Don't mistake 'uncommitted' mode buffered with unbuffered. + if (!_M_writing && _M_buf_size > 1) + __bufavail = _M_buf_size - 1; + + const streamsize __limit = std::min(__chunk, __bufavail); + if (__n >= __limit) + { + const streamsize __buffill = this->pptr() - this->pbase(); + const char* __buf = reinterpret_cast(this->pbase()); + __ret = _M_file.xsputn_2(__buf, __buffill, + reinterpret_cast(__s), + __n); + if (__ret == __buffill + __n) + { + _M_set_buffer(0); + _M_writing = true; + } + if (__ret > __buffill) + __ret -= __buffill; + else + __ret = 0; + } + else + __ret = __streambuf_type::xsputn(__s, __n); + } + else + __ret = __streambuf_type::xsputn(__s, __n); + return __ret; + } + + template + typename basic_filebuf<_CharT, _Traits>::__streambuf_type* + basic_filebuf<_CharT, _Traits>:: + setbuf(char_type* __s, streamsize __n) + { + if (!this->is_open()) + { + if (__s == 0 && __n == 0) + _M_buf_size = 1; + else if (__s && __n > 0) + { + // This is implementation-defined behavior, and assumes that + // an external char_type array of length __n exists and has + // been pre-allocated. If this is not the case, things will + // quickly blow up. When __n > 1, __n - 1 positions will be + // used for the get area, __n - 1 for the put area and 1 + // position to host the overflow char of a full put area. + // When __n == 1, 1 position will be used for the get area + // and 0 for the put area, as in the unbuffered case above. + _M_buf = __s; + _M_buf_size = __n; + } + } + return this; + } + + + // According to 27.8.1.4 p11 - 13, seekoff should ignore the last + // argument (of type openmode). + template + typename basic_filebuf<_CharT, _Traits>::pos_type + basic_filebuf<_CharT, _Traits>:: + seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode) + { + int __width = 0; + if (_M_codecvt) + __width = _M_codecvt->encoding(); + if (__width < 0) + __width = 0; + + pos_type __ret = pos_type(off_type(-1)); + const bool __testfail = __off != 0 && __width <= 0; + if (this->is_open() && !__testfail) + { + // tellg and tellp queries do not affect any state, unless + // ! always_noconv and the put sequence is not empty. + // In that case, determining the position requires converting the + // put sequence. That doesn't use ext_buf, so requires a flush. + bool __no_movement = __way == ios_base::cur && __off == 0 + && (!_M_writing || _M_codecvt->always_noconv()); + + // Ditch any pback buffers to avoid confusion. + if (!__no_movement) + _M_destroy_pback(); + + // Correct state at destination. Note that this is the correct + // state for the current position during output, because + // codecvt::unshift() returns the state to the initial state. + // This is also the correct state at the end of the file because + // an unshift sequence should have been written at the end. + __state_type __state = _M_state_beg; + off_type __computed_off = __off * __width; + if (_M_reading && __way == ios_base::cur) + { + __state = _M_state_last; + __computed_off += _M_get_ext_pos(__state); + } + if (!__no_movement) + __ret = _M_seek(__computed_off, __way, __state); + else + { + if (_M_writing) + __computed_off = this->pptr() - this->pbase(); + + off_type __file_off = _M_file.seekoff(0, ios_base::cur); + if (__file_off != off_type(-1)) + { + __ret = __file_off + __computed_off; + __ret.state(__state); + } + } + } + return __ret; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 171. Strange seekpos() semantics due to joint position + // According to the resolution of DR 171, seekpos should ignore the last + // argument (of type openmode). + template + typename basic_filebuf<_CharT, _Traits>::pos_type + basic_filebuf<_CharT, _Traits>:: + seekpos(pos_type __pos, ios_base::openmode) + { + pos_type __ret = pos_type(off_type(-1)); + if (this->is_open()) + { + // Ditch any pback buffers to avoid confusion. + _M_destroy_pback(); + __ret = _M_seek(off_type(__pos), ios_base::beg, __pos.state()); + } + return __ret; + } + + template + typename basic_filebuf<_CharT, _Traits>::pos_type + basic_filebuf<_CharT, _Traits>:: + _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state) + { + pos_type __ret = pos_type(off_type(-1)); + if (_M_terminate_output()) + { + off_type __file_off = _M_file.seekoff(__off, __way); + if (__file_off != off_type(-1)) + { + _M_reading = false; + _M_writing = false; + _M_ext_next = _M_ext_end = _M_ext_buf; + _M_set_buffer(-1); + _M_state_cur = __state; + __ret = __file_off; + __ret.state(_M_state_cur); + } + } + return __ret; + } + + // Returns the distance from the end of the ext buffer to the point + // corresponding to gptr(). This is a negative value. Updates __state + // from eback() correspondence to gptr(). + template + int basic_filebuf<_CharT, _Traits>:: + _M_get_ext_pos(__state_type& __state) + { + if (_M_codecvt->always_noconv()) + return this->gptr() - this->egptr(); + else + { + // Calculate offset from _M_ext_buf that corresponds to + // gptr(). Precondition: __state == _M_state_last, which + // corresponds to eback(). + const int __gptr_off = + _M_codecvt->length(__state, _M_ext_buf, _M_ext_next, + this->gptr() - this->eback()); + return _M_ext_buf + __gptr_off - _M_ext_end; + } + } + + template + bool + basic_filebuf<_CharT, _Traits>:: + _M_terminate_output() + { + // Part one: update the output sequence. + bool __testvalid = true; + if (this->pbase() < this->pptr()) + { + const int_type __tmp = this->overflow(); + if (traits_type::eq_int_type(__tmp, traits_type::eof())) + __testvalid = false; + } + + // Part two: output unshift sequence. + if (_M_writing && !__check_facet(_M_codecvt).always_noconv() + && __testvalid) + { + // Note: this value is arbitrary, since there is no way to + // get the length of the unshift sequence from codecvt, + // without calling unshift. + const size_t __blen = 128; + char __buf[__blen]; + codecvt_base::result __r; + streamsize __ilen = 0; + + do + { + char* __next; + __r = _M_codecvt->unshift(_M_state_cur, __buf, + __buf + __blen, __next); + if (__r == codecvt_base::error) + __testvalid = false; + else if (__r == codecvt_base::ok || + __r == codecvt_base::partial) + { + __ilen = __next - __buf; + if (__ilen > 0) + { + const streamsize __elen = _M_file.xsputn(__buf, __ilen); + if (__elen != __ilen) + __testvalid = false; + } + } + } + while (__r == codecvt_base::partial && __ilen > 0 && __testvalid); + + if (__testvalid) + { + // This second call to overflow() is required by the standard, + // but it's not clear why it's needed, since the output buffer + // should be empty by this point (it should have been emptied + // in the first call to overflow()). + const int_type __tmp = this->overflow(); + if (traits_type::eq_int_type(__tmp, traits_type::eof())) + __testvalid = false; + } + } + return __testvalid; + } + + template + int + basic_filebuf<_CharT, _Traits>:: + sync() + { + // Make sure that the internal buffer resyncs its idea of + // the file position with the external file. + int __ret = 0; + if (this->pbase() < this->pptr()) + { + const int_type __tmp = this->overflow(); + if (traits_type::eq_int_type(__tmp, traits_type::eof())) + __ret = -1; + } + return __ret; + } + + template + void + basic_filebuf<_CharT, _Traits>:: + imbue(const locale& __loc) + { + bool __testvalid = true; + + const __codecvt_type* _M_codecvt_tmp = 0; + if (__builtin_expect(has_facet<__codecvt_type>(__loc), true)) + _M_codecvt_tmp = &use_facet<__codecvt_type>(__loc); + + if (this->is_open()) + { + // encoding() == -1 is ok only at the beginning. + if ((_M_reading || _M_writing) + && __check_facet(_M_codecvt).encoding() == -1) + __testvalid = false; + else + { + if (_M_reading) + { + if (__check_facet(_M_codecvt).always_noconv()) + { + if (_M_codecvt_tmp + && !__check_facet(_M_codecvt_tmp).always_noconv()) + __testvalid = this->seekoff(0, ios_base::cur, _M_mode) + != pos_type(off_type(-1)); + } + else + { + // External position corresponding to gptr(). + _M_ext_next = _M_ext_buf + + _M_codecvt->length(_M_state_last, _M_ext_buf, + _M_ext_next, + this->gptr() - this->eback()); + const streamsize __remainder = _M_ext_end - _M_ext_next; + if (__remainder) + __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); + + _M_ext_next = _M_ext_buf; + _M_ext_end = _M_ext_buf + __remainder; + _M_set_buffer(-1); + _M_state_last = _M_state_cur = _M_state_beg; + } + } + else if (_M_writing && (__testvalid = _M_terminate_output())) + _M_set_buffer(-1); + } + } + + if (__testvalid) + _M_codecvt = _M_codecvt_tmp; + else + _M_codecvt = 0; + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template class basic_filebuf; + extern template class basic_ifstream; + extern template class basic_ofstream; + extern template class basic_fstream; + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template class basic_filebuf; + extern template class basic_ifstream; + extern template class basic_ofstream; + extern template class basic_fstream; +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/functexcept.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/functexcept.h new file mode 100644 index 0000000..1614058 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/functexcept.h @@ -0,0 +1,106 @@ +// Function-Based Exception Support -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/functexcept.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{exception} + * + * This header provides support for -fno-exceptions. + */ + +// +// ISO C++ 14882: 19.1 Exception classes +// + +#ifndef _FUNCTEXCEPT_H +#define _FUNCTEXCEPT_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Helper for exception objects in + void + __throw_bad_exception(void) __attribute__((__noreturn__)); + + // Helper for exception objects in + void + __throw_bad_alloc(void) __attribute__((__noreturn__)); + + // Helper for exception objects in + void + __throw_bad_cast(void) __attribute__((__noreturn__)); + + void + __throw_bad_typeid(void) __attribute__((__noreturn__)); + + // Helpers for exception objects in + 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__)); + + // Helpers for exception objects in + void + __throw_ios_failure(const char*) __attribute__((__noreturn__)); + + void + __throw_system_error(int) __attribute__((__noreturn__)); + + void + __throw_future_error(int) __attribute__((__noreturn__)); + + // Helpers for exception objects in + void + __throw_bad_function_call() __attribute__((__noreturn__)); + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/functional_hash.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/functional_hash.h new file mode 100644 index 0000000..bc29235 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/functional_hash.h @@ -0,0 +1,212 @@ +// functional_hash.h header -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/functional_hash.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{functional} + */ + +#ifndef _FUNCTIONAL_HASH_H +#define _FUNCTIONAL_HASH_H 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** @defgroup hashes Hashes + * @ingroup functors + * + * Hashing functors taking a variable type and returning a @c std::size_t. + * + * @{ + */ + + template + struct __hash_base + { + typedef _Result result_type; + typedef _Arg argument_type; + }; + + /// Primary class template hash. + template + struct hash; + + /// Partial specializations for pointer types. + template + struct hash<_Tp*> : public __hash_base + { + size_t + operator()(_Tp* __p) const noexcept + { return reinterpret_cast(__p); } + }; + + // Explicit specializations for integer types. +#define _Cxx_hashtable_define_trivial_hash(_Tp) \ + template<> \ + struct hash<_Tp> : public __hash_base \ + { \ + size_t \ + operator()(_Tp __val) const noexcept \ + { return static_cast(__val); } \ + }; + + /// Explicit specialization for bool. + _Cxx_hashtable_define_trivial_hash(bool) + + /// Explicit specialization for char. + _Cxx_hashtable_define_trivial_hash(char) + + /// Explicit specialization for signed char. + _Cxx_hashtable_define_trivial_hash(signed char) + + /// Explicit specialization for unsigned char. + _Cxx_hashtable_define_trivial_hash(unsigned char) + + /// Explicit specialization for wchar_t. + _Cxx_hashtable_define_trivial_hash(wchar_t) + + /// Explicit specialization for char16_t. + _Cxx_hashtable_define_trivial_hash(char16_t) + + /// Explicit specialization for char32_t. + _Cxx_hashtable_define_trivial_hash(char32_t) + + /// Explicit specialization for short. + _Cxx_hashtable_define_trivial_hash(short) + + /// Explicit specialization for int. + _Cxx_hashtable_define_trivial_hash(int) + + /// Explicit specialization for long. + _Cxx_hashtable_define_trivial_hash(long) + + /// Explicit specialization for long long. + _Cxx_hashtable_define_trivial_hash(long long) + + /// Explicit specialization for unsigned short. + _Cxx_hashtable_define_trivial_hash(unsigned short) + + /// Explicit specialization for unsigned int. + _Cxx_hashtable_define_trivial_hash(unsigned int) + + /// Explicit specialization for unsigned long. + _Cxx_hashtable_define_trivial_hash(unsigned long) + + /// Explicit specialization for unsigned long long. + _Cxx_hashtable_define_trivial_hash(unsigned long long) + +#undef _Cxx_hashtable_define_trivial_hash + + struct _Hash_impl + { + static size_t + hash(const void* __ptr, size_t __clength, + size_t __seed = static_cast(0xc70f6907UL)) + { return _Hash_bytes(__ptr, __clength, __seed); } + + template + static size_t + hash(const _Tp& __val) + { return hash(&__val, sizeof(__val)); } + + template + static size_t + __hash_combine(const _Tp& __val, size_t __hash) + { return hash(&__val, sizeof(__val), __hash); } + }; + + struct _Fnv_hash_impl + { + static size_t + hash(const void* __ptr, size_t __clength, + size_t __seed = static_cast(2166136261UL)) + { return _Fnv_hash_bytes(__ptr, __clength, __seed); } + + template + static size_t + hash(const _Tp& __val) + { return hash(&__val, sizeof(__val)); } + + template + static size_t + __hash_combine(const _Tp& __val, size_t __hash) + { return hash(&__val, sizeof(__val), __hash); } + }; + + /// Specialization for float. + template<> + struct hash : public __hash_base + { + size_t + operator()(float __val) const noexcept + { + // 0 and -0 both hash to zero. + return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; + } + }; + + /// Specialization for double. + template<> + struct hash : public __hash_base + { + size_t + operator()(double __val) const noexcept + { + // 0 and -0 both hash to zero. + return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; + } + }; + + /// Specialization for long double. + template<> + struct hash + : public __hash_base + { + _GLIBCXX_PURE size_t + operator()(long double __val) const noexcept; + }; + + // @} group hashes + + // Hint about performance of hash functor. If not fast the hash based + // containers will cache the hash code. + // Default behavior is to consider that hasher are fast unless specified + // otherwise. + template + struct __is_fast_hash : public std::true_type + { }; + + template<> + struct __is_fast_hash> : public std::false_type + { }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // _FUNCTIONAL_HASH_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/gslice.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/gslice.h new file mode 100644 index 0000000..0e5ecfe --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/gslice.h @@ -0,0 +1,185 @@ +// The template and inlines for the -*- C++ -*- gslice class. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/gslice.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{valarray} + */ + +// Written by Gabriel Dos Reis + +#ifndef _GSLICE_H +#define _GSLICE_H 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup numeric_arrays + * @{ + */ + + /** + * @brief Class defining multi-dimensional subset of an array. + * + * The slice class represents a multi-dimensional subset of an array, + * specified by three parameter sets: start offset, size array, and stride + * array. The start offset is the index of the first element of the array + * that is part of the subset. The size and stride array describe each + * dimension of the slice. Size is the number of elements in that + * dimension, and stride is the distance in the array between successive + * elements in that dimension. Each dimension's size and stride is taken + * to begin at an array element described by the previous dimension. The + * size array and stride array must be the same size. + * + * For example, if you have offset==3, stride[0]==11, size[1]==3, + * stride[1]==3, then slice[0,0]==array[3], slice[0,1]==array[6], + * slice[0,2]==array[9], slice[1,0]==array[14], slice[1,1]==array[17], + * slice[1,2]==array[20]. + */ + class gslice + { + public: + /// Construct an empty slice. + gslice(); + + /** + * @brief Construct a slice. + * + * Constructs a slice with as many dimensions as the length of the @a l + * and @a s arrays. + * + * @param __o Offset in array of first element. + * @param __l Array of dimension lengths. + * @param __s Array of dimension strides between array elements. + */ + gslice(size_t __o, const valarray& __l, + const valarray& __s); + + // XXX: the IS says the copy-ctor and copy-assignment operators are + // synthesized by the compiler but they are just unsuitable + // for a ref-counted semantic + /// Copy constructor. + gslice(const gslice&); + + /// Destructor. + ~gslice(); + + // XXX: See the note above. + /// Assignment operator. + gslice& operator=(const gslice&); + + /// Return array offset of first slice element. + size_t start() const; + + /// Return array of sizes of slice dimensions. + valarray size() const; + + /// Return array of array strides for each dimension. + valarray stride() const; + + private: + struct _Indexer + { + size_t _M_count; + size_t _M_start; + valarray _M_size; + valarray _M_stride; + valarray _M_index; // Linear array of referenced indices + + _Indexer() + : _M_count(1), _M_start(0), _M_size(), _M_stride(), _M_index() {} + + _Indexer(size_t, const valarray&, + const valarray&); + + void + _M_increment_use() + { ++_M_count; } + + size_t + _M_decrement_use() + { return --_M_count; } + }; + + _Indexer* _M_index; + + template friend class valarray; + }; + + inline size_t + gslice::start() const + { return _M_index ? _M_index->_M_start : 0; } + + inline valarray + gslice::size() const + { return _M_index ? _M_index->_M_size : valarray(); } + + inline valarray + gslice::stride() const + { return _M_index ? _M_index->_M_stride : valarray(); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 543. valarray slice default constructor + inline + gslice::gslice() + : _M_index(new gslice::_Indexer()) {} + + inline + gslice::gslice(size_t __o, const valarray& __l, + const valarray& __s) + : _M_index(new gslice::_Indexer(__o, __l, __s)) {} + + inline + gslice::gslice(const gslice& __g) + : _M_index(__g._M_index) + { if (_M_index) _M_index->_M_increment_use(); } + + inline + gslice::~gslice() + { + if (_M_index && _M_index->_M_decrement_use() == 0) + delete _M_index; + } + + inline gslice& + gslice::operator=(const gslice& __g) + { + if (__g._M_index) + __g._M_index->_M_increment_use(); + if (_M_index && _M_index->_M_decrement_use() == 0) + delete _M_index; + _M_index = __g._M_index; + return *this; + } + + // @} group numeric_arrays + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _GSLICE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/gslice_array.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/gslice_array.h new file mode 100644 index 0000000..d7b1886 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/gslice_array.h @@ -0,0 +1,218 @@ +// The template and inlines for the -*- C++ -*- gslice_array class. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/gslice_array.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{valarray} + */ + +// Written by Gabriel Dos Reis + +#ifndef _GSLICE_ARRAY_H +#define _GSLICE_ARRAY_H 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup numeric_arrays + * @{ + */ + + /** + * @brief Reference to multi-dimensional subset of an array. + * + * A gslice_array is a reference to the actual elements of an array + * specified by a gslice. The way to get a gslice_array is to call + * operator[](gslice) on a valarray. The returned gslice_array then + * permits carrying operations out on the referenced subset of elements in + * the original valarray. For example, operator+=(valarray) will add + * values to the subset of elements in the underlying valarray this + * gslice_array refers to. + * + * @param Tp Element type. + */ + template + class gslice_array + { + public: + typedef _Tp value_type; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 253. valarray helper functions are almost entirely useless + + /// Copy constructor. Both slices refer to the same underlying array. + gslice_array(const gslice_array&); + + /// Assignment operator. Assigns slice elements to corresponding + /// elements of @a a. + gslice_array& operator=(const gslice_array&); + + /// Assign slice elements to corresponding elements of @a v. + void operator=(const valarray<_Tp>&) const; + /// Multiply slice elements by corresponding elements of @a v. + void operator*=(const valarray<_Tp>&) const; + /// Divide slice elements by corresponding elements of @a v. + void operator/=(const valarray<_Tp>&) const; + /// Modulo slice elements by corresponding elements of @a v. + void operator%=(const valarray<_Tp>&) const; + /// Add corresponding elements of @a v to slice elements. + void operator+=(const valarray<_Tp>&) const; + /// Subtract corresponding elements of @a v from slice elements. + void operator-=(const valarray<_Tp>&) const; + /// Logical xor slice elements with corresponding elements of @a v. + void operator^=(const valarray<_Tp>&) const; + /// Logical and slice elements with corresponding elements of @a v. + void operator&=(const valarray<_Tp>&) const; + /// Logical or slice elements with corresponding elements of @a v. + void operator|=(const valarray<_Tp>&) const; + /// Left shift slice elements by corresponding elements of @a v. + void operator<<=(const valarray<_Tp>&) const; + /// Right shift slice elements by corresponding elements of @a v. + void operator>>=(const valarray<_Tp>&) const; + /// Assign all slice elements to @a t. + void operator=(const _Tp&) const; + + template + void operator=(const _Expr<_Dom, _Tp>&) const; + template + void operator*=(const _Expr<_Dom, _Tp>&) const; + template + void operator/=(const _Expr<_Dom, _Tp>&) const; + template + void operator%=(const _Expr<_Dom, _Tp>&) const; + template + void operator+=(const _Expr<_Dom, _Tp>&) const; + template + void operator-=(const _Expr<_Dom, _Tp>&) const; + template + void operator^=(const _Expr<_Dom, _Tp>&) const; + template + void operator&=(const _Expr<_Dom, _Tp>&) const; + template + void operator|=(const _Expr<_Dom, _Tp>&) const; + template + void operator<<=(const _Expr<_Dom, _Tp>&) const; + template + void operator>>=(const _Expr<_Dom, _Tp>&) const; + + private: + _Array<_Tp> _M_array; + const valarray& _M_index; + + friend class valarray<_Tp>; + + gslice_array(_Array<_Tp>, const valarray&); + + // not implemented + gslice_array(); + }; + + template + inline + gslice_array<_Tp>::gslice_array(_Array<_Tp> __a, + const valarray& __i) + : _M_array(__a), _M_index(__i) {} + + template + inline + gslice_array<_Tp>::gslice_array(const gslice_array<_Tp>& __a) + : _M_array(__a._M_array), _M_index(__a._M_index) {} + + template + inline gslice_array<_Tp>& + gslice_array<_Tp>::operator=(const gslice_array<_Tp>& __a) + { + std::__valarray_copy(_Array<_Tp>(__a._M_array), + _Array(__a._M_index), _M_index.size(), + _M_array, _Array(_M_index)); + return *this; + } + + template + inline void + gslice_array<_Tp>::operator=(const _Tp& __t) const + { + std::__valarray_fill(_M_array, _Array(_M_index), + _M_index.size(), __t); + } + + template + inline void + gslice_array<_Tp>::operator=(const valarray<_Tp>& __v) const + { + std::__valarray_copy(_Array<_Tp>(__v), __v.size(), + _M_array, _Array(_M_index)); + } + + template + template + inline void + gslice_array<_Tp>::operator=(const _Expr<_Dom, _Tp>& __e) const + { + std::__valarray_copy (__e, _M_index.size(), _M_array, + _Array(_M_index)); + } + +#undef _DEFINE_VALARRAY_OPERATOR +#define _DEFINE_VALARRAY_OPERATOR(_Op, _Name) \ + template \ + inline void \ + gslice_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const \ + { \ + _Array_augmented_##_Name(_M_array, _Array(_M_index), \ + _Array<_Tp>(__v), __v.size()); \ + } \ + \ + template \ + template \ + inline void \ + gslice_array<_Tp>::operator _Op##= (const _Expr<_Dom, _Tp>& __e) const\ + { \ + _Array_augmented_##_Name(_M_array, _Array(_M_index), __e,\ + _M_index.size()); \ + } + +_DEFINE_VALARRAY_OPERATOR(*, __multiplies) +_DEFINE_VALARRAY_OPERATOR(/, __divides) +_DEFINE_VALARRAY_OPERATOR(%, __modulus) +_DEFINE_VALARRAY_OPERATOR(+, __plus) +_DEFINE_VALARRAY_OPERATOR(-, __minus) +_DEFINE_VALARRAY_OPERATOR(^, __bitwise_xor) +_DEFINE_VALARRAY_OPERATOR(&, __bitwise_and) +_DEFINE_VALARRAY_OPERATOR(|, __bitwise_or) +_DEFINE_VALARRAY_OPERATOR(<<, __shift_left) +_DEFINE_VALARRAY_OPERATOR(>>, __shift_right) + +#undef _DEFINE_VALARRAY_OPERATOR + + // @} group numeric_arrays + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _GSLICE_ARRAY_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hash_bytes.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hash_bytes.h new file mode 100644 index 0000000..83e4e05 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hash_bytes.h @@ -0,0 +1,59 @@ +// Declarations for hash functions. -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/hash_bytes.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{functional} + */ + +#ifndef _HASH_BYTES_H +#define _HASH_BYTES_H 1 + +#pragma GCC system_header + +#include + +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Hash function implementation for the nontrivial specialization. + // All of them are based on a primitive that hashes a pointer to a + // byte array. The actual hash algorithm is not guaranteed to stay + // the same from release to release -- it may be updated or tuned to + // improve hash quality or speed. + size_t + _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); + + // A similar hash primitive, using the FNV hash algorithm. This + // algorithm is guaranteed to stay the same from release to release. + // (although it might not produce the same values on different + // machines.) + size_t + _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hashtable.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hashtable.h new file mode 100644 index 0000000..246e9bb --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hashtable.h @@ -0,0 +1,1823 @@ +// hashtable.h header -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/hashtable.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{unordered_map, unordered_set} + */ + +#ifndef _HASHTABLE_H +#define _HASHTABLE_H 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + using __cache_default + = __not_<__and_, + // Mandatory to make local_iterator default + // constructible and assignable. + is_default_constructible<_Hash>, + is_copy_assignable<_Hash>, + // Mandatory to have erase not throwing. + __detail::__is_noexcept_hash<_Tp, _Hash>>>; + + /** + * Primary class template _Hashtable. + * + * @ingroup hashtable-detail + * + * @tparam _Value CopyConstructible type. + * + * @tparam _Key CopyConstructible type. + * + * @tparam _Alloc An allocator type + * ([lib.allocator.requirements]) whose _Alloc::value_type is + * _Value. As a conforming extension, we allow for + * _Alloc::value_type != _Value. + * + * @tparam _ExtractKey Function object that takes an object of type + * _Value and returns a value of type _Key. + * + * @tparam _Equal Function object that takes two objects of type k + * and returns a bool-like value that is true if the two objects + * are considered equal. + * + * @tparam _H1 The hash function. A unary function object with + * argument type _Key and result type size_t. Return values should + * be distributed over the entire range [0, numeric_limits:::max()]. + * + * @tparam _H2 The range-hashing function (in the terminology of + * Tavori and Dreizin). A binary function object whose argument + * types and result type are all size_t. Given arguments r and N, + * the return value is in the range [0, N). + * + * @tparam _Hash The ranged hash function (Tavori and Dreizin). A + * binary function whose argument types are _Key and size_t and + * whose result type is size_t. Given arguments k and N, the + * return value is in the range [0, N). Default: hash(k, N) = + * h2(h1(k), N). If _Hash is anything other than the default, _H1 + * and _H2 are ignored. + * + * @tparam _RehashPolicy Policy class with three members, all of + * which govern the bucket count. _M_next_bkt(n) returns a bucket + * count no smaller than n. _M_bkt_for_elements(n) returns a + * bucket count appropriate for an element count of n. + * _M_need_rehash(n_bkt, n_elt, n_ins) determines whether, if the + * current bucket count is n_bkt and the current element count is + * n_elt, we need to increase the bucket count. If so, returns + * make_pair(true, n), where n is the new bucket count. If not, + * returns make_pair(false, ) + * + * @tparam _Traits Compile-time class with three boolean + * std::integral_constant members: __cache_hash_code, __constant_iterators, + * __unique_keys. + * + * Each _Hashtable data structure has: + * + * - _Bucket[] _M_buckets + * - _Hash_node_base _M_bbegin + * - size_type _M_bucket_count + * - size_type _M_element_count + * + * with _Bucket being _Hash_node* and _Hash_node containing: + * + * - _Hash_node* _M_next + * - Tp _M_value + * - size_t _M_hash_code if cache_hash_code is true + * + * In terms of Standard containers the hashtable is like the aggregation of: + * + * - std::forward_list<_Node> containing the elements + * - std::vector::iterator> representing the buckets + * + * The non-empty buckets contain the node before the first node in the + * bucket. This design makes it possible to implement something like a + * std::forward_list::insert_after on container insertion and + * std::forward_list::erase_after on container erase + * calls. _M_before_begin is equivalent to + * std::forward_list::before_begin. Empty buckets contain + * nullptr. Note that one of the non-empty buckets contains + * &_M_before_begin which is not a dereferenceable node so the + * node pointer in a bucket shall never be dereferenced, only its + * next node can be. + * + * Walking through a bucket's nodes requires a check on the hash code to + * see if each node is still in the bucket. Such a design assumes a + * quite efficient hash functor and is one of the reasons it is + * highly advisable to set __cache_hash_code to true. + * + * The container iterators are simply built from nodes. This way + * incrementing the iterator is perfectly efficient independent of + * how many empty buckets there are in the container. + * + * On insert we compute the element's hash code and use it to find the + * bucket index. If the element must be inserted in an empty bucket + * we add it at the beginning of the singly linked list and make the + * bucket point to _M_before_begin. The bucket that used to point to + * _M_before_begin, if any, is updated to point to its new before + * begin node. + * + * On erase, the simple iterator design requires using the hash + * functor to get the index of the bucket to update. For this + * reason, when __cache_hash_code is set to false the hash functor must + * not throw and this is enforced by a static assertion. + * + * Functionality is implemented by decomposition into base classes, + * where the derived _Hashtable class is used in _Map_base, + * _Insert, _Rehash_base, and _Equality base classes to access the + * "this" pointer. _Hashtable_base is used in the base classes as a + * non-recursive, fully-completed-type so that detailed nested type + * information, such as iterator type and node type, can be + * used. This is similar to the "Curiously Recurring Template + * Pattern" (CRTP) technique, but uses a reconstructed, not + * explicitly passed, template pattern. + * + * Base class templates are: + * - __detail::_Hashtable_base + * - __detail::_Map_base + * - __detail::_Insert + * - __detail::_Rehash_base + * - __detail::_Equality + */ + template + class _Hashtable + : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, + _H1, _H2, _Hash, _Traits>, + public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>, + public __detail::_Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>, + public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>, + public __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits> + { + public: + typedef _Key key_type; + typedef _Value value_type; + typedef _Alloc allocator_type; + typedef _Equal key_equal; + + // mapped_type, if present, comes from _Map_base. + // hasher, if present, comes from _Hash_code_base/_Hashtable_base. + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + + private: + using __rehash_type = _RehashPolicy; + using __rehash_state = typename __rehash_type::_State; + + using __traits_type = _Traits; + using __hash_cached = typename __traits_type::__hash_cached; + using __constant_iterators = typename __traits_type::__constant_iterators; + using __unique_keys = typename __traits_type::__unique_keys; + + using __key_extract = typename std::conditional< + __constant_iterators::value, + __detail::_Identity, + __detail::_Select1st>::type; + + using __hashtable_base = __detail:: + _Hashtable_base<_Key, _Value, _ExtractKey, + _Equal, _H1, _H2, _Hash, _Traits>; + + using __hash_code_base = typename __hashtable_base::__hash_code_base; + using __hash_code = typename __hashtable_base::__hash_code; + using __node_type = typename __hashtable_base::__node_type; + using __node_base = typename __hashtable_base::__node_base; + using __bucket_type = typename __hashtable_base::__bucket_type; + using __ireturn_type = typename __hashtable_base::__ireturn_type; + using __iconv_type = typename __hashtable_base::__iconv_type; + + using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc, + _ExtractKey, _Equal, + _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + using __eq_base = __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + // Metaprogramming for picking apart hash caching. + using __hash_noexcept = __detail::__is_noexcept_hash<_Key, _H1>; + + template + using __if_hash_cached = __or_<__not_<__hash_cached>, _Cond>; + + template + using __if_hash_not_cached = __or_<__hash_cached, _Cond>; + + // Compile-time diagnostics. + + // When hash codes are not cached the hash functor shall not + // throw because it is used in methods (erase, swap...) that + // shall not throw. + static_assert(__if_hash_not_cached<__hash_noexcept>::value, + "Cache the hash code" + " or qualify your hash functor with noexcept"); + + // Following two static assertions are necessary to guarantee + // that local_iterator will be default constructible. + + // When hash codes are cached local iterator inherits from H2 functor + // which must then be default constructible. + static_assert(__if_hash_cached>::value, + "Functor used to map hash code to bucket index" + " must be default constructible"); + + // When hash codes are not cached local iterator inherits from + // __hash_code_base above to compute node bucket index so it has to be + // default constructible. + static_assert(__if_hash_not_cached< + is_default_constructible< + // We use _Hashtable_ebo_helper to access the protected + // default constructor. + __detail::_Hashtable_ebo_helper<0, __hash_code_base>>>::value, + "Cache the hash code or make functors involved in hash code" + " and bucket index computation default constructible"); + + // When hash codes are not cached local iterator inherits from + // __hash_code_base above to compute node bucket index so it has to be + // assignable. + static_assert(__if_hash_not_cached< + is_copy_assignable<__hash_code_base>>::value, + "Cache the hash code or make functors involved in hash code" + " and bucket index computation copy assignable"); + + public: + template + friend struct __detail::_Map_base; + + template + friend struct __detail::_Insert_base; + + template + friend struct __detail::_Insert; + + using size_type = typename __hashtable_base::size_type; + using difference_type = typename __hashtable_base::difference_type; + + using iterator = typename __hashtable_base::iterator; + using const_iterator = typename __hashtable_base::const_iterator; + + using local_iterator = typename __hashtable_base::local_iterator; + using const_local_iterator = typename __hashtable_base:: + const_local_iterator; + + private: + typedef typename _Alloc::template rebind<__node_type>::other + _Node_allocator_type; + typedef typename _Alloc::template rebind<__bucket_type>::other + _Bucket_allocator_type; + + using __before_begin = __detail::_Before_begin<_Node_allocator_type>; + + __bucket_type* _M_buckets; + size_type _M_bucket_count; + __before_begin _M_bbegin; + size_type _M_element_count; + _RehashPolicy _M_rehash_policy; + + _Node_allocator_type& + _M_node_allocator() + { return _M_bbegin; } + + const _Node_allocator_type& + _M_node_allocator() const + { return _M_bbegin; } + + __node_base& + _M_before_begin() + { return _M_bbegin._M_node; } + + const __node_base& + _M_before_begin() const + { return _M_bbegin._M_node; } + + template + __node_type* + _M_allocate_node(_Args&&... __args); + + void + _M_deallocate_node(__node_type* __n); + + // Deallocate the linked list of nodes pointed to by __n + void + _M_deallocate_nodes(__node_type* __n); + + __bucket_type* + _M_allocate_buckets(size_type __n); + + void + _M_deallocate_buckets(__bucket_type*, size_type __n); + + // Gets bucket begin, deals with the fact that non-empty buckets contain + // their before begin node. + __node_type* + _M_bucket_begin(size_type __bkt) const; + + __node_type* + _M_begin() const + { return static_cast<__node_type*>(_M_before_begin()._M_nxt); } + + public: + // Constructor, destructor, assignment, swap + _Hashtable(size_type __bucket_hint, + const _H1&, const _H2&, const _Hash&, + const _Equal&, const _ExtractKey&, + const allocator_type&); + + template + _Hashtable(_InputIterator __first, _InputIterator __last, + size_type __bucket_hint, + const _H1&, const _H2&, const _Hash&, + const _Equal&, const _ExtractKey&, + const allocator_type&); + + _Hashtable(const _Hashtable&); + + _Hashtable(_Hashtable&&); + + // Use delegating constructors. + explicit + _Hashtable(size_type __n = 10, + const _H1& __hf = _H1(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Hashtable(__n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), __eql, + __key_extract(), __a) + { } + + template + _Hashtable(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const _H1& __hf = _H1(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Hashtable(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), __eql, + __key_extract(), __a) + { } + + _Hashtable(initializer_list __l, + size_type __n = 0, + const _H1& __hf = _H1(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Hashtable(__l.begin(), __l.end(), __n, __hf, + __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), __eql, + __key_extract(), __a) + { } + + _Hashtable& + operator=(const _Hashtable& __ht) + { + _Hashtable __tmp(__ht); + this->swap(__tmp); + return *this; + } + + _Hashtable& + operator=(_Hashtable&& __ht) + { + // NB: DR 1204. + // NB: DR 675. + this->clear(); + this->swap(__ht); + return *this; + } + + _Hashtable& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l.begin(), __l.end()); + return *this; + } + + ~_Hashtable() noexcept; + + void swap(_Hashtable&); + + // Basic container operations + iterator + begin() noexcept + { return iterator(_M_begin()); } + + const_iterator + begin() const noexcept + { return const_iterator(_M_begin()); } + + iterator + end() noexcept + { return iterator(nullptr); } + + const_iterator + end() const noexcept + { return const_iterator(nullptr); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_M_begin()); } + + const_iterator + cend() const noexcept + { return const_iterator(nullptr); } + + size_type + size() const noexcept + { return _M_element_count; } + + bool + empty() const noexcept + { return size() == 0; } + + allocator_type + get_allocator() const noexcept + { return allocator_type(_M_node_allocator()); } + + size_type + max_size() const noexcept + { return _M_node_allocator().max_size(); } + + // Observers + key_equal + key_eq() const + { return this->_M_eq(); } + + // hash_function, if present, comes from _Hash_code_base. + + // Bucket operations + size_type + bucket_count() const noexcept + { return _M_bucket_count; } + + size_type + max_bucket_count() const noexcept + { return max_size(); } + + size_type + bucket_size(size_type __n) const + { return std::distance(begin(__n), end(__n)); } + + size_type + bucket(const key_type& __k) const + { return _M_bucket_index(__k, this->_M_hash_code(__k)); } + + local_iterator + begin(size_type __n) + { + return local_iterator(*this, _M_bucket_begin(__n), + __n, _M_bucket_count); + } + + local_iterator + end(size_type __n) + { return local_iterator(*this, nullptr, __n, _M_bucket_count); } + + const_local_iterator + begin(size_type __n) const + { + return const_local_iterator(*this, _M_bucket_begin(__n), + __n, _M_bucket_count); + } + + const_local_iterator + end(size_type __n) const + { return const_local_iterator(*this, nullptr, __n, _M_bucket_count); } + + // DR 691. + const_local_iterator + cbegin(size_type __n) const + { + return const_local_iterator(*this, _M_bucket_begin(__n), + __n, _M_bucket_count); + } + + const_local_iterator + cend(size_type __n) const + { return const_local_iterator(*this, nullptr, __n, _M_bucket_count); } + + float + load_factor() const noexcept + { + return static_cast(size()) / static_cast(bucket_count()); + } + + // max_load_factor, if present, comes from _Rehash_base. + + // Generalization of max_load_factor. Extension, not found in + // TR1. Only useful if _RehashPolicy is something other than + // the default. + const _RehashPolicy& + __rehash_policy() const + { return _M_rehash_policy; } + + void + __rehash_policy(const _RehashPolicy&); + + // Lookup. + iterator + find(const key_type& __k); + + const_iterator + find(const key_type& __k) const; + + size_type + count(const key_type& __k) const; + + std::pair + equal_range(const key_type& __k); + + std::pair + equal_range(const key_type& __k) const; + + protected: + // Bucket index computation helpers. + size_type + _M_bucket_index(__node_type* __n) const + { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); } + + size_type + _M_bucket_index(const key_type& __k, __hash_code __c) const + { return __hash_code_base::_M_bucket_index(__k, __c, _M_bucket_count); } + + // Find and insert helper functions and types + // Find the node before the one matching the criteria. + __node_base* + _M_find_before_node(size_type, const key_type&, __hash_code) const; + + __node_type* + _M_find_node(size_type __bkt, const key_type& __key, + __hash_code __c) const + { + __node_base* __before_n = _M_find_before_node(__bkt, __key, __c); + if (__before_n) + return static_cast<__node_type*>(__before_n->_M_nxt); + return nullptr; + } + + // Insert a node at the beginning of a bucket. + void + _M_insert_bucket_begin(size_type, __node_type*); + + // Remove the bucket first node + void + _M_remove_bucket_begin(size_type __bkt, __node_type* __next_n, + size_type __next_bkt); + + // Get the node before __n in the bucket __bkt + __node_base* + _M_get_previous_node(size_type __bkt, __node_base* __n); + + // Insert node with hash code __code, in bucket bkt if no rehash (assumes + // no element with its key already present). Take ownership of the node, + // deallocate it on exception. + iterator + _M_insert_unique_node(size_type __bkt, __hash_code __code, + __node_type* __n); + + // Insert node with hash code __code. Take ownership of the node, + // deallocate it on exception. + iterator + _M_insert_multi_node(__hash_code __code, __node_type* __n); + + template + std::pair + _M_emplace(std::true_type, _Args&&... __args); + + template + iterator + _M_emplace(std::false_type, _Args&&... __args); + + template + std::pair + _M_insert(_Arg&&, std::true_type); + + template + iterator + _M_insert(_Arg&&, std::false_type); + + size_type + _M_erase(std::true_type, const key_type&); + + size_type + _M_erase(std::false_type, const key_type&); + + iterator + _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n); + + public: + // Emplace + template + __ireturn_type + emplace(_Args&&... __args) + { return _M_emplace(__unique_keys(), std::forward<_Args>(__args)...); } + + template + iterator + emplace_hint(const_iterator, _Args&&... __args) + { return __iconv_type()(emplace(std::forward<_Args>(__args)...)); } + + // Insert member functions via inheritance. + + // Erase + iterator + erase(const_iterator); + + // LWG 2059. + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + size_type + erase(const key_type& __k) + { return _M_erase(__unique_keys(), __k); } + + iterator + erase(const_iterator, const_iterator); + + void + clear() noexcept; + + // Set number of buckets to be appropriate for container of n element. + void rehash(size_type __n); + + // DR 1189. + // reserve, if present, comes from _Rehash_base. + + private: + // Helper rehash method used when keys are unique. + void _M_rehash_aux(size_type __n, std::true_type); + + // Helper rehash method used when keys can be non-unique. + void _M_rehash_aux(size_type __n, std::false_type); + + // Unconditionally change size of bucket array to n, restore + // hash policy state to __state on exception. + void _M_rehash(size_type __n, const __rehash_state& __state); + }; + + + // Definitions of class template _Hashtable's out-of-line member functions. + template + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>::__node_type* + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_allocate_node(_Args&&... __args) + { + __node_type* __n = _M_node_allocator().allocate(1); + __try + { + _M_node_allocator().construct(__n, std::forward<_Args>(__args)...); + return __n; + } + __catch(...) + { + _M_node_allocator().deallocate(__n, 1); + __throw_exception_again; + } + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_deallocate_node(__node_type* __n) + { + _M_node_allocator().destroy(__n); + _M_node_allocator().deallocate(__n, 1); + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_deallocate_nodes(__node_type* __n) + { + while (__n) + { + __node_type* __tmp = __n; + __n = __n->_M_next(); + _M_deallocate_node(__tmp); + } + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>::__bucket_type* + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_allocate_buckets(size_type __n) + { + _Bucket_allocator_type __alloc(_M_node_allocator()); + + __bucket_type* __p = __alloc.allocate(__n); + __builtin_memset(__p, 0, __n * sizeof(__bucket_type)); + return __p; + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_deallocate_buckets(__bucket_type* __p, size_type __n) + { + _Bucket_allocator_type __alloc(_M_node_allocator()); + __alloc.deallocate(__p, __n); + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, _RehashPolicy, + _Traits>::__node_type* + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_bucket_begin(size_type __bkt) const + { + __node_base* __n = _M_buckets[__bkt]; + return __n ? static_cast<__node_type*>(__n->_M_nxt) : nullptr; + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(size_type __bucket_hint, + const _H1& __h1, const _H2& __h2, const _Hash& __h, + const _Equal& __eq, const _ExtractKey& __exk, + const allocator_type& __a) + : __hashtable_base(__exk, __h1, __h2, __h, __eq), + __map_base(), + __rehash_base(), + _M_bucket_count(0), + _M_bbegin(__a), + _M_element_count(0), + _M_rehash_policy() + { + _M_bucket_count = _M_rehash_policy._M_next_bkt(__bucket_hint); + _M_buckets = _M_allocate_buckets(_M_bucket_count); + } + + template + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(_InputIterator __f, _InputIterator __l, + size_type __bucket_hint, + const _H1& __h1, const _H2& __h2, const _Hash& __h, + const _Equal& __eq, const _ExtractKey& __exk, + const allocator_type& __a) + : __hashtable_base(__exk, __h1, __h2, __h, __eq), + __map_base(), + __rehash_base(), + _M_bucket_count(0), + _M_bbegin(__a), + _M_element_count(0), + _M_rehash_policy() + { + auto __nb_elems = __detail::__distance_fw(__f, __l); + _M_bucket_count = + _M_rehash_policy._M_next_bkt( + std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems), + __bucket_hint)); + + _M_buckets = _M_allocate_buckets(_M_bucket_count); + __try + { + for (; __f != __l; ++__f) + this->insert(*__f); + } + __catch(...) + { + clear(); + _M_deallocate_buckets(_M_buckets, _M_bucket_count); + __throw_exception_again; + } + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(const _Hashtable& __ht) + : __hashtable_base(__ht), + __map_base(__ht), + __rehash_base(__ht), + _M_bucket_count(__ht._M_bucket_count), + _M_bbegin(__ht._M_bbegin), + _M_element_count(__ht._M_element_count), + _M_rehash_policy(__ht._M_rehash_policy) + { + _M_buckets = _M_allocate_buckets(_M_bucket_count); + __try + { + if (!__ht._M_before_begin()._M_nxt) + return; + + // First deal with the special first node pointed to by + // _M_before_begin. + const __node_type* __ht_n = __ht._M_begin(); + __node_type* __this_n = _M_allocate_node(__ht_n->_M_v); + this->_M_copy_code(__this_n, __ht_n); + _M_before_begin()._M_nxt = __this_n; + _M_buckets[_M_bucket_index(__this_n)] = &_M_before_begin(); + + // Then deal with other nodes. + __node_base* __prev_n = __this_n; + for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next()) + { + __this_n = _M_allocate_node(__ht_n->_M_v); + __prev_n->_M_nxt = __this_n; + this->_M_copy_code(__this_n, __ht_n); + size_type __bkt = _M_bucket_index(__this_n); + if (!_M_buckets[__bkt]) + _M_buckets[__bkt] = __prev_n; + __prev_n = __this_n; + } + } + __catch(...) + { + clear(); + _M_deallocate_buckets(_M_buckets, _M_bucket_count); + __throw_exception_again; + } + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(_Hashtable&& __ht) + : __hashtable_base(__ht), + __map_base(__ht), + __rehash_base(__ht), + _M_buckets(__ht._M_buckets), + _M_bucket_count(__ht._M_bucket_count), + _M_bbegin(std::move(__ht._M_bbegin)), + _M_element_count(__ht._M_element_count), + _M_rehash_policy(__ht._M_rehash_policy) + { + // Update, if necessary, bucket pointing to before begin that hasn't moved. + if (_M_begin()) + _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin(); + __ht._M_rehash_policy = _RehashPolicy(); + __ht._M_bucket_count = __ht._M_rehash_policy._M_next_bkt(0); + __ht._M_buckets = __ht._M_allocate_buckets(__ht._M_bucket_count); + __ht._M_before_begin()._M_nxt = nullptr; + __ht._M_element_count = 0; + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + ~_Hashtable() noexcept + { + clear(); + _M_deallocate_buckets(_M_buckets, _M_bucket_count); + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + swap(_Hashtable& __x) + { + // The only base class with member variables is hash_code_base. + // We define _Hash_code_base::_M_swap because different + // specializations have different members. + this->_M_swap(__x); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 431. Swapping containers with unequal allocators. + std::__alloc_swap<_Node_allocator_type>::_S_do_it(_M_node_allocator(), + __x._M_node_allocator()); + + std::swap(_M_rehash_policy, __x._M_rehash_policy); + std::swap(_M_buckets, __x._M_buckets); + std::swap(_M_bucket_count, __x._M_bucket_count); + std::swap(_M_before_begin()._M_nxt, __x._M_before_begin()._M_nxt); + std::swap(_M_element_count, __x._M_element_count); + + // Fix buckets containing the _M_before_begin pointers that + // can't be swapped. + if (_M_begin()) + _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin(); + if (__x._M_begin()) + __x._M_buckets[__x._M_bucket_index(__x._M_begin())] + = &(__x._M_before_begin()); + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + __rehash_policy(const _RehashPolicy& __pol) + { + size_type __n_bkt = __pol._M_bkt_for_elements(_M_element_count); + __n_bkt = __pol._M_next_bkt(__n_bkt); + if (__n_bkt != _M_bucket_count) + _M_rehash(__n_bkt, _M_rehash_policy._M_state()); + _M_rehash_policy = __pol; + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::iterator + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + find(const key_type& __k) + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_find_node(__n, __k, __code); + return __p ? iterator(__p) : this->end(); + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::const_iterator + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + find(const key_type& __k) const + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_find_node(__n, __k, __code); + return __p ? const_iterator(__p) : this->end(); + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::size_type + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + count(const key_type& __k) const + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_bucket_begin(__n); + if (!__p) + return 0; + + std::size_t __result = 0; + for (;; __p = __p->_M_next()) + { + if (this->_M_equals(__k, __code, __p)) + ++__result; + else if (__result) + // All equivalent values are next to each other, if we + // found a non-equivalent value after an equivalent one it + // means that we won't find any more equivalent values. + break; + if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __n) + break; + } + return __result; + } + + template + std::pair::iterator, + typename _Hashtable<_Key, _Value, _Alloc, + _ExtractKey, _Equal, _H1, + _H2, _Hash, _RehashPolicy, + _Traits>::iterator> + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + equal_range(const key_type& __k) + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_find_node(__n, __k, __code); + + if (__p) + { + __node_type* __p1 = __p->_M_next(); + while (__p1 && _M_bucket_index(__p1) == __n + && this->_M_equals(__k, __code, __p1)) + __p1 = __p1->_M_next(); + + return std::make_pair(iterator(__p), iterator(__p1)); + } + else + return std::make_pair(this->end(), this->end()); + } + + template + std::pair::const_iterator, + typename _Hashtable<_Key, _Value, _Alloc, + _ExtractKey, _Equal, _H1, + _H2, _Hash, _RehashPolicy, + _Traits>::const_iterator> + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + equal_range(const key_type& __k) const + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_find_node(__n, __k, __code); + + if (__p) + { + __node_type* __p1 = __p->_M_next(); + while (__p1 && _M_bucket_index(__p1) == __n + && this->_M_equals(__k, __code, __p1)) + __p1 = __p1->_M_next(); + + return std::make_pair(const_iterator(__p), const_iterator(__p1)); + } + else + return std::make_pair(this->end(), this->end()); + } + + // Find the node whose key compares equal to k in the bucket n. + // Return nullptr if no node is found. + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, _RehashPolicy, + _Traits>::__node_base* + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_find_before_node(size_type __n, const key_type& __k, + __hash_code __code) const + { + __node_base* __prev_p = _M_buckets[__n]; + if (!__prev_p) + return nullptr; + __node_type* __p = static_cast<__node_type*>(__prev_p->_M_nxt); + for (;; __p = __p->_M_next()) + { + if (this->_M_equals(__k, __code, __p)) + return __prev_p; + if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __n) + break; + __prev_p = __p; + } + return nullptr; + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert_bucket_begin(size_type __bkt, __node_type* __node) + { + if (_M_buckets[__bkt]) + { + // Bucket is not empty, we just need to insert the new node + // after the bucket before begin. + __node->_M_nxt = _M_buckets[__bkt]->_M_nxt; + _M_buckets[__bkt]->_M_nxt = __node; + } + else + { + // The bucket is empty, the new node is inserted at the + // beginning of the singly-linked list and the bucket will + // contain _M_before_begin pointer. + __node->_M_nxt = _M_before_begin()._M_nxt; + _M_before_begin()._M_nxt = __node; + if (__node->_M_nxt) + // We must update former begin bucket that is pointing to + // _M_before_begin. + _M_buckets[_M_bucket_index(__node->_M_next())] = __node; + _M_buckets[__bkt] = &_M_before_begin(); + } + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_remove_bucket_begin(size_type __bkt, __node_type* __next, + size_type __next_bkt) + { + if (!__next || __next_bkt != __bkt) + { + // Bucket is now empty + // First update next bucket if any + if (__next) + _M_buckets[__next_bkt] = _M_buckets[__bkt]; + + // Second update before begin node if necessary + if (&_M_before_begin() == _M_buckets[__bkt]) + _M_before_begin()._M_nxt = __next; + _M_buckets[__bkt] = nullptr; + } + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, _RehashPolicy, + _Traits>::__node_base* + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_get_previous_node(size_type __bkt, __node_base* __n) + { + __node_base* __prev_n = _M_buckets[__bkt]; + while (__prev_n->_M_nxt != __n) + __prev_n = __prev_n->_M_nxt; + return __prev_n; + } + + template + template + std::pair::iterator, bool> + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_emplace(std::true_type, _Args&&... __args) + { + // First build the node to get access to the hash code + __node_type* __node = _M_allocate_node(std::forward<_Args>(__args)...); + const key_type& __k = this->_M_extract()(__node->_M_v); + __hash_code __code; + __try + { + __code = this->_M_hash_code(__k); + } + __catch(...) + { + _M_deallocate_node(__node); + __throw_exception_again; + } + + size_type __bkt = _M_bucket_index(__k, __code); + if (__node_type* __p = _M_find_node(__bkt, __k, __code)) + { + // There is already an equivalent node, no insertion + _M_deallocate_node(__node); + return std::make_pair(iterator(__p), false); + } + + // Insert the node + return std::make_pair(_M_insert_unique_node(__bkt, __code, __node), + true); + } + + template + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::iterator + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_emplace(std::false_type, _Args&&... __args) + { + // First build the node to get its hash code. + __node_type* __node = _M_allocate_node(std::forward<_Args>(__args)...); + + __hash_code __code; + __try + { + __code = this->_M_hash_code(this->_M_extract()(__node->_M_v)); + } + __catch(...) + { + _M_deallocate_node(__node); + __throw_exception_again; + } + + return _M_insert_multi_node(__code, __node); + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::iterator + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert_unique_node(size_type __bkt, __hash_code __code, + __node_type* __node) + { + const __rehash_state& __saved_state = _M_rehash_policy._M_state(); + std::pair __do_rehash + = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); + + __try + { + if (__do_rehash.first) + { + _M_rehash(__do_rehash.second, __saved_state); + __bkt = _M_bucket_index(this->_M_extract()(__node->_M_v), __code); + } + + this->_M_store_code(__node, __code); + + // Always insert at the begining of the bucket. + _M_insert_bucket_begin(__bkt, __node); + ++_M_element_count; + return iterator(__node); + } + __catch(...) + { + _M_deallocate_node(__node); + __throw_exception_again; + } + } + + // Insert node, in bucket bkt if no rehash (assumes no element with its key + // already present). Take ownership of the node, deallocate it on exception. + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::iterator + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert_multi_node(__hash_code __code, __node_type* __node) + { + const __rehash_state& __saved_state = _M_rehash_policy._M_state(); + std::pair __do_rehash + = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); + + __try + { + if (__do_rehash.first) + _M_rehash(__do_rehash.second, __saved_state); + + this->_M_store_code(__node, __code); + const key_type& __k = this->_M_extract()(__node->_M_v); + size_type __bkt = _M_bucket_index(__k, __code); + + // Find the node before an equivalent one. + __node_base* __prev = _M_find_before_node(__bkt, __k, __code); + if (__prev) + { + // Insert after the node before the equivalent one. + __node->_M_nxt = __prev->_M_nxt; + __prev->_M_nxt = __node; + } + else + // The inserted node has no equivalent in the + // hashtable. We must insert the new node at the + // beginning of the bucket to preserve equivalent + // elements' relative positions. + _M_insert_bucket_begin(__bkt, __node); + ++_M_element_count; + return iterator(__node); + } + __catch(...) + { + _M_deallocate_node(__node); + __throw_exception_again; + } + } + + // Insert v if no element with its key is already present. + template + template + std::pair::iterator, bool> + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert(_Arg&& __v, std::true_type) + { + const key_type& __k = this->_M_extract()(__v); + __hash_code __code = this->_M_hash_code(__k); + size_type __bkt = _M_bucket_index(__k, __code); + + __node_type* __n = _M_find_node(__bkt, __k, __code); + if (__n) + return std::make_pair(iterator(__n), false); + + __n = _M_allocate_node(std::forward<_Arg>(__v)); + return std::make_pair(_M_insert_unique_node(__bkt, __code, __n), true); + } + + // Insert v unconditionally. + template + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::iterator + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert(_Arg&& __v, std::false_type) + { + // First compute the hash code so that we don't do anything if it + // throws. + __hash_code __code = this->_M_hash_code(this->_M_extract()(__v)); + + // Second allocate new node so that we don't rehash if it throws. + __node_type* __node = _M_allocate_node(std::forward<_Arg>(__v)); + + return _M_insert_multi_node(__code, __node); + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::iterator + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + erase(const_iterator __it) + { + __node_type* __n = __it._M_cur; + std::size_t __bkt = _M_bucket_index(__n); + + // Look for previous node to unlink it from the erased one, this + // is why we need buckets to contain the before begin to make + // this search fast. + __node_base* __prev_n = _M_get_previous_node(__bkt, __n); + return _M_erase(__bkt, __prev_n, __n); + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::iterator + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n) + { + if (__prev_n == _M_buckets[__bkt]) + _M_remove_bucket_begin(__bkt, __n->_M_next(), + __n->_M_nxt ? _M_bucket_index(__n->_M_next()) : 0); + else if (__n->_M_nxt) + { + size_type __next_bkt = _M_bucket_index(__n->_M_next()); + if (__next_bkt != __bkt) + _M_buckets[__next_bkt] = __prev_n; + } + + __prev_n->_M_nxt = __n->_M_nxt; + iterator __result(__n->_M_next()); + _M_deallocate_node(__n); + --_M_element_count; + + return __result; + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::size_type + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_erase(std::true_type, const key_type& __k) + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __bkt = _M_bucket_index(__k, __code); + + // Look for the node before the first matching node. + __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code); + if (!__prev_n) + return 0; + + // We found a matching node, erase it. + __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt); + _M_erase(__bkt, __prev_n, __n); + return 1; + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::size_type + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_erase(std::false_type, const key_type& __k) + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __bkt = _M_bucket_index(__k, __code); + + // Look for the node before the first matching node. + __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code); + if (!__prev_n) + return 0; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 526. Is it undefined if a function in the standard changes + // in parameters? + // We use one loop to find all matching nodes and another to deallocate + // them so that the key stays valid during the first loop. It might be + // invalidated indirectly when destroying nodes. + __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt); + __node_type* __n_last = __n; + std::size_t __n_last_bkt = __bkt; + do + { + __n_last = __n_last->_M_next(); + if (!__n_last) + break; + __n_last_bkt = _M_bucket_index(__n_last); + } + while (__n_last_bkt == __bkt && this->_M_equals(__k, __code, __n_last)); + + // Deallocate nodes. + size_type __result = 0; + do + { + __node_type* __p = __n->_M_next(); + _M_deallocate_node(__n); + __n = __p; + ++__result; + --_M_element_count; + } + while (__n != __n_last); + + if (__prev_n == _M_buckets[__bkt]) + _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt); + else if (__n_last && __n_last_bkt != __bkt) + _M_buckets[__n_last_bkt] = __prev_n; + __prev_n->_M_nxt = __n_last; + return __result; + } + + template + typename _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + _Traits>::iterator + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + erase(const_iterator __first, const_iterator __last) + { + __node_type* __n = __first._M_cur; + __node_type* __last_n = __last._M_cur; + if (__n == __last_n) + return iterator(__n); + + std::size_t __bkt = _M_bucket_index(__n); + + __node_base* __prev_n = _M_get_previous_node(__bkt, __n); + bool __is_bucket_begin = __n == _M_bucket_begin(__bkt); + std::size_t __n_bkt = __bkt; + for (;;) + { + do + { + __node_type* __tmp = __n; + __n = __n->_M_next(); + _M_deallocate_node(__tmp); + --_M_element_count; + if (!__n) + break; + __n_bkt = _M_bucket_index(__n); + } + while (__n != __last_n && __n_bkt == __bkt); + if (__is_bucket_begin) + _M_remove_bucket_begin(__bkt, __n, __n_bkt); + if (__n == __last_n) + break; + __is_bucket_begin = true; + __bkt = __n_bkt; + } + + if (__n && (__n_bkt != __bkt || __is_bucket_begin)) + _M_buckets[__n_bkt] = __prev_n; + __prev_n->_M_nxt = __n; + return iterator(__n); + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + clear() noexcept + { + _M_deallocate_nodes(_M_begin()); + __builtin_memset(_M_buckets, 0, _M_bucket_count * sizeof(__bucket_type)); + _M_element_count = 0; + _M_before_begin()._M_nxt = nullptr; + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + rehash(size_type __n) + { + const __rehash_state& __saved_state = _M_rehash_policy._M_state(); + std::size_t __buckets + = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1), + __n); + __buckets = _M_rehash_policy._M_next_bkt(__buckets); + + if (__buckets != _M_bucket_count) + _M_rehash(__buckets, __saved_state); + else + // No rehash, restore previous state to keep a consistent state. + _M_rehash_policy._M_reset(__saved_state); + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_rehash(size_type __n, const __rehash_state& __state) + { + __try + { + _M_rehash_aux(__n, __unique_keys()); + } + __catch(...) + { + // A failure here means that buckets allocation failed. We only + // have to restore hash policy previous state. + _M_rehash_policy._M_reset(__state); + __throw_exception_again; + } + } + + // Rehash when there is no equivalent elements. + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_rehash_aux(size_type __n, std::true_type) + { + __bucket_type* __new_buckets = _M_allocate_buckets(__n); + __node_type* __p = _M_begin(); + _M_before_begin()._M_nxt = nullptr; + std::size_t __bbegin_bkt = 0; + while (__p) + { + __node_type* __next = __p->_M_next(); + std::size_t __bkt = __hash_code_base::_M_bucket_index(__p, __n); + if (!__new_buckets[__bkt]) + { + __p->_M_nxt = _M_before_begin()._M_nxt; + _M_before_begin()._M_nxt = __p; + __new_buckets[__bkt] = &_M_before_begin(); + if (__p->_M_nxt) + __new_buckets[__bbegin_bkt] = __p; + __bbegin_bkt = __bkt; + } + else + { + __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; + __new_buckets[__bkt]->_M_nxt = __p; + } + __p = __next; + } + _M_deallocate_buckets(_M_buckets, _M_bucket_count); + _M_bucket_count = __n; + _M_buckets = __new_buckets; + } + + // Rehash when there can be equivalent elements, preserve their relative + // order. + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_rehash_aux(size_type __n, std::false_type) + { + __bucket_type* __new_buckets = _M_allocate_buckets(__n); + + __node_type* __p = _M_begin(); + _M_before_begin()._M_nxt = nullptr; + std::size_t __bbegin_bkt = 0; + std::size_t __prev_bkt = 0; + __node_type* __prev_p = nullptr; + bool __check_bucket = false; + + while (__p) + { + __node_type* __next = __p->_M_next(); + std::size_t __bkt = __hash_code_base::_M_bucket_index(__p, __n); + + if (__prev_p && __prev_bkt == __bkt) + { + // Previous insert was already in this bucket, we insert after + // the previously inserted one to preserve equivalent elements + // relative order. + __p->_M_nxt = __prev_p->_M_nxt; + __prev_p->_M_nxt = __p; + + // Inserting after a node in a bucket require to check that we + // haven't change the bucket last node, in this case next + // bucket containing its before begin node must be updated. We + // schedule a check as soon as we move out of the sequence of + // equivalent nodes to limit the number of checks. + __check_bucket = true; + } + else + { + if (__check_bucket) + { + // Check if we shall update the next bucket because of + // insertions into __prev_bkt bucket. + if (__prev_p->_M_nxt) + { + std::size_t __next_bkt + = __hash_code_base::_M_bucket_index(__prev_p->_M_next(), + __n); + if (__next_bkt != __prev_bkt) + __new_buckets[__next_bkt] = __prev_p; + } + __check_bucket = false; + } + + if (!__new_buckets[__bkt]) + { + __p->_M_nxt = _M_before_begin()._M_nxt; + _M_before_begin()._M_nxt = __p; + __new_buckets[__bkt] = &_M_before_begin(); + if (__p->_M_nxt) + __new_buckets[__bbegin_bkt] = __p; + __bbegin_bkt = __bkt; + } + else + { + __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; + __new_buckets[__bkt]->_M_nxt = __p; + } + } + __prev_p = __p; + __prev_bkt = __bkt; + __p = __next; + } + + if (__check_bucket && __prev_p->_M_nxt) + { + std::size_t __next_bkt + = __hash_code_base::_M_bucket_index(__prev_p->_M_next(), __n); + if (__next_bkt != __prev_bkt) + __new_buckets[__next_bkt] = __prev_p; + } + + _M_deallocate_buckets(_M_buckets, _M_bucket_count); + _M_bucket_count = __n; + _M_buckets = __new_buckets; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // _HASHTABLE_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hashtable_policy.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hashtable_policy.h new file mode 100644 index 0000000..6f9b843 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/hashtable_policy.h @@ -0,0 +1,1670 @@ +// Internal policy header for unordered_set and unordered_map -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/hashtable_policy.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. + * @headername{unordered_map,unordered_set} + */ + +#ifndef _HASHTABLE_POLICY_H +#define _HASHTABLE_POLICY_H 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + class _Hashtable; + +_GLIBCXX_END_NAMESPACE_VERSION + +namespace __detail +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup hashtable-detail Base and Implementation Classes + * @ingroup unordered_associative_containers + * @{ + */ + template + struct _Hashtable_base; + + // Helper function: return distance(first, last) for forward + // iterators, or 0 for input iterators. + template + inline typename std::iterator_traits<_Iterator>::difference_type + __distance_fw(_Iterator __first, _Iterator __last, + std::input_iterator_tag) + { return 0; } + + template + inline typename std::iterator_traits<_Iterator>::difference_type + __distance_fw(_Iterator __first, _Iterator __last, + std::forward_iterator_tag) + { return std::distance(__first, __last); } + + template + inline typename std::iterator_traits<_Iterator>::difference_type + __distance_fw(_Iterator __first, _Iterator __last) + { + typedef typename std::iterator_traits<_Iterator>::iterator_category _Tag; + return __distance_fw(__first, __last, _Tag()); + } + + // Helper type used to detect whether the hash functor is noexcept. + template + struct __is_noexcept_hash : std::integral_constant()(declval()))> + { }; + + struct _Identity + { + template + _Tp&& + operator()(_Tp&& __x) const + { return std::forward<_Tp>(__x); } + }; + + struct _Select1st + { + template + auto + operator()(_Tp&& __x) const + -> decltype(std::get<0>(std::forward<_Tp>(__x))) + { return std::get<0>(std::forward<_Tp>(__x)); } + }; + + // Auxiliary types used for all instantiations of _Hashtable nodes + // and iterators. + + /** + * struct _Hashtable_traits + * + * Important traits for hash tables. + * + * @tparam _Cache_hash_code Boolean value. True if the value of + * the hash function is stored along with the value. This is a + * time-space tradeoff. Storing it may improve lookup speed by + * reducing the number of times we need to call the _Equal + * function. + * + * @tparam _Constant_iterators Boolean value. True if iterator and + * const_iterator are both constant iterator types. This is true + * for unordered_set and unordered_multiset, false for + * unordered_map and unordered_multimap. + * + * @tparam _Unique_keys Boolean value. True if the return value + * of _Hashtable::count(k) is always at most one, false if it may + * be an arbitrary number. This is true for unordered_set and + * unordered_map, false for unordered_multiset and + * unordered_multimap. + */ + template + struct _Hashtable_traits + { + template + using __bool_constant = integral_constant; + + using __hash_cached = __bool_constant<_Cache_hash_code>; + using __constant_iterators = __bool_constant<_Constant_iterators>; + using __unique_keys = __bool_constant<_Unique_keys>; + }; + + /** + * struct _Hash_node_base + * + * Nodes, used to wrap elements stored in the hash table. A policy + * template parameter of class template _Hashtable controls whether + * nodes also store a hash code. In some cases (e.g. strings) this + * may be a performance win. + */ + struct _Hash_node_base + { + _Hash_node_base* _M_nxt; + + _Hash_node_base() : _M_nxt() { } + + _Hash_node_base(_Hash_node_base* __next) : _M_nxt(__next) { } + }; + + /** + * Primary template struct _Hash_node. + */ + template + struct _Hash_node; + + /** + * Specialization for nodes with caches, struct _Hash_node. + * + * Base class is __detail::_Hash_node_base. + */ + template + struct _Hash_node<_Value, true> : _Hash_node_base + { + _Value _M_v; + std::size_t _M_hash_code; + + template + _Hash_node(_Args&&... __args) + : _M_v(std::forward<_Args>(__args)...), _M_hash_code() { } + + _Hash_node* + _M_next() const { return static_cast<_Hash_node*>(_M_nxt); } + }; + + /** + * Specialization for nodes without caches, struct _Hash_node. + * + * Base class is __detail::_Hash_node_base. + */ + template + struct _Hash_node<_Value, false> : _Hash_node_base + { + _Value _M_v; + + template + _Hash_node(_Args&&... __args) + : _M_v(std::forward<_Args>(__args)...) { } + + _Hash_node* + _M_next() const { return static_cast<_Hash_node*>(_M_nxt); } + }; + + /// Base class for node iterators. + template + struct _Node_iterator_base + { + using __node_type = _Hash_node<_Value, _Cache_hash_code>; + + __node_type* _M_cur; + + _Node_iterator_base(__node_type* __p) + : _M_cur(__p) { } + + void + _M_incr() + { _M_cur = _M_cur->_M_next(); } + }; + + template + inline bool + operator==(const _Node_iterator_base<_Value, _Cache_hash_code>& __x, + const _Node_iterator_base<_Value, _Cache_hash_code >& __y) + { return __x._M_cur == __y._M_cur; } + + template + inline bool + operator!=(const _Node_iterator_base<_Value, _Cache_hash_code>& __x, + const _Node_iterator_base<_Value, _Cache_hash_code>& __y) + { return __x._M_cur != __y._M_cur; } + + /// Node iterators, used to iterate through all the hashtable. + template + struct _Node_iterator + : public _Node_iterator_base<_Value, __cache> + { + private: + using __base_type = _Node_iterator_base<_Value, __cache>; + using __node_type = typename __base_type::__node_type; + + public: + typedef _Value value_type; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + using pointer = typename std::conditional<__constant_iterators, + const _Value*, _Value*>::type; + + using reference = typename std::conditional<__constant_iterators, + const _Value&, _Value&>::type; + + _Node_iterator() + : __base_type(0) { } + + explicit + _Node_iterator(__node_type* __p) + : __base_type(__p) { } + + reference + operator*() const + { return this->_M_cur->_M_v; } + + pointer + operator->() const + { return std::__addressof(this->_M_cur->_M_v); } + + _Node_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Node_iterator + operator++(int) + { + _Node_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + /// Node const_iterators, used to iterate through all the hashtable. + template + struct _Node_const_iterator + : public _Node_iterator_base<_Value, __cache> + { + private: + using __base_type = _Node_iterator_base<_Value, __cache>; + using __node_type = typename __base_type::__node_type; + + public: + typedef _Value value_type; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + typedef const _Value* pointer; + typedef const _Value& reference; + + _Node_const_iterator() + : __base_type(0) { } + + explicit + _Node_const_iterator(__node_type* __p) + : __base_type(__p) { } + + _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators, + __cache>& __x) + : __base_type(__x._M_cur) { } + + reference + operator*() const + { return this->_M_cur->_M_v; } + + pointer + operator->() const + { return std::__addressof(this->_M_cur->_M_v); } + + _Node_const_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Node_const_iterator + operator++(int) + { + _Node_const_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + // Many of class template _Hashtable's template parameters are policy + // classes. These are defaults for the policies. + + /// Default range hashing function: use division to fold a large number + /// into the range [0, N). + struct _Mod_range_hashing + { + typedef std::size_t first_argument_type; + typedef std::size_t second_argument_type; + typedef std::size_t result_type; + + result_type + operator()(first_argument_type __num, second_argument_type __den) const + { return __num % __den; } + }; + + /// Default ranged hash function H. In principle it should be a + /// function object composed from objects of type H1 and H2 such that + /// h(k, N) = h2(h1(k), N), but that would mean making extra copies of + /// h1 and h2. So instead we'll just use a tag to tell class template + /// hashtable to do that composition. + struct _Default_ranged_hash { }; + + /// Default value for rehash policy. Bucket size is (usually) the + /// smallest prime that keeps the load factor small enough. + struct _Prime_rehash_policy + { + _Prime_rehash_policy(float __z = 1.0) + : _M_max_load_factor(__z), _M_next_resize(0) { } + + float + max_load_factor() const noexcept + { return _M_max_load_factor; } + + // Return a bucket size no smaller than n. + std::size_t + _M_next_bkt(std::size_t __n) const; + + // Return a bucket count appropriate for n elements + std::size_t + _M_bkt_for_elements(std::size_t __n) const + { return __builtin_ceil(__n / (long double)_M_max_load_factor); } + + // __n_bkt is current bucket count, __n_elt is current element count, + // and __n_ins is number of elements to be inserted. Do we need to + // increase bucket count? If so, return make_pair(true, n), where n + // is the new bucket count. If not, return make_pair(false, 0). + std::pair + _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, + std::size_t __n_ins) const; + + typedef std::size_t _State; + + _State + _M_state() const + { return _M_next_resize; } + + void + _M_reset(_State __state) + { _M_next_resize = __state; } + + enum { _S_n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48 }; + + static const std::size_t _S_growth_factor = 2; + + float _M_max_load_factor; + mutable std::size_t _M_next_resize; + }; + + // Base classes for std::_Hashtable. We define these base classes + // because in some cases we want to do different things depending on + // the value of a policy class. In some cases the policy class + // affects which member functions and nested typedefs are defined; + // we handle that by specializing base class templates. Several of + // the base class templates need to access other members of class + // template _Hashtable, so we use a variant of the "Curiously + // Recurring Template Pattern" (CRTP) technique. + + /** + * Primary class template _Map_base. + * + * If the hashtable has a value type of the form pair and a + * key extraction policy (_ExtractKey) that returns the first part + * of the pair, the hashtable gets a mapped_type typedef. If it + * satisfies those criteria and also has unique keys, then it also + * gets an operator[]. + */ + template + struct _Map_base { }; + + /// Partial specialization, __unique_keys set to false. + template + struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, false> + { + using mapped_type = typename std::tuple_element<1, _Pair>::type; + }; + + /// Partial specialization, __unique_keys set to true. + template + struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true> + { + private: + using __hashtable_base = __detail::_Hashtable_base<_Key, _Pair, + _Select1st, + _Equal, _H1, _H2, _Hash, + _Traits>; + + using __hashtable = _Hashtable<_Key, _Pair, _Alloc, + _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>; + + using __hash_code = typename __hashtable_base::__hash_code; + using __node_type = typename __hashtable_base::__node_type; + + public: + using key_type = typename __hashtable_base::key_type; + using iterator = typename __hashtable_base::iterator; + using mapped_type = typename std::tuple_element<1, _Pair>::type; + + mapped_type& + operator[](const key_type& __k); + + mapped_type& + operator[](key_type&& __k); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 761. unordered_map needs an at() member function. + mapped_type& + at(const key_type& __k); + + const mapped_type& + at(const key_type& __k) const; + }; + + template + typename _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true> + ::mapped_type& + _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + operator[](const key_type& __k) + { + __hashtable* __h = static_cast<__hashtable*>(this); + __hash_code __code = __h->_M_hash_code(__k); + std::size_t __n = __h->_M_bucket_index(__k, __code); + __node_type* __p = __h->_M_find_node(__n, __k, __code); + + if (!__p) + { + __p = __h->_M_allocate_node(std::piecewise_construct, + std::tuple(__k), + std::tuple<>()); + return __h->_M_insert_unique_node(__n, __code, __p)->second; + } + + return (__p->_M_v).second; + } + + template + typename _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true> + ::mapped_type& + _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + operator[](key_type&& __k) + { + __hashtable* __h = static_cast<__hashtable*>(this); + __hash_code __code = __h->_M_hash_code(__k); + std::size_t __n = __h->_M_bucket_index(__k, __code); + __node_type* __p = __h->_M_find_node(__n, __k, __code); + + if (!__p) + { + __p = __h->_M_allocate_node(std::piecewise_construct, + std::forward_as_tuple(std::move(__k)), + std::tuple<>()); + return __h->_M_insert_unique_node(__n, __code, __p)->second; + } + + return (__p->_M_v).second; + } + + template + typename _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true> + ::mapped_type& + _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + at(const key_type& __k) + { + __hashtable* __h = static_cast<__hashtable*>(this); + __hash_code __code = __h->_M_hash_code(__k); + std::size_t __n = __h->_M_bucket_index(__k, __code); + __node_type* __p = __h->_M_find_node(__n, __k, __code); + + if (!__p) + __throw_out_of_range(__N("_Map_base::at")); + return (__p->_M_v).second; + } + + template + const typename _Map_base<_Key, _Pair, _Alloc, _Select1st, + _Equal, _H1, _H2, _Hash, _RehashPolicy, + _Traits, true>::mapped_type& + _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + at(const key_type& __k) const + { + const __hashtable* __h = static_cast(this); + __hash_code __code = __h->_M_hash_code(__k); + std::size_t __n = __h->_M_bucket_index(__k, __code); + __node_type* __p = __h->_M_find_node(__n, __k, __code); + + if (!__p) + __throw_out_of_range(__N("_Map_base::at")); + return (__p->_M_v).second; + } + + /** + * Primary class template _Insert_base. + * + * insert member functions appropriate to all _Hashtables. + */ + template + struct _Insert_base + { + using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _Traits>; + + using value_type = typename __hashtable_base::value_type; + using iterator = typename __hashtable_base::iterator; + using const_iterator = typename __hashtable_base::const_iterator; + using size_type = typename __hashtable_base::size_type; + + using __unique_keys = typename __hashtable_base::__unique_keys; + using __ireturn_type = typename __hashtable_base::__ireturn_type; + using __iconv_type = typename __hashtable_base::__iconv_type; + + __hashtable& + _M_conjure_hashtable() + { return *(static_cast<__hashtable*>(this)); } + + __ireturn_type + insert(const value_type& __v) + { + __hashtable& __h = _M_conjure_hashtable(); + return __h._M_insert(__v, __unique_keys()); + } + + iterator + insert(const_iterator, const value_type& __v) + { return __iconv_type()(insert(__v)); } + + void + insert(initializer_list __l) + { this->insert(__l.begin(), __l.end()); } + + template + void + insert(_InputIterator __first, _InputIterator __last); + }; + + template + template + void + _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>:: + insert(_InputIterator __first, _InputIterator __last) + { + using __rehash_type = typename __hashtable::__rehash_type; + using __rehash_state = typename __hashtable::__rehash_state; + using pair_type = std::pair; + + size_type __n_elt = __detail::__distance_fw(__first, __last); + + __hashtable& __h = _M_conjure_hashtable(); + __rehash_type& __rehash = __h._M_rehash_policy; + const __rehash_state& __saved_state = __rehash._M_state(); + pair_type __do_rehash = __rehash._M_need_rehash(__h._M_bucket_count, + __h._M_element_count, + __n_elt); + + if (__do_rehash.first) + __h._M_rehash(__do_rehash.second, __saved_state); + + for (; __first != __last; ++__first) + __h._M_insert(*__first, __unique_keys()); + } + + /** + * Primary class template _Insert. + * + * Select insert member functions appropriate to _Hashtable policy choices. + */ + template + struct _Insert; + + /// Specialization. + template + struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits, true, true> + : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits> + { + using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + using value_type = typename __base_type::value_type; + using iterator = typename __base_type::iterator; + using const_iterator = typename __base_type::const_iterator; + + using __unique_keys = typename __base_type::__unique_keys; + using __hashtable = typename __base_type::__hashtable; + + using __base_type::insert; + + std::pair + insert(value_type&& __v) + { + __hashtable& __h = this->_M_conjure_hashtable(); + return __h._M_insert(std::move(__v), __unique_keys()); + } + + iterator + insert(const_iterator, value_type&& __v) + { return insert(std::move(__v)).first; } + }; + + /// Specialization. + template + struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits, true, false> + : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits> + { + using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + using value_type = typename __base_type::value_type; + using iterator = typename __base_type::iterator; + using const_iterator = typename __base_type::const_iterator; + + using __unique_keys = typename __base_type::__unique_keys; + using __hashtable = typename __base_type::__hashtable; + + using __base_type::insert; + + iterator + insert(value_type&& __v) + { + __hashtable& __h = this->_M_conjure_hashtable(); + return __h._M_insert(std::move(__v), __unique_keys()); + } + + iterator + insert(const_iterator, value_type&& __v) + { return insert(std::move(__v)); } + }; + + /// Specialization. + template + struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits, false, _Unique_keys> + : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits> + { + using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + using value_type = typename __base_type::value_type; + using iterator = typename __base_type::iterator; + using const_iterator = typename __base_type::const_iterator; + + using __unique_keys = typename __base_type::__unique_keys; + using __hashtable = typename __base_type::__hashtable; + using __ireturn_type = typename __base_type::__ireturn_type; + using __iconv_type = typename __base_type::__iconv_type; + + using __base_type::insert; + + template + using __is_cons = std::is_constructible; + + template + using _IFcons = std::enable_if<__is_cons<_Pair>::value>; + + template + using _IFconsp = typename _IFcons<_Pair>::type; + + template> + __ireturn_type + insert(_Pair&& __v) + { + __hashtable& __h = this->_M_conjure_hashtable(); + return __h._M_emplace(__unique_keys(), std::forward<_Pair>(__v)); + } + + template> + iterator + insert(const_iterator, _Pair&& __v) + { return __iconv_type()(insert(std::forward<_Pair>(__v))); } + }; + + /** + * Primary class template _Rehash_base. + * + * Give hashtable the max_load_factor functions and reserve iff the + * rehash policy is _Prime_rehash_policy. + */ + template + struct _Rehash_base; + + /// Specialization. + template + struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _Prime_rehash_policy, _Traits> + { + using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _Prime_rehash_policy, _Traits>; + + float + max_load_factor() const noexcept + { + const __hashtable* __this = static_cast(this); + return __this->__rehash_policy().max_load_factor(); + } + + void + max_load_factor(float __z) + { + __hashtable* __this = static_cast<__hashtable*>(this); + __this->__rehash_policy(_Prime_rehash_policy(__z)); + } + + void + reserve(std::size_t __n) + { + __hashtable* __this = static_cast<__hashtable*>(this); + __this->rehash(__builtin_ceil(__n / max_load_factor())); + } + }; + + /** + * Primary class template _Hashtable_ebo_helper. + * + * Helper class using EBO when it is not forbidden, type is not + * final, and when it worth it, type is empty. + */ + template + struct _Hashtable_ebo_helper; + + /// Specialization using EBO. + template + struct _Hashtable_ebo_helper<_Nm, _Tp, true> + : private _Tp + { + _Hashtable_ebo_helper() = default; + + _Hashtable_ebo_helper(const _Tp& __tp) : _Tp(__tp) + { } + + static const _Tp& + _S_cget(const _Hashtable_ebo_helper& __eboh) + { return static_cast(__eboh); } + + static _Tp& + _S_get(_Hashtable_ebo_helper& __eboh) + { return static_cast<_Tp&>(__eboh); } + }; + + /// Specialization not using EBO. + template + struct _Hashtable_ebo_helper<_Nm, _Tp, false> + { + _Hashtable_ebo_helper() = default; + + _Hashtable_ebo_helper(const _Tp& __tp) : _M_tp(__tp) + { } + + static const _Tp& + _S_cget(const _Hashtable_ebo_helper& __eboh) + { return __eboh._M_tp; } + + static _Tp& + _S_get(_Hashtable_ebo_helper& __eboh) + { return __eboh._M_tp; } + + private: + _Tp _M_tp; + }; + + /** + * Primary class template _Local_iterator_base. + * + * Base class for local iterators, used to iterate within a bucket + * but not between buckets. + */ + template + struct _Local_iterator_base; + + /** + * Primary class template _Hash_code_base. + * + * Encapsulates two policy issues that aren't quite orthogonal. + * (1) the difference between using a ranged hash function and using + * the combination of a hash function and a range-hashing function. + * In the former case we don't have such things as hash codes, so + * we have a dummy type as placeholder. + * (2) Whether or not we cache hash codes. Caching hash codes is + * meaningless if we have a ranged hash function. + * + * We also put the key extraction objects here, for convenience. + * Each specialization derives from one or more of the template + * parameters to benefit from Ebo. This is important as this type + * is inherited in some cases by the _Local_iterator_base type used + * to implement local_iterator and const_local_iterator. As with + * any iterator type we prefer to make it as small as possible. + * + * Primary template is unused except as a hook for specializations. + */ + template + struct _Hash_code_base; + + /// Specialization: ranged hash function, no caching hash codes. H1 + /// and H2 are provided but ignored. We define a dummy hash code type. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false> + : private _Hashtable_ebo_helper<0, _ExtractKey>, + private _Hashtable_ebo_helper<1, _Hash> + { + private: + using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; + using __ebo_hash = _Hashtable_ebo_helper<1, _Hash>; + + protected: + typedef void* __hash_code; + typedef _Hash_node<_Value, false> __node_type; + + // We need the default constructor for the local iterators. + _Hash_code_base() = default; + + _Hash_code_base(const _ExtractKey& __ex, const _H1&, const _H2&, + const _Hash& __h) + : __ebo_extract_key(__ex), __ebo_hash(__h) { } + + __hash_code + _M_hash_code(const _Key& __key) const + { return 0; } + + std::size_t + _M_bucket_index(const _Key& __k, __hash_code, std::size_t __n) const + { return _M_ranged_hash()(__k, __n); } + + std::size_t + _M_bucket_index(const __node_type* __p, std::size_t __n) const + { return _M_ranged_hash()(_M_extract()(__p->_M_v), __n); } + + void + _M_store_code(__node_type*, __hash_code) const + { } + + void + _M_copy_code(__node_type*, const __node_type*) const + { } + + void + _M_swap(_Hash_code_base& __x) + { + std::swap(_M_extract(), __x._M_extract()); + std::swap(_M_ranged_hash(), __x._M_ranged_hash()); + } + + const _ExtractKey& + _M_extract() const { return __ebo_extract_key::_S_cget(*this); } + + _ExtractKey& + _M_extract() { return __ebo_extract_key::_S_get(*this); } + + const _Hash& + _M_ranged_hash() const { return __ebo_hash::_S_cget(*this); } + + _Hash& + _M_ranged_hash() { return __ebo_hash::_S_get(*this); } + }; + + // No specialization for ranged hash function while caching hash codes. + // That combination is meaningless, and trying to do it is an error. + + /// Specialization: ranged hash function, cache hash codes. This + /// combination is meaningless, so we provide only a declaration + /// and no definition. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, true>; + + /// Specialization: hash function and range-hashing function, no + /// caching of hash codes. + /// Provides typedef and accessor required by C++ 11. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, + _Default_ranged_hash, false> + : private _Hashtable_ebo_helper<0, _ExtractKey>, + private _Hashtable_ebo_helper<1, _H1>, + private _Hashtable_ebo_helper<2, _H2> + { + private: + using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; + using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>; + using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>; + + public: + typedef _H1 hasher; + + hasher + hash_function() const + { return _M_h1(); } + + protected: + typedef std::size_t __hash_code; + typedef _Hash_node<_Value, false> __node_type; + + // We need the default constructor for the local iterators. + _Hash_code_base() = default; + + _Hash_code_base(const _ExtractKey& __ex, + const _H1& __h1, const _H2& __h2, + const _Default_ranged_hash&) + : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { } + + __hash_code + _M_hash_code(const _Key& __k) const + { return _M_h1()(__k); } + + std::size_t + _M_bucket_index(const _Key&, __hash_code __c, std::size_t __n) const + { return _M_h2()(__c, __n); } + + std::size_t + _M_bucket_index(const __node_type* __p, + std::size_t __n) const + { return _M_h2()(_M_h1()(_M_extract()(__p->_M_v)), __n); } + + void + _M_store_code(__node_type*, __hash_code) const + { } + + void + _M_copy_code(__node_type*, const __node_type*) const + { } + + void + _M_swap(_Hash_code_base& __x) + { + std::swap(_M_extract(), __x._M_extract()); + std::swap(_M_h1(), __x._M_h1()); + std::swap(_M_h2(), __x._M_h2()); + } + + const _ExtractKey& + _M_extract() const { return __ebo_extract_key::_S_cget(*this); } + + _ExtractKey& + _M_extract() { return __ebo_extract_key::_S_get(*this); } + + const _H1& + _M_h1() const { return __ebo_h1::_S_cget(*this); } + + _H1& + _M_h1() { return __ebo_h1::_S_get(*this); } + + const _H2& + _M_h2() const { return __ebo_h2::_S_cget(*this); } + + _H2& + _M_h2() { return __ebo_h2::_S_get(*this); } + }; + + /// Specialization: hash function and range-hashing function, + /// caching hash codes. H is provided but ignored. Provides + /// typedef and accessor required by C++ 11. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, + _Default_ranged_hash, true> + : private _Hashtable_ebo_helper<0, _ExtractKey>, + private _Hashtable_ebo_helper<1, _H1>, + private _Hashtable_ebo_helper<2, _H2> + { + private: + // Gives access to _M_h2() to the local iterator implementation. + friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, _H1, _H2, + _Default_ranged_hash, true>; + + using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; + using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>; + using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>; + + public: + typedef _H1 hasher; + + hasher + hash_function() const + { return _M_h1(); } + + protected: + typedef std::size_t __hash_code; + typedef _Hash_node<_Value, true> __node_type; + + _Hash_code_base(const _ExtractKey& __ex, + const _H1& __h1, const _H2& __h2, + const _Default_ranged_hash&) + : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { } + + __hash_code + _M_hash_code(const _Key& __k) const + { return _M_h1()(__k); } + + std::size_t + _M_bucket_index(const _Key&, __hash_code __c, + std::size_t __n) const + { return _M_h2()(__c, __n); } + + std::size_t + _M_bucket_index(const __node_type* __p, std::size_t __n) const + { return _M_h2()(__p->_M_hash_code, __n); } + + void + _M_store_code(__node_type* __n, __hash_code __c) const + { __n->_M_hash_code = __c; } + + void + _M_copy_code(__node_type* __to, const __node_type* __from) const + { __to->_M_hash_code = __from->_M_hash_code; } + + void + _M_swap(_Hash_code_base& __x) + { + std::swap(_M_extract(), __x._M_extract()); + std::swap(_M_h1(), __x._M_h1()); + std::swap(_M_h2(), __x._M_h2()); + } + + const _ExtractKey& + _M_extract() const { return __ebo_extract_key::_S_cget(*this); } + + _ExtractKey& + _M_extract() { return __ebo_extract_key::_S_get(*this); } + + const _H1& + _M_h1() const { return __ebo_h1::_S_cget(*this); } + + _H1& + _M_h1() { return __ebo_h1::_S_get(*this); } + + const _H2& + _M_h2() const { return __ebo_h2::_S_cget(*this); } + + _H2& + _M_h2() { return __ebo_h2::_S_get(*this); } + }; + + /** + * Primary class template _Equal_helper. + * + */ + template + struct _Equal_helper; + + /// Specialization. + template + struct _Equal_helper<_Key, _Value, _ExtractKey, _Equal, _HashCodeType, true> + { + static bool + _S_equals(const _Equal& __eq, const _ExtractKey& __extract, + const _Key& __k, _HashCodeType __c, _Hash_node<_Value, true>* __n) + { return __c == __n->_M_hash_code && __eq(__k, __extract(__n->_M_v)); } + }; + + /// Specialization. + template + struct _Equal_helper<_Key, _Value, _ExtractKey, _Equal, _HashCodeType, false> + { + static bool + _S_equals(const _Equal& __eq, const _ExtractKey& __extract, + const _Key& __k, _HashCodeType, _Hash_node<_Value, false>* __n) + { return __eq(__k, __extract(__n->_M_v)); } + }; + + + /// Specialization. + template + struct _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, true> + : private _Hashtable_ebo_helper<0, _H2> + { + protected: + using __base_type = _Hashtable_ebo_helper<0, _H2>; + using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, true>; + + public: + _Local_iterator_base() = default; + _Local_iterator_base(const __hash_code_base& __base, + _Hash_node<_Value, true>* __p, + std::size_t __bkt, std::size_t __bkt_count) + : __base_type(__base._M_h2()), + _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) { } + + void + _M_incr() + { + _M_cur = _M_cur->_M_next(); + if (_M_cur) + { + std::size_t __bkt + = __base_type::_S_get(*this)(_M_cur->_M_hash_code, + _M_bucket_count); + if (__bkt != _M_bucket) + _M_cur = nullptr; + } + } + + _Hash_node<_Value, true>* _M_cur; + std::size_t _M_bucket; + std::size_t _M_bucket_count; + }; + + /// Specialization. + template + struct _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, false> + : private _Hash_code_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, false> + { + protected: + using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, false>; + + public: + _Local_iterator_base() = default; + _Local_iterator_base(const __hash_code_base& __base, + _Hash_node<_Value, false>* __p, + std::size_t __bkt, std::size_t __bkt_count) + : __hash_code_base(__base), + _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) { } + + void + _M_incr() + { + _M_cur = _M_cur->_M_next(); + if (_M_cur) + { + std::size_t __bkt = this->_M_bucket_index(_M_cur, _M_bucket_count); + if (__bkt != _M_bucket) + _M_cur = nullptr; + } + } + + _Hash_node<_Value, false>* _M_cur; + std::size_t _M_bucket; + std::size_t _M_bucket_count; + }; + + template + inline bool + operator==(const _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>& __x, + const _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>& __y) + { return __x._M_cur == __y._M_cur; } + + template + inline bool + operator!=(const _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>& __x, + const _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>& __y) + { return __x._M_cur != __y._M_cur; } + + /// local iterators + template + struct _Local_iterator + : public _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache> + { + private: + using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>; + using __hash_code_base = typename __base_type::__hash_code_base; + public: + typedef _Value value_type; + typedef typename std::conditional<__constant_iterators, + const _Value*, _Value*>::type + pointer; + typedef typename std::conditional<__constant_iterators, + const _Value&, _Value&>::type + reference; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Local_iterator() = default; + + _Local_iterator(const __hash_code_base& __base, + _Hash_node<_Value, __cache>* __p, + std::size_t __bkt, std::size_t __bkt_count) + : __base_type(__base, __p, __bkt, __bkt_count) + { } + + reference + operator*() const + { return this->_M_cur->_M_v; } + + pointer + operator->() const + { return std::__addressof(this->_M_cur->_M_v); } + + _Local_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Local_iterator + operator++(int) + { + _Local_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + /// local const_iterators + template + struct _Local_const_iterator + : public _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache> + { + private: + using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>; + using __hash_code_base = typename __base_type::__hash_code_base; + + public: + typedef _Value value_type; + typedef const _Value* pointer; + typedef const _Value& reference; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Local_const_iterator() = default; + + _Local_const_iterator(const __hash_code_base& __base, + _Hash_node<_Value, __cache>* __p, + std::size_t __bkt, std::size_t __bkt_count) + : __base_type(__base, __p, __bkt, __bkt_count) + { } + + _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, + __constant_iterators, + __cache>& __x) + : __base_type(__x) + { } + + reference + operator*() const + { return this->_M_cur->_M_v; } + + pointer + operator->() const + { return std::__addressof(this->_M_cur->_M_v); } + + _Local_const_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Local_const_iterator + operator++(int) + { + _Local_const_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + /** + * Primary class template _Hashtable_base. + * + * Helper class adding management of _Equal functor to + * _Hash_code_base type. + * + * Base class templates are: + * - __detail::_Hash_code_base + * - __detail::_Hashtable_ebo_helper + */ + template + struct _Hashtable_base + : public _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, + _Traits::__hash_cached::value>, + private _Hashtable_ebo_helper<0, _Equal> + { + public: + typedef _Key key_type; + typedef _Value value_type; + typedef _Equal key_equal; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + + using __traits_type = _Traits; + using __hash_cached = typename __traits_type::__hash_cached; + using __constant_iterators = typename __traits_type::__constant_iterators; + using __unique_keys = typename __traits_type::__unique_keys; + + using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, + __hash_cached::value>; + + using __hash_code = typename __hash_code_base::__hash_code; + using __node_type = typename __hash_code_base::__node_type; + + using iterator = __detail::_Node_iterator; + + using const_iterator = __detail::_Node_const_iterator; + + using local_iterator = __detail::_Local_iterator; + + using const_local_iterator = __detail::_Local_const_iterator; + + using __ireturn_type = typename std::conditional<__unique_keys::value, + std::pair, + iterator>::type; + + using __iconv_type = typename std::conditional<__unique_keys::value, + _Select1st, _Identity + >::type; + private: + using _EqualEBO = _Hashtable_ebo_helper<0, _Equal>; + using _EqualHelper = _Equal_helper<_Key, _Value, _ExtractKey, _Equal, + __hash_code, __hash_cached::value>; + + protected: + using __node_base = __detail::_Hash_node_base; + using __bucket_type = __node_base*; + + _Hashtable_base(const _ExtractKey& __ex, const _H1& __h1, const _H2& __h2, + const _Hash& __hash, const _Equal& __eq) + : __hash_code_base(__ex, __h1, __h2, __hash), _EqualEBO(__eq) + { } + + bool + _M_equals(const _Key& __k, __hash_code __c, __node_type* __n) const + { + return _EqualHelper::_S_equals(_M_eq(), this->_M_extract(), + __k, __c, __n); + } + + void + _M_swap(_Hashtable_base& __x) + { + __hash_code_base::_M_swap(__x); + std::swap(_M_eq(), __x._M_eq()); + } + + const _Equal& + _M_eq() const { return _EqualEBO::_S_cget(*this); } + + _Equal& + _M_eq() { return _EqualEBO::_S_get(*this); } + }; + + /** + * struct _Equality_base. + * + * Common types and functions for class _Equality. + */ + struct _Equality_base + { + protected: + template + static bool + _S_is_permutation(_Uiterator, _Uiterator, _Uiterator); + }; + + // See std::is_permutation in N3068. + template + bool + _Equality_base:: + _S_is_permutation(_Uiterator __first1, _Uiterator __last1, + _Uiterator __first2) + { + for (; __first1 != __last1; ++__first1, ++__first2) + if (!(*__first1 == *__first2)) + break; + + if (__first1 == __last1) + return true; + + _Uiterator __last2 = __first2; + std::advance(__last2, std::distance(__first1, __last1)); + + for (_Uiterator __it1 = __first1; __it1 != __last1; ++__it1) + { + _Uiterator __tmp = __first1; + while (__tmp != __it1 && !bool(*__tmp == *__it1)) + ++__tmp; + + // We've seen this one before. + if (__tmp != __it1) + continue; + + std::ptrdiff_t __n2 = 0; + for (__tmp = __first2; __tmp != __last2; ++__tmp) + if (*__tmp == *__it1) + ++__n2; + + if (!__n2) + return false; + + std::ptrdiff_t __n1 = 0; + for (__tmp = __it1; __tmp != __last1; ++__tmp) + if (*__tmp == *__it1) + ++__n1; + + if (__n1 != __n2) + return false; + } + return true; + } + + /** + * Primary class template _Equality. + * + * This is for implementing equality comparison for unordered + * containers, per N3068, by John Lakos and Pablo Halpern. + * Algorithmically, we follow closely the reference implementations + * therein. + */ + template + struct _Equality; + + /// Specialization. + template + struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true> + { + using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>; + + bool + _M_equal(const __hashtable&) const; + }; + + template + bool + _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + _M_equal(const __hashtable& __other) const + { + const __hashtable* __this = static_cast(this); + + if (__this->size() != __other.size()) + return false; + + for (auto __itx = __this->begin(); __itx != __this->end(); ++__itx) + { + const auto __ity = __other.find(_ExtractKey()(*__itx)); + if (__ity == __other.end() || !bool(*__ity == *__itx)) + return false; + } + return true; + } + + /// Specialization. + template + struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, false> + : public _Equality_base + { + using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>; + + bool + _M_equal(const __hashtable&) const; + }; + + template + bool + _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, false>:: + _M_equal(const __hashtable& __other) const + { + const __hashtable* __this = static_cast(this); + + if (__this->size() != __other.size()) + return false; + + for (auto __itx = __this->begin(); __itx != __this->end();) + { + const auto __xrange = __this->equal_range(_ExtractKey()(*__itx)); + const auto __yrange = __other.equal_range(_ExtractKey()(*__itx)); + + if (std::distance(__xrange.first, __xrange.second) + != std::distance(__yrange.first, __yrange.second)) + return false; + + if (!_S_is_permutation(__xrange.first, __xrange.second, + __yrange.first)) + return false; + + __itx = __xrange.second; + } + return true; + } + + /** + * This type is to combine a _Hash_node_base instance with an allocator + * instance through inheritance to benefit from EBO when possible. + */ + template + struct _Before_begin : public _NodeAlloc + { + _Hash_node_base _M_node; + + _Before_begin(const _Before_begin&) = default; + _Before_begin(_Before_begin&&) = default; + + template + _Before_begin(_Alloc&& __a) + : _NodeAlloc(std::forward<_Alloc>(__a)) + { } + }; + + //@} hashtable-detail +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __detail +} // namespace std + +#endif // _HASHTABLE_POLICY_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/indirect_array.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/indirect_array.h new file mode 100644 index 0000000..fbb8459 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/indirect_array.h @@ -0,0 +1,212 @@ +// The template and inlines for the -*- C++ -*- indirect_array class. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/indirect_array.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{valarray} + */ + +// Written by Gabriel Dos Reis + +#ifndef _INDIRECT_ARRAY_H +#define _INDIRECT_ARRAY_H 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup numeric_arrays + * @{ + */ + + /** + * @brief Reference to arbitrary subset of an array. + * + * An indirect_array is a reference to the actual elements of an array + * specified by an ordered array of indices. The way to get an + * indirect_array is to call operator[](valarray) on a valarray. + * The returned indirect_array then permits carrying operations out on the + * referenced subset of elements in the original valarray. + * + * For example, if an indirect_array is obtained using the array (4,2,0) as + * an argument, and then assigned to an array containing (1,2,3), then the + * underlying array will have array[0]==3, array[2]==2, and array[4]==1. + * + * @param Tp Element type. + */ + template + class indirect_array + { + public: + typedef _Tp value_type; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 253. valarray helper functions are almost entirely useless + + /// Copy constructor. Both slices refer to the same underlying array. + indirect_array(const indirect_array&); + + /// Assignment operator. Assigns elements to corresponding elements + /// of @a a. + indirect_array& operator=(const indirect_array&); + + /// Assign slice elements to corresponding elements of @a v. + void operator=(const valarray<_Tp>&) const; + /// Multiply slice elements by corresponding elements of @a v. + void operator*=(const valarray<_Tp>&) const; + /// Divide slice elements by corresponding elements of @a v. + void operator/=(const valarray<_Tp>&) const; + /// Modulo slice elements by corresponding elements of @a v. + void operator%=(const valarray<_Tp>&) const; + /// Add corresponding elements of @a v to slice elements. + void operator+=(const valarray<_Tp>&) const; + /// Subtract corresponding elements of @a v from slice elements. + void operator-=(const valarray<_Tp>&) const; + /// Logical xor slice elements with corresponding elements of @a v. + void operator^=(const valarray<_Tp>&) const; + /// Logical and slice elements with corresponding elements of @a v. + void operator&=(const valarray<_Tp>&) const; + /// Logical or slice elements with corresponding elements of @a v. + void operator|=(const valarray<_Tp>&) const; + /// Left shift slice elements by corresponding elements of @a v. + void operator<<=(const valarray<_Tp>&) const; + /// Right shift slice elements by corresponding elements of @a v. + void operator>>=(const valarray<_Tp>&) const; + /// Assign all slice elements to @a t. + void operator= (const _Tp&) const; + // ~indirect_array(); + + template + void operator=(const _Expr<_Dom, _Tp>&) const; + template + void operator*=(const _Expr<_Dom, _Tp>&) const; + template + void operator/=(const _Expr<_Dom, _Tp>&) const; + template + void operator%=(const _Expr<_Dom, _Tp>&) const; + template + void operator+=(const _Expr<_Dom, _Tp>&) const; + template + void operator-=(const _Expr<_Dom, _Tp>&) const; + template + void operator^=(const _Expr<_Dom, _Tp>&) const; + template + void operator&=(const _Expr<_Dom, _Tp>&) const; + template + void operator|=(const _Expr<_Dom, _Tp>&) const; + template + void operator<<=(const _Expr<_Dom, _Tp>&) const; + template + void operator>>=(const _Expr<_Dom, _Tp>&) const; + + private: + /// Copy constructor. Both slices refer to the same underlying array. + indirect_array(_Array<_Tp>, size_t, _Array); + + friend class valarray<_Tp>; + friend class gslice_array<_Tp>; + + const size_t _M_sz; + const _Array _M_index; + const _Array<_Tp> _M_array; + + // not implemented + indirect_array(); + }; + + template + inline + indirect_array<_Tp>::indirect_array(const indirect_array<_Tp>& __a) + : _M_sz(__a._M_sz), _M_index(__a._M_index), _M_array(__a._M_array) {} + + template + inline + indirect_array<_Tp>::indirect_array(_Array<_Tp> __a, size_t __s, + _Array __i) + : _M_sz(__s), _M_index(__i), _M_array(__a) {} + + template + inline indirect_array<_Tp>& + indirect_array<_Tp>::operator=(const indirect_array<_Tp>& __a) + { + std::__valarray_copy(__a._M_array, _M_sz, __a._M_index, _M_array, + _M_index); + return *this; + } + + template + inline void + indirect_array<_Tp>::operator=(const _Tp& __t) const + { std::__valarray_fill(_M_array, _M_index, _M_sz, __t); } + + template + inline void + indirect_array<_Tp>::operator=(const valarray<_Tp>& __v) const + { std::__valarray_copy(_Array<_Tp>(__v), _M_sz, _M_array, _M_index); } + + template + template + inline void + indirect_array<_Tp>::operator=(const _Expr<_Dom, _Tp>& __e) const + { std::__valarray_copy(__e, _M_sz, _M_array, _M_index); } + +#undef _DEFINE_VALARRAY_OPERATOR +#define _DEFINE_VALARRAY_OPERATOR(_Op, _Name) \ + template \ + inline void \ + indirect_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const\ + { \ + _Array_augmented_##_Name(_M_array, _M_index, _Array<_Tp>(__v), _M_sz); \ + } \ + \ + template \ + template \ + inline void \ + indirect_array<_Tp>::operator _Op##=(const _Expr<_Dom,_Tp>& __e) const\ + { \ + _Array_augmented_##_Name(_M_array, _M_index, __e, _M_sz); \ + } + +_DEFINE_VALARRAY_OPERATOR(*, __multiplies) +_DEFINE_VALARRAY_OPERATOR(/, __divides) +_DEFINE_VALARRAY_OPERATOR(%, __modulus) +_DEFINE_VALARRAY_OPERATOR(+, __plus) +_DEFINE_VALARRAY_OPERATOR(-, __minus) +_DEFINE_VALARRAY_OPERATOR(^, __bitwise_xor) +_DEFINE_VALARRAY_OPERATOR(&, __bitwise_and) +_DEFINE_VALARRAY_OPERATOR(|, __bitwise_or) +_DEFINE_VALARRAY_OPERATOR(<<, __shift_left) +_DEFINE_VALARRAY_OPERATOR(>>, __shift_right) + +#undef _DEFINE_VALARRAY_OPERATOR + + // @} group numeric_arrays + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _INDIRECT_ARRAY_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ios_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ios_base.h new file mode 100644 index 0000000..327b9a4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ios_base.h @@ -0,0 +1,975 @@ +// Iostreams base classes -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ios_base.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// +// ISO C++ 14882: 27.4 Iostreams base classes +// + +#ifndef _IOS_BASE_H +#define _IOS_BASE_H 1 + +#pragma GCC system_header + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // The following definitions of bitmask types are enums, not ints, + // as permitted (but not required) in the standard, in order to provide + // better type safety in iostream calls. A side effect is that + // expressions involving them are no longer compile-time constants. + 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 _GLIBCXX_CONSTEXPR _Ios_Fmtflags + operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) + { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } + + inline _GLIBCXX_CONSTEXPR _Ios_Fmtflags + operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) + { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } + + inline _GLIBCXX_CONSTEXPR _Ios_Fmtflags + operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) + { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } + + inline _GLIBCXX_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 _GLIBCXX_CONSTEXPR _Ios_Openmode + operator&(_Ios_Openmode __a, _Ios_Openmode __b) + { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } + + inline _GLIBCXX_CONSTEXPR _Ios_Openmode + operator|(_Ios_Openmode __a, _Ios_Openmode __b) + { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } + + inline _GLIBCXX_CONSTEXPR _Ios_Openmode + operator^(_Ios_Openmode __a, _Ios_Openmode __b) + { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } + + inline _GLIBCXX_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 _GLIBCXX_CONSTEXPR _Ios_Iostate + operator&(_Ios_Iostate __a, _Ios_Iostate __b) + { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } + + inline _GLIBCXX_CONSTEXPR _Ios_Iostate + operator|(_Ios_Iostate __a, _Ios_Iostate __b) + { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } + + inline _GLIBCXX_CONSTEXPR _Ios_Iostate + operator^(_Ios_Iostate __a, _Ios_Iostate __b) + { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } + + inline _GLIBCXX_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 = _GLIBCXX_STDIO_SEEK_CUR, + _S_end = _GLIBCXX_STDIO_SEEK_END, + _S_ios_seekdir_end = 1L << 16 + }; + + // 27.4.2 Class ios_base + /** + * @brief The base of the I/O class hierarchy. + * @ingroup io + * + * This class defines everything that can be defined about I/O that does + * not depend on the type of characters being input or output. Most + * people will only see @c ios_base when they need to specify the full + * name of the various I/O flags (e.g., the openmodes). + */ + class ios_base + { + public: + + /** + * @brief These are thrown to indicate problems with io. + * @ingroup exceptions + * + * 27.4.2.1.1 Class ios_base::failure + */ + class failure : public exception + { + public: + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 48. Use of non-existent exception constructor + explicit + failure(const string& __str) throw(); + + // This declaration is not useless: + // http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Vague-Linkage.html + virtual + ~failure() throw(); + + virtual const char* + what() const throw(); + + private: + string _M_msg; + }; + + // 27.4.2.1.2 Type ios_base::fmtflags + /** + * @brief This is a bitmask type. + * + * @c @a _Ios_Fmtflags is implementation-defined, but it is valid to + * perform bitwise operations on these values and expect the Right + * Thing to happen. Defined objects of type fmtflags are: + * - boolalpha + * - dec + * - fixed + * - hex + * - internal + * - left + * - oct + * - right + * - scientific + * - showbase + * - showpoint + * - showpos + * - skipws + * - unitbuf + * - uppercase + * - adjustfield + * - basefield + * - floatfield + */ + typedef _Ios_Fmtflags fmtflags; + + /// Insert/extract @c bool in alphabetic rather than numeric format. + static const fmtflags boolalpha = _S_boolalpha; + + /// Converts integer input or generates integer output in decimal base. + static const fmtflags dec = _S_dec; + + /// Generate floating-point output in fixed-point notation. + static const fmtflags fixed = _S_fixed; + + /// Converts integer input or generates integer output in hexadecimal base. + static const fmtflags hex = _S_hex; + + /// Adds fill characters at a designated internal point in certain + /// generated output, or identical to @c right if no such point is + /// designated. + static const fmtflags internal = _S_internal; + + /// Adds fill characters on the right (final positions) of certain + /// generated output. (I.e., the thing you print is flush left.) + static const fmtflags left = _S_left; + + /// Converts integer input or generates integer output in octal base. + static const fmtflags oct = _S_oct; + + /// Adds fill characters on the left (initial positions) of certain + /// generated output. (I.e., the thing you print is flush right.) + static const fmtflags right = _S_right; + + /// Generates floating-point output in scientific notation. + static const fmtflags scientific = _S_scientific; + + /// Generates a prefix indicating the numeric base of generated integer + /// output. + static const fmtflags showbase = _S_showbase; + + /// Generates a decimal-point character unconditionally in generated + /// floating-point output. + static const fmtflags showpoint = _S_showpoint; + + /// Generates a + sign in non-negative generated numeric output. + static const fmtflags showpos = _S_showpos; + + /// Skips leading white space before certain input operations. + static const fmtflags skipws = _S_skipws; + + /// Flushes output after each output operation. + static const fmtflags unitbuf = _S_unitbuf; + + /// Replaces certain lowercase letters with their uppercase equivalents + /// in generated output. + static const fmtflags uppercase = _S_uppercase; + + /// A mask of left|right|internal. Useful for the 2-arg form of @c setf. + static const fmtflags adjustfield = _S_adjustfield; + + /// A mask of dec|oct|hex. Useful for the 2-arg form of @c setf. + static const fmtflags basefield = _S_basefield; + + /// A mask of scientific|fixed. Useful for the 2-arg form of @c setf. + static const fmtflags floatfield = _S_floatfield; + + // 27.4.2.1.3 Type ios_base::iostate + /** + * @brief This is a bitmask type. + * + * @c @a _Ios_Iostate is implementation-defined, but it is valid to + * perform bitwise operations on these values and expect the Right + * Thing to happen. Defined objects of type iostate are: + * - badbit + * - eofbit + * - failbit + * - goodbit + */ + typedef _Ios_Iostate iostate; + + /// Indicates a loss of integrity in an input or output sequence (such + /// as an irrecoverable read error from a file). + static const iostate badbit = _S_badbit; + + /// Indicates that an input operation reached the end of an input sequence. + static const iostate eofbit = _S_eofbit; + + /// Indicates that an input operation failed to read the expected + /// characters, or that an output operation failed to generate the + /// desired characters. + static const iostate failbit = _S_failbit; + + /// Indicates all is well. + static const iostate goodbit = _S_goodbit; + + // 27.4.2.1.4 Type ios_base::openmode + /** + * @brief This is a bitmask type. + * + * @c @a _Ios_Openmode is implementation-defined, but it is valid to + * perform bitwise operations on these values and expect the Right + * Thing to happen. Defined objects of type openmode are: + * - app + * - ate + * - binary + * - in + * - out + * - trunc + */ + typedef _Ios_Openmode openmode; + + /// Seek to end before each write. + static const openmode app = _S_app; + + /// Open and seek to end immediately after opening. + static const openmode ate = _S_ate; + + /// Perform input and output in binary mode (as opposed to text mode). + /// This is probably not what you think it is; see + /// http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch27s02.html + static const openmode binary = _S_bin; + + /// Open for input. Default for @c ifstream and fstream. + static const openmode in = _S_in; + + /// Open for output. Default for @c ofstream and fstream. + static const openmode out = _S_out; + + /// Open for input. Default for @c ofstream. + static const openmode trunc = _S_trunc; + + // 27.4.2.1.5 Type ios_base::seekdir + /** + * @brief This is an enumerated type. + * + * @c @a _Ios_Seekdir is implementation-defined. Defined values + * of type seekdir are: + * - beg + * - cur, equivalent to @c SEEK_CUR in the C standard library. + * - end, equivalent to @c SEEK_END in the C standard library. + */ + typedef _Ios_Seekdir seekdir; + + /// Request a seek relative to the beginning of the stream. + static const seekdir beg = _S_beg; + + /// Request a seek relative to the current position within the sequence. + static const seekdir cur = _S_cur; + + /// Request a seek relative to the current end of the sequence. + static const seekdir end = _S_end; + + // Annex D.6 + typedef int io_state; + typedef int open_mode; + typedef int seek_dir; + + typedef std::streampos streampos; + typedef std::streamoff streamoff; + + // Callbacks; + /** + * @brief The set of events that may be passed to an event callback. + * + * erase_event is used during ~ios() and copyfmt(). imbue_event is used + * during imbue(). copyfmt_event is used during copyfmt(). + */ + enum event + { + erase_event, + imbue_event, + copyfmt_event + }; + + /** + * @brief The type of an event callback function. + * @param __e One of the members of the event enum. + * @param __b Reference to the ios_base object. + * @param __i The integer provided when the callback was registered. + * + * Event callbacks are user defined functions that get called during + * several ios_base and basic_ios functions, specifically imbue(), + * copyfmt(), and ~ios(). + */ + typedef void (*event_callback) (event __e, ios_base& __b, int __i); + + /** + * @brief Add the callback __fn with parameter __index. + * @param __fn The function to add. + * @param __index The integer to pass to the function when invoked. + * + * Registers a function as an event callback with an integer parameter to + * be passed to the function when invoked. Multiple copies of the + * function are allowed. If there are multiple callbacks, they are + * invoked in the order they were registered. + */ + 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; + + // 27.4.2.6 Members for callbacks + // 27.4.2.6 ios_base callbacks + struct _Callback_list + { + // Data Members + _Callback_list* _M_next; + ios_base::event_callback _M_fn; + int _M_index; + _Atomic_word _M_refcount; // 0 means one reference. + + _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); } + + // 0 => OK to delete. + int + _M_remove_reference() + { + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount); + int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); + if (__res == 0) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount); + } + return __res; + } + }; + + _Callback_list* _M_callbacks; + + void + _M_call_callbacks(event __ev) throw(); + + void + _M_dispose_callbacks(void) throw(); + + // 27.4.2.5 Members for iword/pword storage + struct _Words + { + void* _M_pword; + long _M_iword; + _Words() : _M_pword(0), _M_iword(0) { } + }; + + // Only for failed iword/pword calls. + _Words _M_word_zero; + + // Guaranteed storage. + // The first 5 iword and pword slots are reserved for internal use. + enum { _S_local_word_size = 8 }; + _Words _M_local_word[_S_local_word_size]; + + // Allocated storage. + int _M_word_size; + _Words* _M_word; + + _Words& + _M_grow_words(int __index, bool __iword); + + // Members for locale and locale caching. + locale _M_ios_locale; + + void + _M_init() throw(); + + public: + + // 27.4.2.1.6 Class ios_base::Init + // Used to initialize standard streams. In theory, g++ could use + // -finit-priority to order this stuff correctly without going + // through these machinations. + class Init + { + friend class ios_base; + public: + Init(); + ~Init(); + + private: + static _Atomic_word _S_refcount; + static bool _S_synced_with_stdio; + }; + + // [27.4.2.2] fmtflags state functions + /** + * @brief Access to format flags. + * @return The format control flags for both input and output. + */ + fmtflags + flags() const + { return _M_flags; } + + /** + * @brief Setting new format flags all at once. + * @param __fmtfl The new flags to set. + * @return The previous format control flags. + * + * This function overwrites all the format flags with @a __fmtfl. + */ + fmtflags + flags(fmtflags __fmtfl) + { + fmtflags __old = _M_flags; + _M_flags = __fmtfl; + return __old; + } + + /** + * @brief Setting new format flags. + * @param __fmtfl Additional flags to set. + * @return The previous format control flags. + * + * This function sets additional flags in format control. Flags that + * were previously set remain set. + */ + fmtflags + setf(fmtflags __fmtfl) + { + fmtflags __old = _M_flags; + _M_flags |= __fmtfl; + return __old; + } + + /** + * @brief Setting new format flags. + * @param __fmtfl Additional flags to set. + * @param __mask The flags mask for @a fmtfl. + * @return The previous format control flags. + * + * This function clears @a mask in the format flags, then sets + * @a fmtfl @c & @a mask. An example mask is @c ios_base::adjustfield. + */ + fmtflags + setf(fmtflags __fmtfl, fmtflags __mask) + { + fmtflags __old = _M_flags; + _M_flags &= ~__mask; + _M_flags |= (__fmtfl & __mask); + return __old; + } + + /** + * @brief Clearing format flags. + * @param __mask The flags to unset. + * + * This function clears @a __mask in the format flags. + */ + void + unsetf(fmtflags __mask) + { _M_flags &= ~__mask; } + + /** + * @brief Flags access. + * @return The precision to generate on certain output operations. + * + * Be careful if you try to give a definition of @a precision here; see + * DR 189. + */ + streamsize + precision() const + { return _M_precision; } + + /** + * @brief Changing flags. + * @param __prec The new precision value. + * @return The previous value of precision(). + */ + streamsize + precision(streamsize __prec) + { + streamsize __old = _M_precision; + _M_precision = __prec; + return __old; + } + + /** + * @brief Flags access. + * @return The minimum field width to generate on output operations. + * + * Minimum field width refers to the number of characters. + */ + streamsize + width() const + { return _M_width; } + + /** + * @brief Changing flags. + * @param __wide The new width value. + * @return The previous value of width(). + */ + streamsize + width(streamsize __wide) + { + streamsize __old = _M_width; + _M_width = __wide; + return __old; + } + + // [27.4.2.4] ios_base static members + /** + * @brief Interaction with the standard C I/O objects. + * @param __sync Whether to synchronize or not. + * @return True if the standard streams were previously synchronized. + * + * The synchronization referred to is @e only that between the standard + * C facilities (e.g., stdout) and the standard C++ objects (e.g., + * cout). User-declared streams are unaffected. See + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch28s02.html + */ + static bool + sync_with_stdio(bool __sync = true); + + // [27.4.2.3] ios_base locale functions + /** + * @brief Setting a new locale. + * @param __loc The new locale. + * @return The previous locale. + * + * Sets the new locale for this stream, and then invokes each callback + * with imbue_event. + */ + locale + imbue(const locale& __loc) throw(); + + /** + * @brief Locale access + * @return A copy of the current locale. + * + * If @c imbue(loc) has previously been called, then this function + * returns @c loc. Otherwise, it returns a copy of @c std::locale(), + * the global C++ locale. + */ + locale + getloc() const + { return _M_ios_locale; } + + /** + * @brief Locale access + * @return A reference to the current locale. + * + * Like getloc above, but returns a reference instead of + * generating a copy. + */ + const locale& + _M_getloc() const + { return _M_ios_locale; } + + // [27.4.2.5] ios_base storage functions + /** + * @brief Access to unique indices. + * @return An integer different from all previous calls. + * + * This function returns a unique integer every time it is called. It + * can be used for any purpose, but is primarily intended to be a unique + * index for the iword and pword functions. The expectation is that an + * application calls xalloc in order to obtain an index in the iword and + * pword arrays that can be used without fear of conflict. + * + * The implementation maintains a static variable that is incremented and + * returned on each invocation. xalloc is guaranteed to return an index + * that is safe to use in the iword and pword arrays. + */ + static int + xalloc() throw(); + + /** + * @brief Access to integer array. + * @param __ix Index into the array. + * @return A reference to an integer associated with the index. + * + * The iword function provides access to an array of integers that can be + * used for any purpose. The array grows as required to hold the + * supplied index. All integers in the array are initialized to 0. + * + * The implementation reserves several indices. You should use xalloc to + * obtain an index that is safe to use. Also note that since the array + * can grow dynamically, it is not safe to hold onto the reference. + */ + long& + iword(int __ix) + { + _Words& __word = (__ix < _M_word_size) + ? _M_word[__ix] : _M_grow_words(__ix, true); + return __word._M_iword; + } + + /** + * @brief Access to void pointer array. + * @param __ix Index into the array. + * @return A reference to a void* associated with the index. + * + * The pword function provides access to an array of pointers that can be + * used for any purpose. The array grows as required to hold the + * supplied index. All pointers in the array are initialized to 0. + * + * The implementation reserves several indices. You should use xalloc to + * obtain an index that is safe to use. Also note that since the array + * can grow dynamically, it is not safe to hold onto the reference. + */ + void*& + pword(int __ix) + { + _Words& __word = (__ix < _M_word_size) + ? _M_word[__ix] : _M_grow_words(__ix, false); + return __word._M_pword; + } + + // Destructor + /** + * Invokes each callback with erase_event. Destroys local storage. + * + * Note that the ios_base object for the standard streams never gets + * destroyed. As a result, any callbacks registered with the standard + * streams will not get invoked with erase_event (unless copyfmt is + * used). + */ + virtual ~ios_base(); + + protected: + ios_base() throw (); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 50. Copy constructor and assignment operator of ios_base + private: + ios_base(const ios_base&); + + ios_base& + operator=(const ios_base&); + }; + + // [27.4.5.1] fmtflags manipulators + /// Calls base.setf(ios_base::boolalpha). + inline ios_base& + boolalpha(ios_base& __base) + { + __base.setf(ios_base::boolalpha); + return __base; + } + + /// Calls base.unsetf(ios_base::boolalpha). + inline ios_base& + noboolalpha(ios_base& __base) + { + __base.unsetf(ios_base::boolalpha); + return __base; + } + + /// Calls base.setf(ios_base::showbase). + inline ios_base& + showbase(ios_base& __base) + { + __base.setf(ios_base::showbase); + return __base; + } + + /// Calls base.unsetf(ios_base::showbase). + inline ios_base& + noshowbase(ios_base& __base) + { + __base.unsetf(ios_base::showbase); + return __base; + } + + /// Calls base.setf(ios_base::showpoint). + inline ios_base& + showpoint(ios_base& __base) + { + __base.setf(ios_base::showpoint); + return __base; + } + + /// Calls base.unsetf(ios_base::showpoint). + inline ios_base& + noshowpoint(ios_base& __base) + { + __base.unsetf(ios_base::showpoint); + return __base; + } + + /// Calls base.setf(ios_base::showpos). + inline ios_base& + showpos(ios_base& __base) + { + __base.setf(ios_base::showpos); + return __base; + } + + /// Calls base.unsetf(ios_base::showpos). + inline ios_base& + noshowpos(ios_base& __base) + { + __base.unsetf(ios_base::showpos); + return __base; + } + + /// Calls base.setf(ios_base::skipws). + inline ios_base& + skipws(ios_base& __base) + { + __base.setf(ios_base::skipws); + return __base; + } + + /// Calls base.unsetf(ios_base::skipws). + inline ios_base& + noskipws(ios_base& __base) + { + __base.unsetf(ios_base::skipws); + return __base; + } + + /// Calls base.setf(ios_base::uppercase). + inline ios_base& + uppercase(ios_base& __base) + { + __base.setf(ios_base::uppercase); + return __base; + } + + /// Calls base.unsetf(ios_base::uppercase). + inline ios_base& + nouppercase(ios_base& __base) + { + __base.unsetf(ios_base::uppercase); + return __base; + } + + /// Calls base.setf(ios_base::unitbuf). + inline ios_base& + unitbuf(ios_base& __base) + { + __base.setf(ios_base::unitbuf); + return __base; + } + + /// Calls base.unsetf(ios_base::unitbuf). + inline ios_base& + nounitbuf(ios_base& __base) + { + __base.unsetf(ios_base::unitbuf); + return __base; + } + + // [27.4.5.2] adjustfield manipulators + /// Calls base.setf(ios_base::internal, ios_base::adjustfield). + inline ios_base& + internal(ios_base& __base) + { + __base.setf(ios_base::internal, ios_base::adjustfield); + return __base; + } + + /// Calls base.setf(ios_base::left, ios_base::adjustfield). + inline ios_base& + left(ios_base& __base) + { + __base.setf(ios_base::left, ios_base::adjustfield); + return __base; + } + + /// Calls base.setf(ios_base::right, ios_base::adjustfield). + inline ios_base& + right(ios_base& __base) + { + __base.setf(ios_base::right, ios_base::adjustfield); + return __base; + } + + // [27.4.5.3] basefield manipulators + /// Calls base.setf(ios_base::dec, ios_base::basefield). + inline ios_base& + dec(ios_base& __base) + { + __base.setf(ios_base::dec, ios_base::basefield); + return __base; + } + + /// Calls base.setf(ios_base::hex, ios_base::basefield). + inline ios_base& + hex(ios_base& __base) + { + __base.setf(ios_base::hex, ios_base::basefield); + return __base; + } + + /// Calls base.setf(ios_base::oct, ios_base::basefield). + inline ios_base& + oct(ios_base& __base) + { + __base.setf(ios_base::oct, ios_base::basefield); + return __base; + } + + // [27.4.5.4] floatfield manipulators + /// Calls base.setf(ios_base::fixed, ios_base::floatfield). + inline ios_base& + fixed(ios_base& __base) + { + __base.setf(ios_base::fixed, ios_base::floatfield); + return __base; + } + + /// Calls base.setf(ios_base::scientific, ios_base::floatfield). + inline ios_base& + scientific(ios_base& __base) + { + __base.setf(ios_base::scientific, ios_base::floatfield); + return __base; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _IOS_BASE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/istream.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/istream.tcc new file mode 100644 index 0000000..4a07301 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/istream.tcc @@ -0,0 +1,1092 @@ +// istream classes -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/istream.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{istream} + */ + +// +// ISO C++ 14882: 27.6.1 Input streams +// + +#ifndef _ISTREAM_TCC +#define _ISTREAM_TCC 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + 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(); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 195. Should basic_istream::sentry's constructor ever + // set eofbit? + 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; + __try + { + const __num_get_type& __ng = __check_facet(this->_M_num_get); + __ng.get(*this, 0, *this, __err, __v); + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 118. basic_istream uses nonexistent num_get member functions. + sentry __cerb(*this, false); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + __try + { + long __l; + const __num_get_type& __ng = __check_facet(this->_M_num_get); + __ng.get(*this, 0, *this, __err, __l); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 696. istream::operator>>(int&) broken. + 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); + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 118. basic_istream uses nonexistent num_get member functions. + sentry __cerb(*this, false); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + __try + { + long __l; + const __num_get_type& __ng = __check_facet(this->_M_num_get); + __ng.get(*this, 0, *this, __err, __l); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 696. istream::operator>>(int&) broken. + 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); + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + __try + { + bool __ineof; + if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) + __err |= ios_base::failbit; + if (__ineof) + __err |= ios_base::eofbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::failbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + __try + { + __c = this->rdbuf()->sbumpc(); + // 27.6.1.1 paragraph 3 + if (!traits_type::eq_int_type(__c, __eof)) + _M_gcount = 1; + else + __err |= ios_base::eofbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + __try + { + const int_type __cb = this->rdbuf()->sbumpc(); + // 27.6.1.1 paragraph 3 + if (!traits_type::eq_int_type(__cb, traits_type::eof())) + { + _M_gcount = 1; + __c = traits_type::to_char_type(__cb); + } + else + __err |= ios_base::eofbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + __try + { + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sgetc(); + + while (_M_gcount + 1 < __n + && !traits_type::eq_int_type(__c, __eof) + && !traits_type::eq_int_type(__c, __idelim)) + { + *__s++ = traits_type::to_char_type(__c); + ++_M_gcount; + __c = __sb->snextc(); + } + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { this->_M_setstate(ios_base::badbit); } + } + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 243. get and getline when sentry reports failure. + 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) + { + __try + { + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + __streambuf_type* __this_sb = this->rdbuf(); + int_type __c = __this_sb->sgetc(); + char_type __c2 = traits_type::to_char_type(__c); + + while (!traits_type::eq_int_type(__c, __eof) + && !traits_type::eq_int_type(__c, __idelim) + && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) + { + ++_M_gcount; + __c = __this_sb->snextc(); + __c2 = traits_type::to_char_type(__c); + } + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + __try + { + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sgetc(); + + while (_M_gcount + 1 < __n + && !traits_type::eq_int_type(__c, __eof) + && !traits_type::eq_int_type(__c, __idelim)) + { + *__s++ = traits_type::to_char_type(__c); + __c = __sb->snextc(); + ++_M_gcount; + } + if (traits_type::eq_int_type(__c, __eof)) + __err |= ios_base::eofbit; + else + { + if (traits_type::eq_int_type(__c, __idelim)) + { + __sb->sbumpc(); + ++_M_gcount; + } + else + __err |= ios_base::failbit; + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { this->_M_setstate(ios_base::badbit); } + } + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 243. get and getline when sentry reports failure. + if (__n > 0) + *__s = char_type(); + if (!_M_gcount) + __err |= ios_base::failbit; + if (__err) + this->setstate(__err); + return *this; + } + + // We provide three overloads, since the first two are much simpler + // than the general case. Also, the latter two can thus adopt the + // same "batchy" strategy used by getline above. + 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; + __try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + + if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) + __err |= ios_base::eofbit; + else + _M_gcount = 1; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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; + __try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sgetc(); + + // N.B. On LFS-enabled platforms streamsize is still 32 bits + // wide: if we want to implement the standard mandated behavior + // for n == max() (see 27.6.1.3/24) we are at risk of signed + // integer overflow: thus these contortions. Also note that, + // by definition, when more than 2G chars are actually ignored, + // _M_gcount (the return value of gcount, that is) cannot be + // really correct, being unavoidably too small. + 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; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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; + __try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sgetc(); + + // See comment above. + 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(); + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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; + __try + { + __c = this->rdbuf()->sgetc(); + if (traits_type::eq_int_type(__c, traits_type::eof())) + __err |= ios_base::eofbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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; + __try + { + _M_gcount = this->rdbuf()->sgetn(__s, __n); + if (_M_gcount != __n) + __err |= (ios_base::eofbit | ios_base::failbit); + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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; + __try + { + // Cannot compare int_type with streamsize generically. + const streamsize __num = this->rdbuf()->in_avail(); + if (__num > 0) + _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); + else if (__num == -1) + __err |= ios_base::eofbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 60. What is a formatted input function? + _M_gcount = 0; + // Clear eofbit per N3168. + this->clear(this->rdstate() & ~ios_base::eofbit); + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + __try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + if (!__sb + || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) + __err |= ios_base::badbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + unget(void) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 60. What is a formatted input function? + _M_gcount = 0; + // Clear eofbit per N3168. + this->clear(this->rdstate() & ~ios_base::eofbit); + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + __try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + if (!__sb + || traits_type::eq_int_type(__sb->sungetc(), __eof)) + __err |= ios_base::badbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + template + int + basic_istream<_CharT, _Traits>:: + sync(void) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR60. Do not change _M_gcount. + int __ret = -1; + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + __try + { + __streambuf_type* __sb = this->rdbuf(); + if (__sb) + { + if (__sb->pubsync() == -1) + __err |= ios_base::badbit; + else + __ret = 0; + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR60. Do not change _M_gcount. + pos_type __ret = pos_type(-1); + sentry __cerb(*this, true); + if (__cerb) + { + __try + { + if (!this->fail()) + __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, + ios_base::in); + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { this->_M_setstate(ios_base::badbit); } + } + return __ret; + } + + template + basic_istream<_CharT, _Traits>& + basic_istream<_CharT, _Traits>:: + seekg(pos_type __pos) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR60. Do not change _M_gcount. + // Clear eofbit per N3168. + this->clear(this->rdstate() & ~ios_base::eofbit); + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + __try + { + if (!this->fail()) + { + // 136. seekp, seekg setting wrong streams? + const pos_type __p = this->rdbuf()->pubseekpos(__pos, + ios_base::in); + + // 129. Need error indication from seekp() and seekg() + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR60. Do not change _M_gcount. + // Clear eofbit per N3168. + this->clear(this->rdstate() & ~ios_base::eofbit); + sentry __cerb(*this, true); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + __try + { + if (!this->fail()) + { + // 136. seekp, seekg setting wrong streams? + const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, + ios_base::in); + + // 129. Need error indication from seekp() and seekg() + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); + } + return *this; + } + + // 27.6.1.2.3 Character extraction templates + 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; + __try + { + const __int_type __cb = __in.rdbuf()->sbumpc(); + if (!_Traits::eq_int_type(__cb, _Traits::eof())) + __c = _Traits::to_char_type(__cb); + else + __err |= (ios_base::eofbit | ios_base::failbit); + } + __catch(__cxxabiv1::__forced_unwind&) + { + __in._M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { __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) + { + __try + { + // Figure out how many characters to extract. + 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; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 68. Extractors for char* should store null at end + *__s = char_type(); + __in.width(0); + } + __catch(__cxxabiv1::__forced_unwind&) + { + __in._M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { __in._M_setstate(ios_base::badbit); } + } + if (!__extracted) + __err |= ios_base::failbit; + if (__err) + __in.setstate(__err); + return __in; + } + + // 27.6.1.4 Standard basic_istream manipulators + 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; + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + 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&); +#ifdef _GLIBCXX_USE_LONG_LONG + extern template istream& istream::_M_extract(long long&); + extern template istream& istream::_M_extract(unsigned long long&); +#endif + 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; + +#ifdef _GLIBCXX_USE_WCHAR_T + 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&); +#ifdef _GLIBCXX_USE_LONG_LONG + extern template wistream& wistream::_M_extract(long long&); + extern template wistream& wistream::_M_extract(unsigned long long&); +#endif + 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; +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/list.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/list.tcc new file mode 100644 index 0000000..21a6a76 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/list.tcc @@ -0,0 +1,469 @@ +// List implementation (out of line) -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/list.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{list} + */ + +#ifndef _LIST_TCC +#define _LIST_TCC 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + 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); +#if __cplusplus >= 201103L + _M_get_Node_allocator().destroy(__tmp); +#else + _M_get_Tp_allocator().destroy(std::__addressof(__tmp->_M_data)); +#endif + _M_put_node(__tmp); + } + } + +#if __cplusplus >= 201103L + 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); + } +#endif + + 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; + } + +#if __cplusplus >= 201103L + template + void + list<_Tp, _Alloc>:: + _M_default_append(size_type __n) + { + size_type __i = 0; + __try + { + for (; __i < __n; ++__i) + emplace_back(); + } + __catch(...) + { + for (; __i; --__i) + pop_back(); + __throw_exception_again; + } + } + + 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 // __i == end() + _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 // __i == end() + insert(end(), __new_size - __len, __x); + } +#else + template + void + list<_Tp, _Alloc>:: + resize(size_type __new_size, 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 // __i == end() + insert(end(), __new_size - __len, __x); + } +#endif + + 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 526. Is it undefined if a function in the standard changes + // in parameters? + 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>:: +#if __cplusplus >= 201103L + merge(list&& __x) +#else + merge(list& __x) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 300. list::merge() specification incomplete + 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>:: +#if __cplusplus >= 201103L + merge(list&& __x, _StrictWeakOrdering __comp) +#else + merge(list& __x, _StrictWeakOrdering __comp) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 300. list::merge() specification incomplete + 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() + { + // Do nothing if the list has length 0 or 1. + 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) + { + // Do nothing if the list has length 0 or 1. + 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)); + } + } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _LIST_TCC */ + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_classes.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_classes.h new file mode 100644 index 0000000..c7de7e6 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_classes.h @@ -0,0 +1,789 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/locale_classes.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +#ifndef _LOCALE_CLASSES_H +#define _LOCALE_CLASSES_H 1 + +#pragma GCC system_header + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // 22.1.1 Class locale + /** + * @brief Container class for localization functionality. + * @ingroup locales + * + * The locale class is first a class wrapper for C library locales. It is + * also an extensible container for user-defined localization. A locale is + * a collection of facets that implement various localization features such + * as money, time, and number printing. + * + * Constructing C++ locales does not change the C library locale. + * + * This library supports efficient construction and copying of locales + * through a reference counting implementation of the locale class. + */ + class locale + { + public: + // Types: + /// Definition of locale::category. + typedef int category; + + // Forward decls and friends: + 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; + + //@{ + /** + * @brief Category values. + * + * The standard category values are none, ctype, numeric, collate, time, + * monetary, and messages. They form a bitmask that supports union and + * intersection. The category all is the union of these values. + * + * NB: Order must match _S_facet_categories definition in locale.cc + */ + 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); + //@} + + // Construct/copy/destroy: + + /** + * @brief Default constructor. + * + * Constructs a copy of the global locale. If no locale has been + * explicitly set, this is the C locale. + */ + locale() throw(); + + /** + * @brief Copy constructor. + * + * Constructs a copy of @a other. + * + * @param __other The locale to copy. + */ + locale(const locale& __other) throw(); + + /** + * @brief Named locale constructor. + * + * Constructs a copy of the named C library locale. + * + * @param __s Name of the locale to construct. + * @throw std::runtime_error if __s is null or an undefined locale. + */ + explicit + locale(const char* __s); + + /** + * @brief Construct locale with facets from another locale. + * + * Constructs a copy of the locale @a base. The facets specified by @a + * cat are replaced with those from the locale named by @a s. If base is + * named, this locale instance will also be named. + * + * @param __base The locale to copy. + * @param __s Name of the locale to use facets from. + * @param __cat Set of categories defining the facets to use from __s. + * @throw std::runtime_error if __s is null or an undefined locale. + */ + locale(const locale& __base, const char* __s, category __cat); + + /** + * @brief Construct locale with facets from another locale. + * + * Constructs a copy of the locale @a base. The facets specified by @a + * cat are replaced with those from the locale @a add. If @a base and @a + * add are named, this locale instance will also be named. + * + * @param __base The locale to copy. + * @param __add The locale to use facets from. + * @param __cat Set of categories defining the facets to use from add. + */ + locale(const locale& __base, const locale& __add, category __cat); + + /** + * @brief Construct locale with another facet. + * + * Constructs a copy of the locale @a __other. The facet @a __f + * is added to @a __other, replacing an existing facet of type + * Facet if there is one. If @a __f is null, this locale is a + * copy of @a __other. + * + * @param __other The locale to copy. + * @param __f The facet to add in. + */ + template + locale(const locale& __other, _Facet* __f); + + /// Locale destructor. + ~locale() throw(); + + /** + * @brief Assignment operator. + * + * Set this locale to be a copy of @a other. + * + * @param __other The locale to copy. + * @return A reference to this locale. + */ + const locale& + operator=(const locale& __other) throw(); + + /** + * @brief Construct locale with another facet. + * + * Constructs and returns a new copy of this locale. Adds or replaces an + * existing facet of type Facet from the locale @a other into the new + * locale. + * + * @tparam _Facet The facet type to copy from other + * @param __other The locale to copy from. + * @return Newly constructed locale. + * @throw std::runtime_error if __other has no facet of type _Facet. + */ + template + locale + combine(const locale& __other) const; + + // Locale operations: + /** + * @brief Return locale name. + * @return Locale name or "*" if unnamed. + */ + string + name() const; + + /** + * @brief Locale equality. + * + * @param __other The locale to compare against. + * @return True if other and this refer to the same locale instance, are + * copies, or have the same name. False otherwise. + */ + bool + operator==(const locale& __other) const throw(); + + /** + * @brief Locale inequality. + * + * @param __other The locale to compare against. + * @return ! (*this == __other) + */ + bool + operator!=(const locale& __other) const throw() + { return !(this->operator==(__other)); } + + /** + * @brief Compare two strings according to collate. + * + * Template operator to compare two strings using the compare function of + * the collate facet in this locale. One use is to provide the locale to + * the sort function. For example, a vector v of strings could be sorted + * according to locale loc by doing: + * @code + * std::sort(v.begin(), v.end(), loc); + * @endcode + * + * @param __s1 First string to compare. + * @param __s2 Second string to compare. + * @return True if collate<_Char> facet compares __s1 < __s2, else false. + */ + template + bool + operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, + const basic_string<_Char, _Traits, _Alloc>& __s2) const; + + // Global locale objects: + /** + * @brief Set global locale + * + * This function sets the global locale to the argument and returns a + * copy of the previous global locale. If the argument has a name, it + * will also call std::setlocale(LC_ALL, loc.name()). + * + * @param __loc The new locale to make global. + * @return Copy of the old global locale. + */ + static locale + global(const locale& __loc); + + /** + * @brief Return reference to the C locale. + */ + static const locale& + classic(); + + private: + // The (shared) implementation + _Impl* _M_impl; + + // The "C" reference locale + static _Impl* _S_classic; + + // Current global locale + static _Impl* _S_global; + + // Names of underlying locale categories. + // NB: locale::global() has to know how to modify all the + // underlying categories, not just the ones required by the C++ + // standard. + static const char* const* const _S_categories; + + // Number of standard categories. For C++, these categories are + // collate, ctype, monetary, numeric, time, and messages. These + // directly correspond to ISO C99 macros LC_COLLATE, LC_CTYPE, + // LC_MONETARY, LC_NUMERIC, and LC_TIME. In addition, POSIX (IEEE + // 1003.1-2001) specifies LC_MESSAGES. + // In addition to the standard categories, the underlying + // operating system is allowed to define extra LC_* + // macros. For GNU systems, the following are also valid: + // LC_PAPER, LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT, + // and LC_IDENTIFICATION. + enum { _S_categories_size = 6 + _GLIBCXX_NUM_CATEGORIES }; + +#ifdef __GTHREADS + static __gthread_once_t _S_once; +#endif + + 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); + }; + + + // 22.1.1.1.2 Class locale::facet + /** + * @brief Localization functionality base class. + * @ingroup locales + * + * The facet class is the base class for a localization feature, such as + * money, time, and number printing. It provides common support for facets + * and reference management. + * + * Facets may not be copied or assigned. + */ + class locale::facet + { + private: + friend class locale; + friend class locale::_Impl; + + mutable _Atomic_word _M_refcount; + + // Contains data from the underlying "C" library for the classic locale. + static __c_locale _S_c_locale; + + // String literal for the name of the classic locale. + static const char _S_c_name[2]; + +#ifdef __GTHREADS + static __gthread_once_t _S_once; +#endif + + static void + _S_initialize_once(); + + protected: + /** + * @brief Facet constructor. + * + * This is the constructor provided by the standard. If refs is 0, the + * facet is destroyed when the last referencing locale is destroyed. + * Otherwise the facet will never be destroyed. + * + * @param __refs The initial value for reference count. + */ + explicit + facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) + { } + + /// Facet destructor. + 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); + + // Returns data from the underlying "C" library data for the + // classic locale. + static __c_locale + _S_get_c_locale(); + + _GLIBCXX_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() + { + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount); + __try + { delete this; } + __catch(...) + { } + } + } + + facet(const facet&); // Not defined. + + facet& + operator=(const facet&); // Not defined. + }; + + + // 22.1.1.1.3 Class locale::id + /** + * @brief Facet ID class. + * @ingroup locales + * + * The ID class provides facets with an index used to identify them. + * Every facet class must define a public static member locale::id, or be + * derived from a facet that provides this member, otherwise the facet + * cannot be used in a locale. The locale::id ensures that each class + * type gets a unique identifier. + */ + 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(); + + // NB: There is no accessor for _M_index because it may be used + // before the constructor is run; the effect of calling a member + // function (even an inline) would be undefined. + mutable size_t _M_index; + + // Last id number assigned. + static _Atomic_word _S_refcount; + + void + operator=(const id&); // Not defined. + + id(const id&); // Not defined. + + public: + // NB: This class is always a static data member, and thus can be + // counted on to be zero-initialized. + /// Constructor. + id() { } + + size_t + _M_id() const throw(); + }; + + + // Implementation object for locale. + class locale::_Impl + { + public: + // Friends. + 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: + // Data Members. + _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() + { + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount); + __try + { delete this; } + __catch(...) + { } + } + } + + _Impl(const _Impl&, size_t); + _Impl(const char*, size_t); + _Impl(size_t) throw(); + + ~_Impl() throw(); + + _Impl(const _Impl&); // Not defined. + + void + operator=(const _Impl&); // Not defined. + + bool + _M_check_same_name() + { + bool __ret = true; + if (_M_names[1]) + // We must actually compare all the _M_names: can be all equal! + 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); + }; + + + /** + * @brief Facet for localized string comparison. + * + * This facet encapsulates the code to compare strings in a localized + * manner. + * + * The collate template uses protected virtual functions to provide + * the actual results. The public accessors forward the call to + * the virtual functions. These virtual functions are hooks for + * developers to implement the behavior they require from the + * collate facet. + */ + template + class collate : public locale::facet + { + public: + // Types: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + //@} + + protected: + // Underlying "C" library locale information saved from + // initialization, needed by collate_byname as well. + __c_locale _M_c_locale_collate; + + public: + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + collate(size_t __refs = 0) + : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) + { } + + /** + * @brief Internal constructor. Not for general use. + * + * This is a constructor for use by the library itself to set up new + * locales. + * + * @param __cloc The C locale. + * @param __refs Passed to the base facet class. + */ + explicit + collate(__c_locale __cloc, size_t __refs = 0) + : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) + { } + + /** + * @brief Compare two strings. + * + * This function compares two strings and returns the result by calling + * collate::do_compare(). + * + * @param __lo1 Start of string 1. + * @param __hi1 End of string 1. + * @param __lo2 Start of string 2. + * @param __hi2 End of string 2. + * @return 1 if string1 > string2, -1 if string1 < string2, else 0. + */ + int + compare(const _CharT* __lo1, const _CharT* __hi1, + const _CharT* __lo2, const _CharT* __hi2) const + { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } + + /** + * @brief Transform string to comparable form. + * + * This function is a wrapper for strxfrm functionality. It takes the + * input string and returns a modified string that can be directly + * compared to other transformed strings. In the C locale, this + * function just returns a copy of the input string. In some other + * locales, it may replace two chars with one, change a char for + * another, etc. It does so by returning collate::do_transform(). + * + * @param __lo Start of string. + * @param __hi End of string. + * @return Transformed string_type. + */ + string_type + transform(const _CharT* __lo, const _CharT* __hi) const + { return this->do_transform(__lo, __hi); } + + /** + * @brief Return hash of a string. + * + * This function computes and returns a hash on the input string. It + * does so by returning collate::do_hash(). + * + * @param __lo Start of string. + * @param __hi End of string. + * @return Hash value. + */ + long + hash(const _CharT* __lo, const _CharT* __hi) const + { return this->do_hash(__lo, __hi); } + + // Used to abstract out _CharT bits in virtual member functions, below. + int + _M_compare(const _CharT*, const _CharT*) const throw(); + + size_t + _M_transform(_CharT*, const _CharT*, size_t) const throw(); + + protected: + /// Destructor. + virtual + ~collate() + { _S_destroy_c_locale(_M_c_locale_collate); } + + /** + * @brief Compare two strings. + * + * This function is a hook for derived classes to change the value + * returned. @see compare(). + * + * @param __lo1 Start of string 1. + * @param __hi1 End of string 1. + * @param __lo2 Start of string 2. + * @param __hi2 End of string 2. + * @return 1 if string1 > string2, -1 if string1 < string2, else 0. + */ + virtual int + do_compare(const _CharT* __lo1, const _CharT* __hi1, + const _CharT* __lo2, const _CharT* __hi2) const; + + /** + * @brief Transform string to comparable form. + * + * This function is a hook for derived classes to change the value + * returned. + * + * @param __lo Start. + * @param __hi End. + * @return transformed string. + */ + virtual string_type + do_transform(const _CharT* __lo, const _CharT* __hi) const; + + /** + * @brief Return hash of a string. + * + * This function computes and returns a hash on the input string. This + * function is a hook for derived classes to change the value returned. + * + * @param __lo Start of string. + * @param __hi End of string. + * @return Hash value. + */ + virtual long + do_hash(const _CharT* __lo, const _CharT* __hi) const; + }; + + template + locale::id collate<_CharT>::id; + + // Specializations. + template<> + int + collate::_M_compare(const char*, const char*) const throw(); + + template<> + size_t + collate::_M_transform(char*, const char*, size_t) const throw(); + +#ifdef _GLIBCXX_USE_WCHAR_T + 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(); +#endif + + /// class collate_byname [22.2.4.2]. + template + class collate_byname : public collate<_CharT> + { + public: + //@{ + /// Public typedefs + 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() { } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +# include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_classes.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_classes.tcc new file mode 100644 index 0000000..804d2ad --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_classes.tcc @@ -0,0 +1,298 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/locale_classes.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +#ifndef _LOCALE_CLASSES_TCC +#define _LOCALE_CLASSES_TCC 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + locale:: + locale(const locale& __other, _Facet* __f) + { + _M_impl = new _Impl(*__other._M_impl, 1); + + __try + { _M_impl->_M_install_facet(&_Facet::id, __f); } + __catch(...) + { + _M_impl->_M_remove_reference(); + __throw_exception_again; + } + delete [] _M_impl->_M_names[0]; + _M_impl->_M_names[0] = 0; // Unnamed. + } + + template + locale + locale:: + combine(const locale& __other) const + { + _Impl* __tmp = new _Impl(*_M_impl, 1); + __try + { + __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); + } + __catch(...) + { + __tmp->_M_remove_reference(); + __throw_exception_again; + } + 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); + } + + /** + * @brief Test for the presence of a facet. + * @ingroup locales + * + * has_facet tests the locale argument for the presence of the facet type + * provided as the template parameter. Facets derived from the facet + * parameter will also return true. + * + * @tparam _Facet The facet type to test the presence of. + * @param __loc The locale to test. + * @return true if @p __loc contains a facet of type _Facet, else false. + */ + 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 +#ifdef __GXX_RTTI + && dynamic_cast(__facets[__i])); +#else + && static_cast(__facets[__i])); +#endif + } + + /** + * @brief Return a facet. + * @ingroup locales + * + * use_facet looks for and returns a reference to a facet of type Facet + * where Facet is the template parameter. If has_facet(locale) is true, + * there is a suitable facet to return. It throws std::bad_cast if the + * locale doesn't contain a facet of type Facet. + * + * @tparam _Facet The facet type to access. + * @param __loc The locale to use. + * @return Reference to facet of type Facet. + * @throw std::bad_cast if @p __loc doesn't contain a facet of type _Facet. + */ + 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(); +#ifdef __GXX_RTTI + return dynamic_cast(*__facets[__i]); +#else + return static_cast(*__facets[__i]); +#endif + } + + + // Generic version does nothing. + template + int + collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () + { return 0; } + + // Generic version does nothing. + 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 + { + // strcoll assumes zero-terminated strings so we make a copy + // and then put a zero at the end. + 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(); + + // strcoll stops when it sees a nul character so we break + // the strings into zero-terminated substrings and pass those + // to strcoll. + 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; + + // strxfrm assumes zero-terminated strings so we make a copy + const string_type __str(__lo, __hi); + + const _CharT* __p = __str.c_str(); + const _CharT* __pend = __str.data() + __str.length(); + + size_t __len = (__hi - __lo) * 2; + + _CharT* __c = new _CharT[__len]; + + __try + { + // strxfrm stops when it sees a nul character so we break + // the string into zero-terminated substrings and pass those + // to strxfrm. + for (;;) + { + // First try a buffer perhaps big enough. + size_t __res = _M_transform(__c, __p, __len); + // If the buffer was not large enough, try again with the + // correct size. + if (__res >= __len) + { + __len = __res + 1; + delete [] __c, __c = 0; + __c = new _CharT[__len]; + __res = _M_transform(__c, __p, __len); + } + + __ret.append(__c, __res); + __p += char_traits<_CharT>::length(__p); + if (__p == __pend) + break; + + __p++; + __ret.push_back(_CharT()); + } + } + __catch(...) + { + delete [] __c; + __throw_exception_again; + } + + 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); + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template class collate; + extern template class collate_byname; + + extern template + const collate& + use_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template class collate; + extern template class collate_byname; + + extern template + const collate& + use_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets.h new file mode 100644 index 0000000..63fcac2 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets.h @@ -0,0 +1,2610 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/locale_facets.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +#ifndef _LOCALE_FACETS_H +#define _LOCALE_FACETS_H 1 + +#pragma GCC system_header + +#include // For wctype_t +#include +#include +#include +#include // For ios_base, ios_base::iostate +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // NB: Don't instantiate required wchar_t facets if no wchar_t support. +#ifdef _GLIBCXX_USE_WCHAR_T +# define _GLIBCXX_NUM_FACETS 28 +#else +# define _GLIBCXX_NUM_FACETS 14 +#endif + + // Convert string to numeric value of type _Tp and store results. + // NB: This is specialized for all required types, there is no + // generic definition. + template + void + __convert_to_v(const char*, _Tp&, ios_base::iostate&, + const __c_locale&) throw(); + + // Explicit specializations for required types. + 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(); + + // NB: __pad is a struct, rather than a function, so it can be + // partially-specialized. + template + struct __pad + { + static void + _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, + const _CharT* __olds, streamsize __newlen, streamsize __oldlen); + }; + + // Used by both numeric and monetary facets. + // Inserts "group separator" characters into an array of characters. + // It's recursive, one iteration per group. It moves the characters + // in the buffer this way: "xxxx12345" -> "12,345xxx". Call this + // only with __gsize != 0. + template + _CharT* + __add_grouping(_CharT* __s, _CharT __sep, + const char* __gbeg, size_t __gsize, + const _CharT* __first, const _CharT* __last); + + // This template permits specializing facet output code for + // ostreambuf_iterator. For ostreambuf_iterator, sputn is + // significantly more efficient than incrementing iterators. + template + inline + ostreambuf_iterator<_CharT> + __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) + { + __s._M_put(__ws, __len); + return __s; + } + + // This is the unspecialized form of the template. + template + inline + _OutIter + __write(_OutIter __s, const _CharT* __ws, int __len) + { + for (int __j = 0; __j < __len; __j++, ++__s) + *__s = __ws[__j]; + return __s; + } + + + // 22.2.1.1 Template class ctype + // Include host and configuration specific ctype enums for ctype_base. + + /** + * @brief Common base for ctype facet + * + * This template class provides implementations of the public functions + * that forward to the protected virtual functions. + * + * This template also provides abstract stubs for the protected virtual + * functions. + */ + template + class __ctype_abstract_base : public locale::facet, public ctype_base + { + public: + // Types: + /// Typedef for the template parameter + typedef _CharT char_type; + + /** + * @brief Test char_type classification. + * + * This function finds a mask M for @a __c and compares it to + * mask @a __m. It does so by returning the value of + * ctype::do_is(). + * + * @param __c The char_type to compare the mask of. + * @param __m The mask to compare against. + * @return (M & __m) != 0. + */ + bool + is(mask __m, char_type __c) const + { return this->do_is(__m, __c); } + + /** + * @brief Return a mask array. + * + * This function finds the mask for each char_type in the range [lo,hi) + * and successively writes it to vec. vec must have as many elements + * as the char array. It does so by returning the value of + * ctype::do_is(). + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __vec Pointer to an array of mask storage. + * @return @a __hi. + */ + const char_type* + is(const char_type *__lo, const char_type *__hi, mask *__vec) const + { return this->do_is(__lo, __hi, __vec); } + + /** + * @brief Find char_type matching a mask + * + * This function searches for and returns the first char_type c in + * [lo,hi) for which is(m,c) is true. It does so by returning + * ctype::do_scan_is(). + * + * @param __m The mask to compare against. + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return Pointer to matching char_type if found, else @a __hi. + */ + const char_type* + scan_is(mask __m, const char_type* __lo, const char_type* __hi) const + { return this->do_scan_is(__m, __lo, __hi); } + + /** + * @brief Find char_type not matching a mask + * + * This function searches for and returns the first char_type c in + * [lo,hi) for which is(m,c) is false. It does so by returning + * ctype::do_scan_not(). + * + * @param __m The mask to compare against. + * @param __lo Pointer to first char in range. + * @param __hi Pointer to end of range. + * @return Pointer to non-matching char if found, else @a __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); } + + /** + * @brief Convert to uppercase. + * + * This function converts the argument to uppercase if possible. + * If not possible (for example, '2'), returns the argument. It does + * so by returning ctype::do_toupper(). + * + * @param __c The char_type to convert. + * @return The uppercase char_type if convertible, else @a __c. + */ + char_type + toupper(char_type __c) const + { return this->do_toupper(__c); } + + /** + * @brief Convert array to uppercase. + * + * This function converts each char_type in the range [lo,hi) to + * uppercase if possible. Other elements remain untouched. It does so + * by returning ctype:: do_toupper(lo, hi). + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + const char_type* + toupper(char_type *__lo, const char_type* __hi) const + { return this->do_toupper(__lo, __hi); } + + /** + * @brief Convert to lowercase. + * + * This function converts the argument to lowercase if possible. If + * not possible (for example, '2'), returns the argument. It does so + * by returning ctype::do_tolower(c). + * + * @param __c The char_type to convert. + * @return The lowercase char_type if convertible, else @a __c. + */ + char_type + tolower(char_type __c) const + { return this->do_tolower(__c); } + + /** + * @brief Convert array to lowercase. + * + * This function converts each char_type in the range [__lo,__hi) to + * lowercase if possible. Other elements remain untouched. It does so + * by returning ctype:: do_tolower(__lo, __hi). + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + const char_type* + tolower(char_type* __lo, const char_type* __hi) const + { return this->do_tolower(__lo, __hi); } + + /** + * @brief Widen char to char_type + * + * This function converts the char argument to char_type using the + * simplest reasonable transformation. It does so by returning + * ctype::do_widen(c). + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The char to convert. + * @return The converted char_type. + */ + char_type + widen(char __c) const + { return this->do_widen(__c); } + + /** + * @brief Widen array to char_type + * + * This function converts each char in the input to char_type using the + * simplest reasonable transformation. It does so by returning + * ctype::do_widen(c). + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + const char* + widen(const char* __lo, const char* __hi, char_type* __to) const + { return this->do_widen(__lo, __hi, __to); } + + /** + * @brief Narrow char_type to char + * + * This function converts the char_type to char using the simplest + * reasonable transformation. If the conversion fails, dfault is + * returned instead. It does so by returning + * ctype::do_narrow(__c). + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The char_type to convert. + * @param __dfault Char to return if conversion fails. + * @return The converted char. + */ + char + narrow(char_type __c, char __dfault) const + { return this->do_narrow(__c, __dfault); } + + /** + * @brief Narrow array to char array + * + * This function converts each char_type in the input to char using the + * simplest reasonable transformation and writes the results to the + * destination array. For any char_type in the input that cannot be + * converted, @a dfault is used instead. It does so by returning + * ctype::do_narrow(__lo, __hi, __dfault, __to). + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __dfault Char to use if conversion fails. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + 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() { } + + /** + * @brief Test char_type classification. + * + * This function finds a mask M for @a c and compares it to mask @a m. + * + * do_is() is a hook for a derived facet to change the behavior of + * classifying. do_is() must always return the same result for the + * same input. + * + * @param __c The char_type to find the mask of. + * @param __m The mask to compare against. + * @return (M & __m) != 0. + */ + virtual bool + do_is(mask __m, char_type __c) const = 0; + + /** + * @brief Return a mask array. + * + * This function finds the mask for each char_type in the range [lo,hi) + * and successively writes it to vec. vec must have as many elements + * as the input. + * + * do_is() is a hook for a derived facet to change the behavior of + * classifying. do_is() must always return the same result for the + * same input. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __vec Pointer to an array of mask storage. + * @return @a __hi. + */ + virtual const char_type* + do_is(const char_type* __lo, const char_type* __hi, + mask* __vec) const = 0; + + /** + * @brief Find char_type matching mask + * + * This function searches for and returns the first char_type c in + * [__lo,__hi) for which is(__m,c) is true. + * + * do_scan_is() is a hook for a derived facet to change the behavior of + * match searching. do_is() must always return the same result for the + * same input. + * + * @param __m The mask to compare against. + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return Pointer to a matching char_type if found, else @a __hi. + */ + virtual const char_type* + do_scan_is(mask __m, const char_type* __lo, + const char_type* __hi) const = 0; + + /** + * @brief Find char_type not matching mask + * + * This function searches for and returns a pointer to the first + * char_type c of [lo,hi) for which is(m,c) is false. + * + * do_scan_is() is a hook for a derived facet to change the behavior of + * match searching. do_is() must always return the same result for the + * same input. + * + * @param __m The mask to compare against. + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return Pointer to a non-matching char_type if found, else @a __hi. + */ + virtual const char_type* + do_scan_not(mask __m, const char_type* __lo, + const char_type* __hi) const = 0; + + /** + * @brief Convert to uppercase. + * + * This virtual function converts the char_type argument to uppercase + * if possible. If not possible (for example, '2'), returns the + * argument. + * + * do_toupper() is a hook for a derived facet to change the behavior of + * uppercasing. do_toupper() must always return the same result for + * the same input. + * + * @param __c The char_type to convert. + * @return The uppercase char_type if convertible, else @a __c. + */ + virtual char_type + do_toupper(char_type __c) const = 0; + + /** + * @brief Convert array to uppercase. + * + * This virtual function converts each char_type in the range [__lo,__hi) + * to uppercase if possible. Other elements remain untouched. + * + * do_toupper() is a hook for a derived facet to change the behavior of + * uppercasing. do_toupper() must always return the same result for + * the same input. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + virtual const char_type* + do_toupper(char_type* __lo, const char_type* __hi) const = 0; + + /** + * @brief Convert to lowercase. + * + * This virtual function converts the argument to lowercase if + * possible. If not possible (for example, '2'), returns the argument. + * + * do_tolower() is a hook for a derived facet to change the behavior of + * lowercasing. do_tolower() must always return the same result for + * the same input. + * + * @param __c The char_type to convert. + * @return The lowercase char_type if convertible, else @a __c. + */ + virtual char_type + do_tolower(char_type __c) const = 0; + + /** + * @brief Convert array to lowercase. + * + * This virtual function converts each char_type in the range [__lo,__hi) + * to lowercase if possible. Other elements remain untouched. + * + * do_tolower() is a hook for a derived facet to change the behavior of + * lowercasing. do_tolower() must always return the same result for + * the same input. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + virtual const char_type* + do_tolower(char_type* __lo, const char_type* __hi) const = 0; + + /** + * @brief Widen char + * + * This virtual function converts the char to char_type using the + * simplest reasonable transformation. + * + * do_widen() is a hook for a derived facet to change the behavior of + * widening. do_widen() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The char to convert. + * @return The converted char_type + */ + virtual char_type + do_widen(char __c) const = 0; + + /** + * @brief Widen char array + * + * This function converts each char in the input to char_type using the + * simplest reasonable transformation. + * + * do_widen() is a hook for a derived facet to change the behavior of + * widening. do_widen() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to start range. + * @param __hi Pointer to end of range. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + virtual const char* + do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; + + /** + * @brief Narrow char_type to char + * + * This virtual function converts the argument to char using the + * simplest reasonable transformation. If the conversion fails, dfault + * is returned instead. + * + * do_narrow() is a hook for a derived facet to change the behavior of + * narrowing. do_narrow() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The char_type to convert. + * @param __dfault Char to return if conversion fails. + * @return The converted char. + */ + virtual char + do_narrow(char_type __c, char __dfault) const = 0; + + /** + * @brief Narrow char_type array to char + * + * This virtual function converts each char_type in the range + * [__lo,__hi) to char using the simplest reasonable + * transformation and writes the results to the destination + * array. For any element in the input that cannot be + * converted, @a __dfault is used instead. + * + * do_narrow() is a hook for a derived facet to change the behavior of + * narrowing. do_narrow() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __dfault Char to use if conversion fails. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + virtual const char_type* + do_narrow(const char_type* __lo, const char_type* __hi, + char __dfault, char* __to) const = 0; + }; + + /** + * @brief Primary class template ctype facet. + * @ingroup locales + * + * This template class defines classification and conversion functions for + * character sets. It wraps cctype functionality. Ctype gets used by + * streams for many I/O operations. + * + * This template provides the protected virtual functions the developer + * will have to replace in a derived class or specialization to make a + * working facet. The public functions that access them are defined in + * __ctype_abstract_base, to allow for implementation flexibility. See + * ctype for an example. The functions are documented in + * __ctype_abstract_base. + * + * Note: implementations are provided for all the protected virtual + * functions, but will likely not be useful. + */ + template + class ctype : public __ctype_abstract_base<_CharT> + { + public: + // Types: + typedef _CharT char_type; + typedef typename __ctype_abstract_base<_CharT>::mask mask; + + /// The facet id for ctype + 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; + + /** + * @brief The ctype specialization. + * @ingroup locales + * + * This class defines classification and conversion functions for + * the char type. It gets used by char streams for many I/O + * operations. The char specialization provides a number of + * optimizations as well. + */ + template<> + class ctype : public locale::facet, public ctype_base + { + public: + // Types: + /// Typedef for the template parameter char. + typedef char char_type; + + protected: + // Data Members: + __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; // 0 uninitialized, 1 init, + // 2 memcpy can't be used + + public: + /// The facet id for ctype + static locale::id id; + /// The size of the mask table. It is SCHAR_MAX + 1. + static const size_t table_size = 1 + static_cast(-1); + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __table If non-zero, table is used as the per-char mask. + * Else classic_table() is used. + * @param __del If true, passes ownership of table to this facet. + * @param __refs Passed to the base facet class. + */ + explicit + ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); + + /** + * @brief Constructor performs static initialization. + * + * This constructor is used to construct the initial C locale facet. + * + * @param __cloc Handle to C locale data. + * @param __table If non-zero, table is used as the per-char mask. + * @param __del If true, passes ownership of table to this facet. + * @param __refs Passed to the base facet class. + */ + explicit + ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, + size_t __refs = 0); + + /** + * @brief Test char classification. + * + * This function compares the mask table[c] to @a __m. + * + * @param __c The char to compare the mask of. + * @param __m The mask to compare against. + * @return True if __m & table[__c] is true, false otherwise. + */ + inline bool + is(mask __m, char __c) const; + + /** + * @brief Return a mask array. + * + * This function finds the mask for each char in the range [lo, hi) and + * successively writes it to vec. vec must have as many elements as + * the char array. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __vec Pointer to an array of mask storage. + * @return @a __hi. + */ + inline const char* + is(const char* __lo, const char* __hi, mask* __vec) const; + + /** + * @brief Find char matching a mask + * + * This function searches for and returns the first char in [lo,hi) for + * which is(m,char) is true. + * + * @param __m The mask to compare against. + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return Pointer to a matching char if found, else @a __hi. + */ + inline const char* + scan_is(mask __m, const char* __lo, const char* __hi) const; + + /** + * @brief Find char not matching a mask + * + * This function searches for and returns a pointer to the first char + * in [__lo,__hi) for which is(m,char) is false. + * + * @param __m The mask to compare against. + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return Pointer to a non-matching char if found, else @a __hi. + */ + inline const char* + scan_not(mask __m, const char* __lo, const char* __hi) const; + + /** + * @brief Convert to uppercase. + * + * This function converts the char argument to uppercase if possible. + * If not possible (for example, '2'), returns the argument. + * + * toupper() acts as if it returns ctype::do_toupper(c). + * do_toupper() must always return the same result for the same input. + * + * @param __c The char to convert. + * @return The uppercase char if convertible, else @a __c. + */ + char_type + toupper(char_type __c) const + { return this->do_toupper(__c); } + + /** + * @brief Convert array to uppercase. + * + * This function converts each char in the range [__lo,__hi) to uppercase + * if possible. Other chars remain untouched. + * + * toupper() acts as if it returns ctype:: do_toupper(__lo, __hi). + * do_toupper() must always return the same result for the same input. + * + * @param __lo Pointer to first char in range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + const char_type* + toupper(char_type *__lo, const char_type* __hi) const + { return this->do_toupper(__lo, __hi); } + + /** + * @brief Convert to lowercase. + * + * This function converts the char argument to lowercase if possible. + * If not possible (for example, '2'), returns the argument. + * + * tolower() acts as if it returns ctype::do_tolower(__c). + * do_tolower() must always return the same result for the same input. + * + * @param __c The char to convert. + * @return The lowercase char if convertible, else @a __c. + */ + char_type + tolower(char_type __c) const + { return this->do_tolower(__c); } + + /** + * @brief Convert array to lowercase. + * + * This function converts each char in the range [lo,hi) to lowercase + * if possible. Other chars remain untouched. + * + * tolower() acts as if it returns ctype:: do_tolower(__lo, __hi). + * do_tolower() must always return the same result for the same input. + * + * @param __lo Pointer to first char in range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + const char_type* + tolower(char_type* __lo, const char_type* __hi) const + { return this->do_tolower(__lo, __hi); } + + /** + * @brief Widen char + * + * This function converts the char to char_type using the simplest + * reasonable transformation. For an underived ctype facet, the + * argument will be returned unchanged. + * + * This function works as if it returns ctype::do_widen(c). + * do_widen() must always return the same result for the same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The char to convert. + * @return The converted character. + */ + 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); + } + + /** + * @brief Widen char array + * + * This function converts each char in the input to char using the + * simplest reasonable transformation. For an underived ctype + * facet, the argument will be copied unchanged. + * + * This function works as if it returns ctype::do_widen(c). + * do_widen() must always return the same result for the same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to first char in range. + * @param __hi Pointer to end of range. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + 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); + } + + /** + * @brief Narrow char + * + * This function converts the char to char using the simplest + * reasonable transformation. If the conversion fails, dfault is + * returned instead. For an underived ctype facet, @a c + * will be returned unchanged. + * + * This function works as if it returns ctype::do_narrow(c). + * do_narrow() must always return the same result for the same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The char to convert. + * @param __dfault Char to return if conversion fails. + * @return The converted character. + */ + 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; + } + + /** + * @brief Narrow char array + * + * This function converts each char in the input to char using the + * simplest reasonable transformation and writes the results to the + * destination array. For any char in the input that cannot be + * converted, @a dfault is used instead. For an underived ctype + * facet, the argument will be copied unchanged. + * + * This function works as if it returns ctype::do_narrow(lo, hi, + * dfault, to). do_narrow() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __dfault Char to use if conversion fails. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + 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); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 695. ctype::classic_table() not accessible. + /// Returns a pointer to the mask table provided to the constructor, or + /// the default from classic_table() if none was provided. + const mask* + table() const throw() + { return _M_table; } + + /// Returns a pointer to the C locale mask table. + static const mask* + classic_table() throw(); + protected: + + /** + * @brief Destructor. + * + * This function deletes table() if @a del was true in the + * constructor. + */ + virtual + ~ctype(); + + /** + * @brief Convert to uppercase. + * + * This virtual function converts the char argument to uppercase if + * possible. If not possible (for example, '2'), returns the argument. + * + * do_toupper() is a hook for a derived facet to change the behavior of + * uppercasing. do_toupper() must always return the same result for + * the same input. + * + * @param __c The char to convert. + * @return The uppercase char if convertible, else @a __c. + */ + virtual char_type + do_toupper(char_type __c) const; + + /** + * @brief Convert array to uppercase. + * + * This virtual function converts each char in the range [lo,hi) to + * uppercase if possible. Other chars remain untouched. + * + * do_toupper() is a hook for a derived facet to change the behavior of + * uppercasing. do_toupper() must always return the same result for + * the same input. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + virtual const char_type* + do_toupper(char_type* __lo, const char_type* __hi) const; + + /** + * @brief Convert to lowercase. + * + * This virtual function converts the char argument to lowercase if + * possible. If not possible (for example, '2'), returns the argument. + * + * do_tolower() is a hook for a derived facet to change the behavior of + * lowercasing. do_tolower() must always return the same result for + * the same input. + * + * @param __c The char to convert. + * @return The lowercase char if convertible, else @a __c. + */ + virtual char_type + do_tolower(char_type __c) const; + + /** + * @brief Convert array to lowercase. + * + * This virtual function converts each char in the range [lo,hi) to + * lowercase if possible. Other chars remain untouched. + * + * do_tolower() is a hook for a derived facet to change the behavior of + * lowercasing. do_tolower() must always return the same result for + * the same input. + * + * @param __lo Pointer to first char in range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + virtual const char_type* + do_tolower(char_type* __lo, const char_type* __hi) const; + + /** + * @brief Widen char + * + * This virtual function converts the char to char using the simplest + * reasonable transformation. For an underived ctype facet, the + * argument will be returned unchanged. + * + * do_widen() is a hook for a derived facet to change the behavior of + * widening. do_widen() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The char to convert. + * @return The converted character. + */ + virtual char_type + do_widen(char __c) const + { return __c; } + + /** + * @brief Widen char array + * + * This function converts each char in the range [lo,hi) to char using + * the simplest reasonable transformation. For an underived + * ctype facet, the argument will be copied unchanged. + * + * do_widen() is a hook for a derived facet to change the behavior of + * widening. do_widen() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + virtual const char* + do_widen(const char* __lo, const char* __hi, char_type* __to) const + { + __builtin_memcpy(__to, __lo, __hi - __lo); + return __hi; + } + + /** + * @brief Narrow char + * + * This virtual function converts the char to char using the simplest + * reasonable transformation. If the conversion fails, dfault is + * returned instead. For an underived ctype facet, @a c will be + * returned unchanged. + * + * do_narrow() is a hook for a derived facet to change the behavior of + * narrowing. do_narrow() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The char to convert. + * @param __dfault Char to return if conversion fails. + * @return The converted char. + */ + virtual char + do_narrow(char_type __c, char __dfault) const + { return __c; } + + /** + * @brief Narrow char array to char array + * + * This virtual function converts each char in the range [lo,hi) to + * char using the simplest reasonable transformation and writes the + * results to the destination array. For any char in the input that + * cannot be converted, @a dfault is used instead. For an underived + * ctype facet, the argument will be copied unchanged. + * + * do_narrow() is a hook for a derived facet to change the behavior of + * narrowing. do_narrow() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __dfault Char to use if conversion fails. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + 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; + }; + +#ifdef _GLIBCXX_USE_WCHAR_T + /** + * @brief The ctype specialization. + * @ingroup locales + * + * This class defines classification and conversion functions for the + * wchar_t type. It gets used by wchar_t streams for many I/O operations. + * The wchar_t specialization provides a number of optimizations as well. + * + * ctype inherits its public methods from + * __ctype_abstract_base. + */ + template<> + class ctype : public __ctype_abstract_base + { + public: + // Types: + /// Typedef for the template parameter wchar_t. + typedef wchar_t char_type; + typedef wctype_t __wmask_type; + + protected: + __c_locale _M_c_locale_ctype; + + // Pre-computed narrowed and widened chars. + bool _M_narrow_ok; + char _M_narrow[128]; + wint_t _M_widen[1 + static_cast(-1)]; + + // Pre-computed elements for do_is. + mask _M_bit[16]; + __wmask_type _M_wmask[16]; + + public: + // Data Members: + /// The facet id for ctype + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + ctype(size_t __refs = 0); + + /** + * @brief Constructor performs static initialization. + * + * This constructor is used to construct the initial C locale facet. + * + * @param __cloc Handle to C locale data. + * @param __refs Passed to the base facet class. + */ + explicit + ctype(__c_locale __cloc, size_t __refs = 0); + + protected: + __wmask_type + _M_convert_to_wmask(const mask __m) const throw(); + + /// Destructor + virtual + ~ctype(); + + /** + * @brief Test wchar_t classification. + * + * This function finds a mask M for @a c and compares it to mask @a m. + * + * do_is() is a hook for a derived facet to change the behavior of + * classifying. do_is() must always return the same result for the + * same input. + * + * @param __c The wchar_t to find the mask of. + * @param __m The mask to compare against. + * @return (M & __m) != 0. + */ + virtual bool + do_is(mask __m, char_type __c) const; + + /** + * @brief Return a mask array. + * + * This function finds the mask for each wchar_t in the range [lo,hi) + * and successively writes it to vec. vec must have as many elements + * as the input. + * + * do_is() is a hook for a derived facet to change the behavior of + * classifying. do_is() must always return the same result for the + * same input. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __vec Pointer to an array of mask storage. + * @return @a __hi. + */ + virtual const char_type* + do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; + + /** + * @brief Find wchar_t matching mask + * + * This function searches for and returns the first wchar_t c in + * [__lo,__hi) for which is(__m,c) is true. + * + * do_scan_is() is a hook for a derived facet to change the behavior of + * match searching. do_is() must always return the same result for the + * same input. + * + * @param __m The mask to compare against. + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return Pointer to a matching wchar_t if found, else @a __hi. + */ + virtual const char_type* + do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; + + /** + * @brief Find wchar_t not matching mask + * + * This function searches for and returns a pointer to the first + * wchar_t c of [__lo,__hi) for which is(__m,c) is false. + * + * do_scan_is() is a hook for a derived facet to change the behavior of + * match searching. do_is() must always return the same result for the + * same input. + * + * @param __m The mask to compare against. + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return Pointer to a non-matching wchar_t if found, else @a __hi. + */ + virtual const char_type* + do_scan_not(mask __m, const char_type* __lo, + const char_type* __hi) const; + + /** + * @brief Convert to uppercase. + * + * This virtual function converts the wchar_t argument to uppercase if + * possible. If not possible (for example, '2'), returns the argument. + * + * do_toupper() is a hook for a derived facet to change the behavior of + * uppercasing. do_toupper() must always return the same result for + * the same input. + * + * @param __c The wchar_t to convert. + * @return The uppercase wchar_t if convertible, else @a __c. + */ + virtual char_type + do_toupper(char_type __c) const; + + /** + * @brief Convert array to uppercase. + * + * This virtual function converts each wchar_t in the range [lo,hi) to + * uppercase if possible. Other elements remain untouched. + * + * do_toupper() is a hook for a derived facet to change the behavior of + * uppercasing. do_toupper() must always return the same result for + * the same input. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + virtual const char_type* + do_toupper(char_type* __lo, const char_type* __hi) const; + + /** + * @brief Convert to lowercase. + * + * This virtual function converts the argument to lowercase if + * possible. If not possible (for example, '2'), returns the argument. + * + * do_tolower() is a hook for a derived facet to change the behavior of + * lowercasing. do_tolower() must always return the same result for + * the same input. + * + * @param __c The wchar_t to convert. + * @return The lowercase wchar_t if convertible, else @a __c. + */ + virtual char_type + do_tolower(char_type __c) const; + + /** + * @brief Convert array to lowercase. + * + * This virtual function converts each wchar_t in the range [lo,hi) to + * lowercase if possible. Other elements remain untouched. + * + * do_tolower() is a hook for a derived facet to change the behavior of + * lowercasing. do_tolower() must always return the same result for + * the same input. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @return @a __hi. + */ + virtual const char_type* + do_tolower(char_type* __lo, const char_type* __hi) const; + + /** + * @brief Widen char to wchar_t + * + * This virtual function converts the char to wchar_t using the + * simplest reasonable transformation. For an underived ctype + * facet, the argument will be cast to wchar_t. + * + * do_widen() is a hook for a derived facet to change the behavior of + * widening. do_widen() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The char to convert. + * @return The converted wchar_t. + */ + virtual char_type + do_widen(char __c) const; + + /** + * @brief Widen char array to wchar_t array + * + * This function converts each char in the input to wchar_t using the + * simplest reasonable transformation. For an underived ctype + * facet, the argument will be copied, casting each element to wchar_t. + * + * do_widen() is a hook for a derived facet to change the behavior of + * widening. do_widen() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to start range. + * @param __hi Pointer to end of range. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + virtual const char* + do_widen(const char* __lo, const char* __hi, char_type* __to) const; + + /** + * @brief Narrow wchar_t to char + * + * This virtual function converts the argument to char using + * the simplest reasonable transformation. If the conversion + * fails, dfault is returned instead. For an underived + * ctype facet, @a c will be cast to char and + * returned. + * + * do_narrow() is a hook for a derived facet to change the + * behavior of narrowing. do_narrow() must always return the + * same result for the same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __c The wchar_t to convert. + * @param __dfault Char to return if conversion fails. + * @return The converted char. + */ + virtual char + do_narrow(char_type __c, char __dfault) const; + + /** + * @brief Narrow wchar_t array to char array + * + * This virtual function converts each wchar_t in the range [lo,hi) to + * char using the simplest reasonable transformation and writes the + * results to the destination array. For any wchar_t in the input that + * cannot be converted, @a dfault is used instead. For an underived + * ctype facet, the argument will be copied, casting each + * element to char. + * + * do_narrow() is a hook for a derived facet to change the behavior of + * narrowing. do_narrow() must always return the same result for the + * same input. + * + * Note: this is not what you want for codepage conversions. See + * codecvt for that. + * + * @param __lo Pointer to start of range. + * @param __hi Pointer to end of range. + * @param __dfault Char to use if conversion fails. + * @param __to Pointer to the destination array. + * @return @a __hi. + */ + virtual const char_type* + do_narrow(const char_type* __lo, const char_type* __hi, + char __dfault, char* __to) const; + + // For use at construction time only. + void + _M_initialize_ctype() throw(); + }; +#endif //_GLIBCXX_USE_WCHAR_T + + /// class ctype_byname [22.2.1.2]. + 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() { }; + }; + + /// 22.2.1.4 Class ctype_byname specializations. + template<> + class ctype_byname : public ctype + { + public: + explicit + ctype_byname(const char* __s, size_t __refs = 0); + + protected: + virtual + ~ctype_byname(); + }; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + class ctype_byname : public ctype + { + public: + explicit + ctype_byname(const char* __s, size_t __refs = 0); + + protected: + virtual + ~ctype_byname(); + }; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +// Include host and configuration specific ctype inlines. +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // 22.2.2 The numeric category. + class __num_base + { + public: + // NB: Code depends on the order of _S_atoms_out elements. + // Below are the indices into _S_atoms_out. + 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, // For scientific notation, 'e' + _S_oE = _S_oudigits + 14, // For scientific notation, 'E' + _S_oend = _S_oudigits_end + }; + + // A list of valid numeric literals for output. This array + // contains chars that will be passed through the current locale's + // ctype<_CharT>.widen() and then used to render numbers. + // For the standard "C" locale, this is + // "-+xX0123456789abcdef0123456789ABCDEF". + static const char* _S_atoms_out; + + // String literal of acceptable (narrow) input, for num_get. + // "-+xX0123456789abcdefABCDEF" + 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 + }; + + // num_put + // Construct and return valid scanf format for floating point types. + 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; + + // A list of valid numeric literals for output: in the standard + // "C" locale, this is "-+xX0123456789abcdef0123456789ABCDEF". + // This array contains the chars after having been passed + // through the current locale's ctype<_CharT>.widen(). + _CharT _M_atoms_out[__num_base::_S_oend]; + + // A list of valid numeric literals for input: in the standard + // "C" locale, this is "-+xX0123456789abcdefABCDEF" + // This array contains the chars after having been passed + // through the current locale's ctype<_CharT>.widen(). + _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; + } + } + + /** + * @brief Primary class template numpunct. + * @ingroup locales + * + * This facet stores several pieces of information related to printing and + * scanning numbers, such as the decimal point character. It takes a + * template parameter specifying the char type. The numpunct facet is + * used by streams for many I/O operations involving numbers. + * + * The numpunct template uses protected virtual functions to provide the + * actual results. The public accessors forward the call to the virtual + * functions. These virtual functions are hooks for developers to + * implement the behavior they require from a numpunct facet. + */ + template + class numpunct : public locale::facet + { + public: + // Types: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + //@} + typedef __numpunct_cache<_CharT> __cache_type; + + protected: + __cache_type* _M_data; + + public: + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Numpunct constructor. + * + * @param __refs Refcount to pass to the base class. + */ + explicit + numpunct(size_t __refs = 0) + : facet(__refs), _M_data(0) + { _M_initialize_numpunct(); } + + /** + * @brief Internal constructor. Not for general use. + * + * This is a constructor for use by the library itself to set up the + * predefined locale facets. + * + * @param __cache __numpunct_cache object. + * @param __refs Refcount to pass to the base class. + */ + explicit + numpunct(__cache_type* __cache, size_t __refs = 0) + : facet(__refs), _M_data(__cache) + { _M_initialize_numpunct(); } + + /** + * @brief Internal constructor. Not for general use. + * + * This is a constructor for use by the library itself to set up new + * locales. + * + * @param __cloc The C locale. + * @param __refs Refcount to pass to the base class. + */ + explicit + numpunct(__c_locale __cloc, size_t __refs = 0) + : facet(__refs), _M_data(0) + { _M_initialize_numpunct(__cloc); } + + /** + * @brief Return decimal point character. + * + * This function returns a char_type to use as a decimal point. It + * does so by returning returning + * numpunct::do_decimal_point(). + * + * @return @a char_type representing a decimal point. + */ + char_type + decimal_point() const + { return this->do_decimal_point(); } + + /** + * @brief Return thousands separator character. + * + * This function returns a char_type to use as a thousands + * separator. It does so by returning returning + * numpunct::do_thousands_sep(). + * + * @return char_type representing a thousands separator. + */ + char_type + thousands_sep() const + { return this->do_thousands_sep(); } + + /** + * @brief Return grouping specification. + * + * This function returns a string representing groupings for the + * integer part of a number. Groupings indicate where thousands + * separators should be inserted in the integer part of a number. + * + * Each char in the return string is interpret as an integer + * rather than a character. These numbers represent the number + * of digits in a group. The first char in the string + * represents the number of digits in the least significant + * group. If a char is negative, it indicates an unlimited + * number of digits for the group. If more chars from the + * string are required to group a number, the last char is used + * repeatedly. + * + * For example, if the grouping() returns "\003\002" and is + * applied to the number 123456789, this corresponds to + * 12,34,56,789. Note that if the string was "32", this would + * put more than 50 digits into the least significant group if + * the character set is ASCII. + * + * The string is returned by calling + * numpunct::do_grouping(). + * + * @return string representing grouping specification. + */ + string + grouping() const + { return this->do_grouping(); } + + /** + * @brief Return string representation of bool true. + * + * This function returns a string_type containing the text + * representation for true bool variables. It does so by calling + * numpunct::do_truename(). + * + * @return string_type representing printed form of true. + */ + string_type + truename() const + { return this->do_truename(); } + + /** + * @brief Return string representation of bool false. + * + * This function returns a string_type containing the text + * representation for false bool variables. It does so by calling + * numpunct::do_falsename(). + * + * @return string_type representing printed form of false. + */ + string_type + falsename() const + { return this->do_falsename(); } + + protected: + /// Destructor. + virtual + ~numpunct(); + + /** + * @brief Return decimal point character. + * + * Returns a char_type to use as a decimal point. This function is a + * hook for derived classes to change the value returned. + * + * @return @a char_type representing a decimal point. + */ + virtual char_type + do_decimal_point() const + { return _M_data->_M_decimal_point; } + + /** + * @brief Return thousands separator character. + * + * Returns a char_type to use as a thousands separator. This function + * is a hook for derived classes to change the value returned. + * + * @return @a char_type representing a thousands separator. + */ + virtual char_type + do_thousands_sep() const + { return _M_data->_M_thousands_sep; } + + /** + * @brief Return grouping specification. + * + * Returns a string representing groupings for the integer part of a + * number. This function is a hook for derived classes to change the + * value returned. @see grouping() for details. + * + * @return String representing grouping specification. + */ + virtual string + do_grouping() const + { return _M_data->_M_grouping; } + + /** + * @brief Return string representation of bool true. + * + * Returns a string_type containing the text representation for true + * bool variables. This function is a hook for derived classes to + * change the value returned. + * + * @return string_type representing printed form of true. + */ + virtual string_type + do_truename() const + { return _M_data->_M_truename; } + + /** + * @brief Return string representation of bool false. + * + * Returns a string_type containing the text representation for false + * bool variables. This function is a hook for derived classes to + * change the value returned. + * + * @return string_type representing printed form of false. + */ + virtual string_type + do_falsename() const + { return _M_data->_M_falsename; } + + // For use at construction time only. + 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); + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + numpunct::~numpunct(); + + template<> + void + numpunct::_M_initialize_numpunct(__c_locale __cloc); +#endif + + /// class numpunct_byname [22.2.3.2]. + 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() { } + }; + +_GLIBCXX_BEGIN_NAMESPACE_LDBL + + /** + * @brief Primary class template num_get. + * @ingroup locales + * + * This facet encapsulates the code to parse and return a number + * from a string. It is used by the istream numeric extraction + * operators. + * + * The num_get template uses protected virtual functions to provide the + * actual results. The public accessors forward the call to the virtual + * functions. These virtual functions are hooks for developers to + * implement the behavior they require from the num_get facet. + */ + template + class num_get : public locale::facet + { + public: + // Types: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef _InIter iter_type; + //@} + + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + num_get(size_t __refs = 0) : facet(__refs) { } + + /** + * @brief Numeric parsing. + * + * Parses the input stream into the bool @a v. It does so by calling + * num_get::do_get(). + * + * If ios_base::boolalpha is set, attempts to read + * ctype::truename() or ctype::falsename(). Sets + * @a v to true or false if successful. Sets err to + * ios_base::failbit if reading the string fails. Sets err to + * ios_base::eofbit if the stream is emptied. + * + * If ios_base::boolalpha is not set, proceeds as with reading a long, + * except if the value is 1, sets @a v to true, if the value is 0, sets + * @a v to false, and otherwise set err to ios_base::failbit. + * + * @param __in Start of input stream. + * @param __end End of input stream. + * @param __io Source of locale and flags. + * @param __err Error flags to set. + * @param __v Value to format and insert. + * @return Iterator after reading. + */ + 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); } + + //@{ + /** + * @brief Numeric parsing. + * + * Parses the input stream into the integral variable @a v. It does so + * by calling num_get::do_get(). + * + * Parsing is affected by the flag settings in @a io. + * + * The basic parse is affected by the value of io.flags() & + * ios_base::basefield. If equal to ios_base::oct, parses like the + * scanf %o specifier. Else if equal to ios_base::hex, parses like %X + * specifier. Else if basefield equal to 0, parses like the %i + * specifier. Otherwise, parses like %d for signed and %u for unsigned + * types. The matching type length modifier is also used. + * + * Digit grouping is interpreted according to + * numpunct::grouping() and numpunct::thousands_sep(). If the + * pattern of digit groups isn't consistent, sets err to + * ios_base::failbit. + * + * If parsing the string yields a valid value for @a v, @a v is set. + * Otherwise, sets err to ios_base::failbit and leaves @a v unaltered. + * Sets err to ios_base::eofbit if the stream is emptied. + * + * @param __in Start of input stream. + * @param __end End of input stream. + * @param __io Source of locale and flags. + * @param __err Error flags to set. + * @param __v Value to format and insert. + * @return Iterator after reading. + */ + 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); } + +#ifdef _GLIBCXX_USE_LONG_LONG + 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); } +#endif + //@} + + //@{ + /** + * @brief Numeric parsing. + * + * Parses the input stream into the integral variable @a v. It does so + * by calling num_get::do_get(). + * + * The input characters are parsed like the scanf %g specifier. The + * matching type length modifier is also used. + * + * The decimal point character used is numpunct::decimal_point(). + * Digit grouping is interpreted according to + * numpunct::grouping() and numpunct::thousands_sep(). If the + * pattern of digit groups isn't consistent, sets err to + * ios_base::failbit. + * + * If parsing the string yields a valid value for @a v, @a v is set. + * Otherwise, sets err to ios_base::failbit and leaves @a v unaltered. + * Sets err to ios_base::eofbit if the stream is emptied. + * + * @param __in Start of input stream. + * @param __end End of input stream. + * @param __io Source of locale and flags. + * @param __err Error flags to set. + * @param __v Value to format and insert. + * @return Iterator after reading. + */ + 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); } + //@} + + /** + * @brief Numeric parsing. + * + * Parses the input stream into the pointer variable @a v. It does so + * by calling num_get::do_get(). + * + * The input characters are parsed like the scanf %p specifier. + * + * Digit grouping is interpreted according to + * numpunct::grouping() and numpunct::thousands_sep(). If the + * pattern of digit groups isn't consistent, sets err to + * ios_base::failbit. + * + * Note that the digit grouping effect for pointers is a bit ambiguous + * in the standard and shouldn't be relied on. See DR 344. + * + * If parsing the string yields a valid value for @a v, @a v is set. + * Otherwise, sets err to ios_base::failbit and leaves @a v unaltered. + * Sets err to ios_base::eofbit if the stream is emptied. + * + * @param __in Start of input stream. + * @param __end End of input stream. + * @param __io Source of locale and flags. + * @param __err Error flags to set. + * @param __v Value to format and insert. + * @return Iterator after reading. + */ + 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: + /// Destructor. + 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; + } + + //@{ + /** + * @brief Numeric parsing. + * + * Parses the input stream into the variable @a v. This function is a + * hook for derived classes to change the value returned. @see get() + * for more details. + * + * @param __beg Start of input stream. + * @param __end End of input stream. + * @param __io Source of locale and flags. + * @param __err Error flags to set. + * @param __v Value to format and insert. + * @return Iterator after reading. + */ + 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); } + +#ifdef _GLIBCXX_USE_LONG_LONG + 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); } +#endif + + 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; + + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + __do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, + double&) const; +#else + virtual iter_type + do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, + long double&) const; +#endif + + virtual iter_type + do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; + + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, + long double&) const; +#endif + //@} + }; + + template + locale::id num_get<_CharT, _InIter>::id; + + + /** + * @brief Primary class template num_put. + * @ingroup locales + * + * This facet encapsulates the code to convert a number to a string. It is + * used by the ostream numeric insertion operators. + * + * The num_put template uses protected virtual functions to provide the + * actual results. The public accessors forward the call to the virtual + * functions. These virtual functions are hooks for developers to + * implement the behavior they require from the num_put facet. + */ + template + class num_put : public locale::facet + { + public: + // Types: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef _OutIter iter_type; + //@} + + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + num_put(size_t __refs = 0) : facet(__refs) { } + + /** + * @brief Numeric formatting. + * + * Formats the boolean @a v and inserts it into a stream. It does so + * by calling num_put::do_put(). + * + * If ios_base::boolalpha is set, writes ctype::truename() or + * ctype::falsename(). Otherwise formats @a v as an int. + * + * @param __s Stream to write to. + * @param __io Source of locale and flags. + * @param __fill Char_type to use for filling. + * @param __v Value to format and insert. + * @return Iterator after writing. + */ + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const + { return this->do_put(__s, __io, __fill, __v); } + + //@{ + /** + * @brief Numeric formatting. + * + * Formats the integral value @a v and inserts it into a + * stream. It does so by calling num_put::do_put(). + * + * Formatting is affected by the flag settings in @a io. + * + * The basic format is affected by the value of io.flags() & + * ios_base::basefield. If equal to ios_base::oct, formats like the + * printf %o specifier. Else if equal to ios_base::hex, formats like + * %x or %X with ios_base::uppercase unset or set respectively. + * Otherwise, formats like %d, %ld, %lld for signed and %u, %lu, %llu + * for unsigned values. Note that if both oct and hex are set, neither + * will take effect. + * + * If ios_base::showpos is set, '+' is output before positive values. + * If ios_base::showbase is set, '0' precedes octal values (except 0) + * and '0[xX]' precedes hex values. + * + * The decimal point character used is numpunct::decimal_point(). + * Thousands separators are inserted according to + * numpunct::grouping() and numpunct::thousands_sep(). + * + * If io.width() is non-zero, enough @a fill characters are inserted to + * make the result at least that wide. If + * (io.flags() & ios_base::adjustfield) == ios_base::left, result is + * padded at the end. If ios_base::internal, then padding occurs + * immediately after either a '+' or '-' or after '0x' or '0X'. + * Otherwise, padding occurs at the beginning. + * + * @param __s Stream to write to. + * @param __io Source of locale and flags. + * @param __fill Char_type to use for filling. + * @param __v Value to format and insert. + * @return Iterator after writing. + */ + 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); } + +#ifdef _GLIBCXX_USE_LONG_LONG + 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); } +#endif + //@} + + //@{ + /** + * @brief Numeric formatting. + * + * Formats the floating point value @a v and inserts it into a stream. + * It does so by calling num_put::do_put(). + * + * Formatting is affected by the flag settings in @a io. + * + * The basic format is affected by the value of io.flags() & + * ios_base::floatfield. If equal to ios_base::fixed, formats like the + * printf %f specifier. Else if equal to ios_base::scientific, formats + * like %e or %E with ios_base::uppercase unset or set respectively. + * Otherwise, formats like %g or %G depending on uppercase. Note that + * if both fixed and scientific are set, the effect will also be like + * %g or %G. + * + * The output precision is given by io.precision(). This precision is + * capped at numeric_limits::digits10 + 2 (different for double and + * long double). The default precision is 6. + * + * If ios_base::showpos is set, '+' is output before positive values. + * If ios_base::showpoint is set, a decimal point will always be + * output. + * + * The decimal point character used is numpunct::decimal_point(). + * Thousands separators are inserted according to + * numpunct::grouping() and numpunct::thousands_sep(). + * + * If io.width() is non-zero, enough @a fill characters are inserted to + * make the result at least that wide. If + * (io.flags() & ios_base::adjustfield) == ios_base::left, result is + * padded at the end. If ios_base::internal, then padding occurs + * immediately after either a '+' or '-' or after '0x' or '0X'. + * Otherwise, padding occurs at the beginning. + * + * @param __s Stream to write to. + * @param __io Source of locale and flags. + * @param __fill Char_type to use for filling. + * @param __v Value to format and insert. + * @return Iterator after writing. + */ + 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); } + //@} + + /** + * @brief Numeric formatting. + * + * Formats the pointer value @a v and inserts it into a stream. It + * does so by calling num_put::do_put(). + * + * This function formats @a v as an unsigned long with ios_base::hex + * and ios_base::showbase set. + * + * @param __s Stream to write to. + * @param __io Source of locale and flags. + * @param __fill Char_type to use for filling. + * @param __v Value to format and insert. + * @return Iterator after writing. + */ + 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; + + /// Destructor. + virtual + ~num_put() { }; + + //@{ + /** + * @brief Numeric formatting. + * + * These functions do the work of formatting numeric values and + * inserting them into a stream. This function is a hook for derived + * classes to change the value returned. + * + * @param __s Stream to write to. + * @param __io Source of locale and flags. + * @param __fill Char_type to use for filling. + * @param __v Value to format and insert. + * @return Iterator after writing. + */ + 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); } + +#ifdef _GLIBCXX_USE_LONG_LONG + 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); } +#endif + + virtual iter_type + do_put(iter_type, ios_base&, char_type, double) const; + + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + __do_put(iter_type, ios_base&, char_type, double) const; +#else + virtual iter_type + do_put(iter_type, ios_base&, char_type, long double) const; +#endif + + virtual iter_type + do_put(iter_type, ios_base&, char_type, const void*) const; + + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + do_put(iter_type, ios_base&, char_type, long double) const; +#endif + //@} + }; + + template + locale::id num_put<_CharT, _OutIter>::id; + +_GLIBCXX_END_NAMESPACE_LDBL + + // Subclause convenience interfaces, inlines. + // NB: These are inline because, when used in a loop, some compilers + // can hoist the body out of the loop; then it's just as fast as the + // C is*() function. + + /// Convenience interface to ctype.is(ctype_base::space, __c). + template + inline bool + isspace(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::space, __c); } + + /// Convenience interface to ctype.is(ctype_base::print, __c). + template + inline bool + isprint(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::print, __c); } + + /// Convenience interface to ctype.is(ctype_base::cntrl, __c). + template + inline bool + iscntrl(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::cntrl, __c); } + + /// Convenience interface to ctype.is(ctype_base::upper, __c). + template + inline bool + isupper(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::upper, __c); } + + /// Convenience interface to ctype.is(ctype_base::lower, __c). + template + inline bool + islower(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::lower, __c); } + + /// Convenience interface to ctype.is(ctype_base::alpha, __c). + template + inline bool + isalpha(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::alpha, __c); } + + /// Convenience interface to ctype.is(ctype_base::digit, __c). + template + inline bool + isdigit(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::digit, __c); } + + /// Convenience interface to ctype.is(ctype_base::punct, __c). + template + inline bool + ispunct(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::punct, __c); } + + /// Convenience interface to ctype.is(ctype_base::xdigit, __c). + template + inline bool + isxdigit(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::xdigit, __c); } + + /// Convenience interface to ctype.is(ctype_base::alnum, __c). + template + inline bool + isalnum(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::alnum, __c); } + + /// Convenience interface to ctype.is(ctype_base::graph, __c). + template + inline bool + isgraph(_CharT __c, const locale& __loc) + { return use_facet >(__loc).is(ctype_base::graph, __c); } + + /// Convenience interface to ctype.toupper(__c). + template + inline _CharT + toupper(_CharT __c, const locale& __loc) + { return use_facet >(__loc).toupper(__c); } + + /// Convenience interface to ctype.tolower(__c). + template + inline _CharT + tolower(_CharT __c, const locale& __loc) + { return use_facet >(__loc).tolower(__c); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +# include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets.tcc new file mode 100644 index 0000000..f5cba3c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets.tcc @@ -0,0 +1,1360 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/locale_facets.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +#ifndef _LOCALE_FACETS_TCC +#define _LOCALE_FACETS_TCC 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Routine to access a cache for the facet. If the cache didn't + // exist before, it gets constructed on the fly. + template + struct __use_cache + { + const _Facet* + operator() (const locale& __loc) const; + }; + + // Specializations. + 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; + __try + { + __tmp = new __numpunct_cache<_CharT>; + __tmp->_M_cache(__loc); + } + __catch(...) + { + delete __tmp; + __throw_exception_again; + } + __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; + __try + { + _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); + } + __catch(...) + { + delete [] __grouping; + delete [] __truename; + delete [] __falsename; + __throw_exception_again; + } + } + + // Used by both numeric and monetary facets. + // Check to make sure that the __grouping_tmp string constructed in + // money_get or num_get matches the canonical grouping for a given + // locale. + // __grouping_tmp is parsed L to R + // 1,222,444 == __grouping_tmp of "\1\3\3" + // __grouping is parsed R to L + // 1,222,444 == __grouping of "\3" == "\3\3\3" + _GLIBCXX_PURE bool + __verify_grouping(const char* __grouping, size_t __grouping_size, + const string& __grouping_tmp) throw (); + +_GLIBCXX_BEGIN_NAMESPACE_LDBL + + 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(); + + // True if __beg becomes equal to __end. + bool __testeof = __beg == __end; + + // First check for sign. + 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; + } + } + + // Next, look for leading zeros. + 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; + } + + // Only need acceptable digits for floating point numbers. + 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) + // "C" locale + 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) + { + // Scientific notation. + __xtrc += 'e'; + __found_sci = true; + + // Remove optional plus or minus sign, if they exist. + 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) + { + // According to 22.2.2.1.2, p8-9, first look for thousands_sep + // and decimal_point. + if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) + { + if (!__found_dec && !__found_sci) + { + // NB: Thousands separator at the beginning of a string + // is a no-no, as is two consecutive thousands separators. + if (__sep_pos) + { + __found_grouping += static_cast(__sep_pos); + __sep_pos = 0; + } + else + { + // NB: __convert_to_v will not assign __v and will + // set the failbit. + __xtrc.clear(); + break; + } + } + else + break; + } + else if (__c == __lc->_M_decimal_point) + { + if (!__found_dec && !__found_sci) + { + // If no grouping chars are seen, no grouping check + // is applied. Therefore __found_grouping is adjusted + // only if decimal_point comes after some thousands_sep. + 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) + { + // Scientific notation. + if (__found_grouping.size() && !__found_dec) + __found_grouping += static_cast(__sep_pos); + __xtrc += 'e'; + __found_sci = true; + + // Remove optional plus or minus sign, if they exist. + 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; + } + + // Digit grouping is checked. If grouping and found_grouping don't + // match, then get very very upset, and set failbit. + if (__found_grouping.size()) + { + // Add the ending grouping if a decimal or 'e'/'E' wasn't found. + 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(); + + // NB: Iff __basefield == 0, __base can change based on contents. + 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); + + // True if __beg becomes equal to __end. + bool __testeof = __beg == __end; + + // First check for sign. + 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; + } + } + + // Next, look for leading zeros and check required digits + // for base formats. + 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; + } + + // At this point, base is determined. If not hex, only allow + // base digits as valid input. + const size_t __len = (__base == 16 ? __num_base::_S_iend + - __num_base::_S_izero : __base); + + // Extract. + 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) + // "C" locale + 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) + { + // According to 22.2.2.1.2, p8-9, first look for thousands_sep + // and decimal_point. + if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) + { + // NB: Thousands separator at the beginning of a string + // is a no-no, as is two consecutive thousands separators. + 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; + } + + // Digit grouping is checked. If grouping and found_grouping don't + // match, then get very very upset, and set failbit. + if (__found_grouping.size()) + { + // Add the ending grouping. + __found_grouping += static_cast(__sep_pos); + + if (!std::__verify_grouping(__lc->_M_grouping, + __lc->_M_grouping_size, + __found_grouping)) + __err = ios_base::failbit; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 23. Num_get overflow result. + 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; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 17. Bad bool parsing + 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)) + { + // Parse bool values as long. + // NB: We can't just call do_get(long) here, as it might + // refer to a derived class. + long __l = -1; + __beg = _M_extract_int(__beg, __end, __io, __err, __l); + if (__l == 0 || __l == 1) + __v = bool(__l); + else + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 23. Num_get overflow result. + __v = true; + __err = ios_base::failbit; + if (__beg == __end) + __err |= ios_base::eofbit; + } + } + else + { + // Parse bool values as alphanumeric. + 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 + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 23. Num_get overflow result. + __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; + } + +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + 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; + } +#endif + + 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 + { + // Prepare for hex formatted input. + 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); + + // Reset from hex formatted input. + __io.flags(__fmt); + + __v = reinterpret_cast(__ul); + return __beg; + } + + // For use by integer and floating-point types after they have been + // converted into a char_type string. + template + void + num_put<_CharT, _OutIter>:: + _M_pad(_CharT __fill, streamsize __w, ios_base& __io, + _CharT* __new, const _CharT* __cs, int& __len) const + { + // [22.2.2.2.2] Stage 3. + // If necessary, pad. + __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, + __cs, __w, __len); + __len = static_cast(__w); + } + +_GLIBCXX_END_NAMESPACE_LDBL + + 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)) + { + // Decimal. + do + { + *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; + __v /= 10; + } + while (__v != 0); + } + else if ((__flags & ios_base::basefield) == ios_base::oct) + { + // Octal. + do + { + *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; + __v >>= 3; + } + while (__v != 0); + } + else + { + // Hex. + 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; + } + +_GLIBCXX_BEGIN_NAMESPACE_LDBL + + 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(); + + // Long enough to hold hex, dec, and octal representations. + const int __ilen = 5 * sizeof(_ValueT); + _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * __ilen)); + + // [22.2.2.2.2] Stage 1, numeric conversion to character. + // Result is returned right-justified in the buffer. + 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; + + // Add grouping, if necessary. + if (__lc->_M_use_grouping) + { + // Grouping can add (almost) as many separators as the number + // of digits + space is reserved for numeric base or sign. + _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; + } + + // Complete Stage 1, prepend numeric base or sign. + if (__builtin_expect(__dec, true)) + { + // Decimal. + 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 + { + // 'x' or 'X' + const bool __uppercase = __flags & ios_base::uppercase; + *--__cs = __lit[__num_base::_S_ox + __uppercase]; + // '0' + *--__cs = __lit[__num_base::_S_odigits]; + __len += 2; + } + } + + // Pad. + 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); + + // [22.2.2.2.2] Stage 4. + // Write resulting, fully-formatted string to output iterator. + 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 + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 282. What types does numpunct grouping refer to? + // Add grouping, if necessary. + const int __declen = __p ? __p - __cs : __len; + _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, + __grouping_size, + __cs, __cs + __declen); + + // Tack on decimal part. + int __newlen = __p2 - __new; + if (__p) + { + char_traits<_CharT>::copy(__p2, __p, __len - __declen); + __newlen += __len - __declen; + } + __len = __newlen; + } + + // The following code uses vsnprintf (or vsprintf(), when + // _GLIBCXX_USE_C99 is not defined) to convert floating point values + // for insertion into a stream. An optimization would be to replace + // them with code that works directly on a wide buffer and then use + // __pad to do the padding. It would be good to replace them anyway + // to gain back the efficiency that C++ provides by knowing up front + // the type of the values to insert. Also, sprintf is dangerous + // since may lead to accidental buffer overruns. This + // implementation follows the C++ standard fairly directly as + // outlined in 22.2.2.2 [lib.locale.num.put] + 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); + + // Use default precision if out of range. + const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); + + const int __max_digits = + __gnu_cxx::__numeric_traits<_ValueT>::__digits10; + + // [22.2.2.2.2] Stage 1, numeric conversion to character. + int __len; + // Long enough for the max format spec. + char __fbuf[16]; + __num_base::_S_format_float(__io, __fbuf, __mod); + +#ifdef _GLIBCXX_USE_C99 + // First try a buffer perhaps big enough (most probably sufficient + // for non-ios_base::fixed outputs) + 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 the buffer was not large enough, try again with the correct size. + 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); + } +#else + // Consider the possibility of long ios_base::fixed outputs + const bool __fixed = __io.flags() & ios_base::fixed; + const int __max_exp = + __gnu_cxx::__numeric_traits<_ValueT>::__max_exponent10; + + // The size of the output string is computed as follows. + // ios_base::fixed outputs may need up to __max_exp + 1 chars + // for the integer part + __prec chars for the fractional part + // + 3 chars for sign, decimal point, '\0'. On the other hand, + // for non-fixed outputs __max_digits * 2 + __prec chars are + // largely sufficient. + const int __cs_size = __fixed ? __max_exp + __prec + 4 + : __max_digits * 2 + __prec; + char* __cs = static_cast(__builtin_alloca(__cs_size)); + __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, __fbuf, + __prec, __v); +#endif + + // [22.2.2.2.2] Stage 2, convert to char_type, using correct + // numpunct.decimal_point() values for '.' and adding grouping. + const ctype<_CharT>& __ctype = use_facet >(__loc); + + _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) + * __len)); + __ctype.widen(__cs, __cs + __len, __ws); + + // Replace decimal point. + _CharT* __wp = 0; + const char* __p = char_traits::find(__cs, __len, '.'); + if (__p) + { + __wp = __ws + (__p - __cs); + *__wp = __lc->_M_decimal_point; + } + + // Add grouping, if necessary. + // N.B. Make sure to not group things like 2e20, i.e., no decimal + // point, scientific notation. + if (__lc->_M_use_grouping + && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' + && __cs[1] >= '0' && __cs[2] >= '0'))) + { + // Grouping can add (almost) as many separators as the + // number of digits, but no more. + _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; + } + + // Pad. + 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); + + // [22.2.2.2.2] Stage 4. + // Write resulting, fully-formatted string to output iterator. + 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); } + +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + 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); } +#endif + + 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; + } + +_GLIBCXX_END_NAMESPACE_LDBL + + // Construct correctly padded string, as per 22.2.2.2.2 + // Assumes + // __newlen > __oldlen + // __news is allocated for __newlen size + + // NB: Of the two parameters, _CharT can be deduced from the + // function arguments. The other (_Traits) has to be explicitly specified. + 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; + + // Padding last. + 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) + { + // Pad after the sign, if there is one. + // Pad after 0[xX], if there is one. + // Who came up with these rules, anyway? Jeeze. + 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; + } + // else Padding first. + } + _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; + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template class numpunct; + extern template class numpunct_byname; + extern template class _GLIBCXX_NAMESPACE_LDBL num_get; + extern template class _GLIBCXX_NAMESPACE_LDBL 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&); + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template class numpunct; + extern template class numpunct_byname; + extern template class _GLIBCXX_NAMESPACE_LDBL num_get; + extern template class _GLIBCXX_NAMESPACE_LDBL 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&); +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets_nonio.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets_nonio.h new file mode 100644 index 0000000..2ab1d2e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets_nonio.h @@ -0,0 +1,1905 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/locale_facets_nonio.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +#ifndef _LOCALE_FACETS_NONIO_H +#define _LOCALE_FACETS_NONIO_H 1 + +#pragma GCC system_header + +#include // For struct tm + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief Time format ordering data. + * @ingroup locales + * + * This class provides an enum representing different orderings of + * time: day, month, and year. + */ + class time_base + { + public: + enum dateorder { no_order, dmy, mdy, ymd, ydm }; + }; + + template + struct __timepunct_cache : public locale::facet + { + // List of all known timezones, with GMT first. + static const _CharT* _S_timezones[14]; + + const _CharT* _M_date_format; + const _CharT* _M_date_era_format; + const _CharT* _M_time_format; + const _CharT* _M_time_era_format; + const _CharT* _M_date_time_format; + const _CharT* _M_date_time_era_format; + const _CharT* _M_am; + const _CharT* _M_pm; + const _CharT* _M_am_pm_format; + + // Day names, starting with "C"'s Sunday. + const _CharT* _M_day1; + const _CharT* _M_day2; + const _CharT* _M_day3; + const _CharT* _M_day4; + const _CharT* _M_day5; + const _CharT* _M_day6; + const _CharT* _M_day7; + + // Abbreviated day names, starting with "C"'s Sun. + const _CharT* _M_aday1; + const _CharT* _M_aday2; + const _CharT* _M_aday3; + const _CharT* _M_aday4; + const _CharT* _M_aday5; + const _CharT* _M_aday6; + const _CharT* _M_aday7; + + // Month names, starting with "C"'s January. + const _CharT* _M_month01; + const _CharT* _M_month02; + const _CharT* _M_month03; + const _CharT* _M_month04; + const _CharT* _M_month05; + const _CharT* _M_month06; + const _CharT* _M_month07; + const _CharT* _M_month08; + const _CharT* _M_month09; + const _CharT* _M_month10; + const _CharT* _M_month11; + const _CharT* _M_month12; + + // Abbreviated month names, starting with "C"'s Jan. + const _CharT* _M_amonth01; + const _CharT* _M_amonth02; + const _CharT* _M_amonth03; + const _CharT* _M_amonth04; + const _CharT* _M_amonth05; + const _CharT* _M_amonth06; + const _CharT* _M_amonth07; + const _CharT* _M_amonth08; + const _CharT* _M_amonth09; + const _CharT* _M_amonth10; + const _CharT* _M_amonth11; + const _CharT* _M_amonth12; + + bool _M_allocated; + + __timepunct_cache(size_t __refs = 0) : facet(__refs), + _M_date_format(0), _M_date_era_format(0), _M_time_format(0), + _M_time_era_format(0), _M_date_time_format(0), + _M_date_time_era_format(0), _M_am(0), _M_pm(0), + _M_am_pm_format(0), _M_day1(0), _M_day2(0), _M_day3(0), + _M_day4(0), _M_day5(0), _M_day6(0), _M_day7(0), + _M_aday1(0), _M_aday2(0), _M_aday3(0), _M_aday4(0), + _M_aday5(0), _M_aday6(0), _M_aday7(0), _M_month01(0), + _M_month02(0), _M_month03(0), _M_month04(0), _M_month05(0), + _M_month06(0), _M_month07(0), _M_month08(0), _M_month09(0), + _M_month10(0), _M_month11(0), _M_month12(0), _M_amonth01(0), + _M_amonth02(0), _M_amonth03(0), _M_amonth04(0), + _M_amonth05(0), _M_amonth06(0), _M_amonth07(0), + _M_amonth08(0), _M_amonth09(0), _M_amonth10(0), + _M_amonth11(0), _M_amonth12(0), _M_allocated(false) + { } + + ~__timepunct_cache(); + + void + _M_cache(const locale& __loc); + + private: + __timepunct_cache& + operator=(const __timepunct_cache&); + + explicit + __timepunct_cache(const __timepunct_cache&); + }; + + template + __timepunct_cache<_CharT>::~__timepunct_cache() + { + if (_M_allocated) + { + // Unused. + } + } + + // Specializations. + template<> + const char* + __timepunct_cache::_S_timezones[14]; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + const wchar_t* + __timepunct_cache::_S_timezones[14]; +#endif + + // Generic. + template + const _CharT* __timepunct_cache<_CharT>::_S_timezones[14]; + + template + class __timepunct : public locale::facet + { + public: + // Types: + typedef _CharT __char_type; + typedef basic_string<_CharT> __string_type; + typedef __timepunct_cache<_CharT> __cache_type; + + protected: + __cache_type* _M_data; + __c_locale _M_c_locale_timepunct; + const char* _M_name_timepunct; + + public: + /// Numpunct facet id. + static locale::id id; + + explicit + __timepunct(size_t __refs = 0); + + explicit + __timepunct(__cache_type* __cache, size_t __refs = 0); + + /** + * @brief Internal constructor. Not for general use. + * + * This is a constructor for use by the library itself to set up new + * locales. + * + * @param __cloc The C locale. + * @param __s The name of a locale. + * @param refs Passed to the base facet class. + */ + explicit + __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0); + + // FIXME: for error checking purposes _M_put should return the return + // value of strftime/wcsftime. + void + _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format, + const tm* __tm) const throw (); + + void + _M_date_formats(const _CharT** __date) const + { + // Always have default first. + __date[0] = _M_data->_M_date_format; + __date[1] = _M_data->_M_date_era_format; + } + + void + _M_time_formats(const _CharT** __time) const + { + // Always have default first. + __time[0] = _M_data->_M_time_format; + __time[1] = _M_data->_M_time_era_format; + } + + void + _M_date_time_formats(const _CharT** __dt) const + { + // Always have default first. + __dt[0] = _M_data->_M_date_time_format; + __dt[1] = _M_data->_M_date_time_era_format; + } + + void + _M_am_pm_format(const _CharT* __ampm) const + { __ampm = _M_data->_M_am_pm_format; } + + void + _M_am_pm(const _CharT** __ampm) const + { + __ampm[0] = _M_data->_M_am; + __ampm[1] = _M_data->_M_pm; + } + + void + _M_days(const _CharT** __days) const + { + __days[0] = _M_data->_M_day1; + __days[1] = _M_data->_M_day2; + __days[2] = _M_data->_M_day3; + __days[3] = _M_data->_M_day4; + __days[4] = _M_data->_M_day5; + __days[5] = _M_data->_M_day6; + __days[6] = _M_data->_M_day7; + } + + void + _M_days_abbreviated(const _CharT** __days) const + { + __days[0] = _M_data->_M_aday1; + __days[1] = _M_data->_M_aday2; + __days[2] = _M_data->_M_aday3; + __days[3] = _M_data->_M_aday4; + __days[4] = _M_data->_M_aday5; + __days[5] = _M_data->_M_aday6; + __days[6] = _M_data->_M_aday7; + } + + void + _M_months(const _CharT** __months) const + { + __months[0] = _M_data->_M_month01; + __months[1] = _M_data->_M_month02; + __months[2] = _M_data->_M_month03; + __months[3] = _M_data->_M_month04; + __months[4] = _M_data->_M_month05; + __months[5] = _M_data->_M_month06; + __months[6] = _M_data->_M_month07; + __months[7] = _M_data->_M_month08; + __months[8] = _M_data->_M_month09; + __months[9] = _M_data->_M_month10; + __months[10] = _M_data->_M_month11; + __months[11] = _M_data->_M_month12; + } + + void + _M_months_abbreviated(const _CharT** __months) const + { + __months[0] = _M_data->_M_amonth01; + __months[1] = _M_data->_M_amonth02; + __months[2] = _M_data->_M_amonth03; + __months[3] = _M_data->_M_amonth04; + __months[4] = _M_data->_M_amonth05; + __months[5] = _M_data->_M_amonth06; + __months[6] = _M_data->_M_amonth07; + __months[7] = _M_data->_M_amonth08; + __months[8] = _M_data->_M_amonth09; + __months[9] = _M_data->_M_amonth10; + __months[10] = _M_data->_M_amonth11; + __months[11] = _M_data->_M_amonth12; + } + + protected: + virtual + ~__timepunct(); + + // For use at construction time only. + void + _M_initialize_timepunct(__c_locale __cloc = 0); + }; + + template + locale::id __timepunct<_CharT>::id; + + // Specializations. + template<> + void + __timepunct::_M_initialize_timepunct(__c_locale __cloc); + + template<> + void + __timepunct::_M_put(char*, size_t, const char*, const tm*) const throw (); + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + void + __timepunct::_M_initialize_timepunct(__c_locale __cloc); + + template<> + void + __timepunct::_M_put(wchar_t*, size_t, const wchar_t*, + const tm*) const throw (); +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + + // Include host and configuration specific timepunct functions. + #include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief Primary class template time_get. + * @ingroup locales + * + * This facet encapsulates the code to parse and return a date or + * time from a string. It is used by the istream numeric + * extraction operators. + * + * The time_get template uses protected virtual functions to provide the + * actual results. The public accessors forward the call to the virtual + * functions. These virtual functions are hooks for developers to + * implement the behavior they require from the time_get facet. + */ + template + class time_get : public locale::facet, public time_base + { + public: + // Types: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef _InIter iter_type; + //@} + typedef basic_string<_CharT> __string_type; + + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + time_get(size_t __refs = 0) + : facet (__refs) { } + + /** + * @brief Return preferred order of month, day, and year. + * + * This function returns an enum from timebase::dateorder giving the + * preferred ordering if the format @a x given to time_put::put() only + * uses month, day, and year. If the format @a x for the associated + * locale uses other fields, this function returns + * timebase::dateorder::noorder. + * + * NOTE: The library always returns noorder at the moment. + * + * @return A member of timebase::dateorder. + */ + dateorder + date_order() const + { return this->do_date_order(); } + + /** + * @brief Parse input time string. + * + * This function parses a time according to the format @a X and puts the + * results into a user-supplied struct tm. The result is returned by + * calling time_get::do_get_time(). + * + * If there is a valid time string according to format @a X, @a tm will + * be filled in accordingly and the returned iterator will point to the + * first character beyond the time string. If an error occurs before + * the end, err |= ios_base::failbit. If parsing reads all the + * characters, err |= ios_base::eofbit. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond time string. + */ + iter_type + get_time(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const + { return this->do_get_time(__beg, __end, __io, __err, __tm); } + + /** + * @brief Parse input date string. + * + * This function parses a date according to the format @a x and puts the + * results into a user-supplied struct tm. The result is returned by + * calling time_get::do_get_date(). + * + * If there is a valid date string according to format @a x, @a tm will + * be filled in accordingly and the returned iterator will point to the + * first character beyond the date string. If an error occurs before + * the end, err |= ios_base::failbit. If parsing reads all the + * characters, err |= ios_base::eofbit. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond date string. + */ + iter_type + get_date(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const + { return this->do_get_date(__beg, __end, __io, __err, __tm); } + + /** + * @brief Parse input weekday string. + * + * This function parses a weekday name and puts the results into a + * user-supplied struct tm. The result is returned by calling + * time_get::do_get_weekday(). + * + * Parsing starts by parsing an abbreviated weekday name. If a valid + * abbreviation is followed by a character that would lead to the full + * weekday name, parsing continues until the full name is found or an + * error occurs. Otherwise parsing finishes at the end of the + * abbreviated name. + * + * If an error occurs before the end, err |= ios_base::failbit. If + * parsing reads all the characters, err |= ios_base::eofbit. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond weekday name. + */ + iter_type + get_weekday(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const + { return this->do_get_weekday(__beg, __end, __io, __err, __tm); } + + /** + * @brief Parse input month string. + * + * This function parses a month name and puts the results into a + * user-supplied struct tm. The result is returned by calling + * time_get::do_get_monthname(). + * + * Parsing starts by parsing an abbreviated month name. If a valid + * abbreviation is followed by a character that would lead to the full + * month name, parsing continues until the full name is found or an + * error occurs. Otherwise parsing finishes at the end of the + * abbreviated name. + * + * If an error occurs before the end, err |= ios_base::failbit. If + * parsing reads all the characters, err |= + * ios_base::eofbit. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond month name. + */ + iter_type + get_monthname(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const + { return this->do_get_monthname(__beg, __end, __io, __err, __tm); } + + /** + * @brief Parse input year string. + * + * This function reads up to 4 characters to parse a year string and + * puts the results into a user-supplied struct tm. The result is + * returned by calling time_get::do_get_year(). + * + * 4 consecutive digits are interpreted as a full year. If there are + * exactly 2 consecutive digits, the library interprets this as the + * number of years since 1900. + * + * If an error occurs before the end, err |= ios_base::failbit. If + * parsing reads all the characters, err |= ios_base::eofbit. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond year. + */ + iter_type + get_year(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const + { return this->do_get_year(__beg, __end, __io, __err, __tm); } + + protected: + /// Destructor. + virtual + ~time_get() { } + + /** + * @brief Return preferred order of month, day, and year. + * + * This function returns an enum from timebase::dateorder giving the + * preferred ordering if the format @a x given to time_put::put() only + * uses month, day, and year. This function is a hook for derived + * classes to change the value returned. + * + * @return A member of timebase::dateorder. + */ + virtual dateorder + do_date_order() const; + + /** + * @brief Parse input time string. + * + * This function parses a time according to the format @a x and puts the + * results into a user-supplied struct tm. This function is a hook for + * derived classes to change the value returned. @see get_time() for + * details. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond time string. + */ + virtual iter_type + do_get_time(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const; + + /** + * @brief Parse input date string. + * + * This function parses a date according to the format @a X and puts the + * results into a user-supplied struct tm. This function is a hook for + * derived classes to change the value returned. @see get_date() for + * details. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond date string. + */ + virtual iter_type + do_get_date(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const; + + /** + * @brief Parse input weekday string. + * + * This function parses a weekday name and puts the results into a + * user-supplied struct tm. This function is a hook for derived + * classes to change the value returned. @see get_weekday() for + * details. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond weekday name. + */ + virtual iter_type + do_get_weekday(iter_type __beg, iter_type __end, ios_base&, + ios_base::iostate& __err, tm* __tm) const; + + /** + * @brief Parse input month string. + * + * This function parses a month name and puts the results into a + * user-supplied struct tm. This function is a hook for derived + * classes to change the value returned. @see get_monthname() for + * details. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond month name. + */ + virtual iter_type + do_get_monthname(iter_type __beg, iter_type __end, ios_base&, + ios_base::iostate& __err, tm* __tm) const; + + /** + * @brief Parse input year string. + * + * This function reads up to 4 characters to parse a year string and + * puts the results into a user-supplied struct tm. This function is a + * hook for derived classes to change the value returned. @see + * get_year() for details. + * + * @param __beg Start of string to parse. + * @param __end End of string to parse. + * @param __io Source of the locale. + * @param __err Error flags to set. + * @param __tm Pointer to struct tm to fill in. + * @return Iterator to first char beyond year. + */ + virtual iter_type + do_get_year(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const; + + // Extract numeric component of length __len. + iter_type + _M_extract_num(iter_type __beg, iter_type __end, int& __member, + int __min, int __max, size_t __len, + ios_base& __io, ios_base::iostate& __err) const; + + // Extract any unique array of string literals in a const _CharT* array. + iter_type + _M_extract_name(iter_type __beg, iter_type __end, int& __member, + const _CharT** __names, size_t __indexlen, + ios_base& __io, ios_base::iostate& __err) const; + + // Extract day or month name in a const _CharT* array. + iter_type + _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, + const _CharT** __names, size_t __indexlen, + ios_base& __io, ios_base::iostate& __err) const; + + // Extract on a component-by-component basis, via __format argument. + iter_type + _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm, + const _CharT* __format) const; + }; + + template + locale::id time_get<_CharT, _InIter>::id; + + /// class time_get_byname [22.2.5.2]. + template + class time_get_byname : public time_get<_CharT, _InIter> + { + public: + // Types: + typedef _CharT char_type; + typedef _InIter iter_type; + + explicit + time_get_byname(const char*, size_t __refs = 0) + : time_get<_CharT, _InIter>(__refs) { } + + protected: + virtual + ~time_get_byname() { } + }; + + /** + * @brief Primary class template time_put. + * @ingroup locales + * + * This facet encapsulates the code to format and output dates and times + * according to formats used by strftime(). + * + * The time_put template uses protected virtual functions to provide the + * actual results. The public accessors forward the call to the virtual + * functions. These virtual functions are hooks for developers to + * implement the behavior they require from the time_put facet. + */ + template + class time_put : public locale::facet + { + public: + // Types: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef _OutIter iter_type; + //@} + + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + time_put(size_t __refs = 0) + : facet(__refs) { } + + /** + * @brief Format and output a time or date. + * + * This function formats the data in struct tm according to the + * provided format string. The format string is interpreted as by + * strftime(). + * + * @param __s The stream to write to. + * @param __io Source of locale. + * @param __fill char_type to use for padding. + * @param __tm Struct tm with date and time info to format. + * @param __beg Start of format string. + * @param __end End of format string. + * @return Iterator after writing. + */ + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, + const _CharT* __beg, const _CharT* __end) const; + + /** + * @brief Format and output a time or date. + * + * This function formats the data in struct tm according to the + * provided format char and optional modifier. The format and modifier + * are interpreted as by strftime(). It does so by returning + * time_put::do_put(). + * + * @param __s The stream to write to. + * @param __io Source of locale. + * @param __fill char_type to use for padding. + * @param __tm Struct tm with date and time info to format. + * @param __format Format char. + * @param __mod Optional modifier char. + * @return Iterator after writing. + */ + iter_type + put(iter_type __s, ios_base& __io, char_type __fill, + const tm* __tm, char __format, char __mod = 0) const + { return this->do_put(__s, __io, __fill, __tm, __format, __mod); } + + protected: + /// Destructor. + virtual + ~time_put() + { } + + /** + * @brief Format and output a time or date. + * + * This function formats the data in struct tm according to the + * provided format char and optional modifier. This function is a hook + * for derived classes to change the value returned. @see put() for + * more details. + * + * @param __s The stream to write to. + * @param __io Source of locale. + * @param __fill char_type to use for padding. + * @param __tm Struct tm with date and time info to format. + * @param __format Format char. + * @param __mod Optional modifier char. + * @return Iterator after writing. + */ + virtual iter_type + do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, + char __format, char __mod) const; + }; + + template + locale::id time_put<_CharT, _OutIter>::id; + + /// class time_put_byname [22.2.5.4]. + template + class time_put_byname : public time_put<_CharT, _OutIter> + { + public: + // Types: + typedef _CharT char_type; + typedef _OutIter iter_type; + + explicit + time_put_byname(const char*, size_t __refs = 0) + : time_put<_CharT, _OutIter>(__refs) + { }; + + protected: + virtual + ~time_put_byname() { } + }; + + + /** + * @brief Money format ordering data. + * @ingroup locales + * + * This class contains an ordered array of 4 fields to represent the + * pattern for formatting a money amount. Each field may contain one entry + * from the part enum. symbol, sign, and value must be present and the + * remaining field must contain either none or space. @see + * moneypunct::pos_format() and moneypunct::neg_format() for details of how + * these fields are interpreted. + */ + class money_base + { + public: + enum part { none, space, symbol, sign, value }; + struct pattern { char field[4]; }; + + static const pattern _S_default_pattern; + + enum + { + _S_minus, + _S_zero, + _S_end = 11 + }; + + // String literal of acceptable (narrow) input/output, for + // money_get/money_put. "-0123456789" + static const char* _S_atoms; + + // Construct and return valid pattern consisting of some combination of: + // space none symbol sign value + _GLIBCXX_CONST static pattern + _S_construct_pattern(char __precedes, char __space, char __posn) throw (); + }; + + template + struct __moneypunct_cache : public locale::facet + { + const char* _M_grouping; + size_t _M_grouping_size; + bool _M_use_grouping; + _CharT _M_decimal_point; + _CharT _M_thousands_sep; + const _CharT* _M_curr_symbol; + size_t _M_curr_symbol_size; + const _CharT* _M_positive_sign; + size_t _M_positive_sign_size; + const _CharT* _M_negative_sign; + size_t _M_negative_sign_size; + int _M_frac_digits; + money_base::pattern _M_pos_format; + money_base::pattern _M_neg_format; + + // A list of valid numeric literals for input and output: in the standard + // "C" locale, this is "-0123456789". This array contains the chars after + // having been passed through the current locale's ctype<_CharT>.widen(). + _CharT _M_atoms[money_base::_S_end]; + + bool _M_allocated; + + __moneypunct_cache(size_t __refs = 0) : facet(__refs), + _M_grouping(0), _M_grouping_size(0), _M_use_grouping(false), + _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()), + _M_curr_symbol(0), _M_curr_symbol_size(0), + _M_positive_sign(0), _M_positive_sign_size(0), + _M_negative_sign(0), _M_negative_sign_size(0), + _M_frac_digits(0), + _M_pos_format(money_base::pattern()), + _M_neg_format(money_base::pattern()), _M_allocated(false) + { } + + ~__moneypunct_cache(); + + void + _M_cache(const locale& __loc); + + private: + __moneypunct_cache& + operator=(const __moneypunct_cache&); + + explicit + __moneypunct_cache(const __moneypunct_cache&); + }; + + template + __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache() + { + if (_M_allocated) + { + delete [] _M_grouping; + delete [] _M_curr_symbol; + delete [] _M_positive_sign; + delete [] _M_negative_sign; + } + } + + /** + * @brief Primary class template moneypunct. + * @ingroup locales + * + * This facet encapsulates the punctuation, grouping and other formatting + * features of money amount string representations. + */ + template + class moneypunct : public locale::facet, public money_base + { + public: + // Types: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + //@} + typedef __moneypunct_cache<_CharT, _Intl> __cache_type; + + private: + __cache_type* _M_data; + + public: + /// This value is provided by the standard, but no reason for its + /// existence. + static const bool intl = _Intl; + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + moneypunct(size_t __refs = 0) + : facet(__refs), _M_data(0) + { _M_initialize_moneypunct(); } + + /** + * @brief Constructor performs initialization. + * + * This is an internal constructor. + * + * @param __cache Cache for optimization. + * @param __refs Passed to the base facet class. + */ + explicit + moneypunct(__cache_type* __cache, size_t __refs = 0) + : facet(__refs), _M_data(__cache) + { _M_initialize_moneypunct(); } + + /** + * @brief Internal constructor. Not for general use. + * + * This is a constructor for use by the library itself to set up new + * locales. + * + * @param __cloc The C locale. + * @param __s The name of a locale. + * @param __refs Passed to the base facet class. + */ + explicit + moneypunct(__c_locale __cloc, const char* __s, size_t __refs = 0) + : facet(__refs), _M_data(0) + { _M_initialize_moneypunct(__cloc, __s); } + + /** + * @brief Return decimal point character. + * + * This function returns a char_type to use as a decimal point. It + * does so by returning returning + * moneypunct::do_decimal_point(). + * + * @return @a char_type representing a decimal point. + */ + char_type + decimal_point() const + { return this->do_decimal_point(); } + + /** + * @brief Return thousands separator character. + * + * This function returns a char_type to use as a thousands + * separator. It does so by returning returning + * moneypunct::do_thousands_sep(). + * + * @return char_type representing a thousands separator. + */ + char_type + thousands_sep() const + { return this->do_thousands_sep(); } + + /** + * @brief Return grouping specification. + * + * This function returns a string representing groupings for the + * integer part of an amount. Groupings indicate where thousands + * separators should be inserted. + * + * Each char in the return string is interpret as an integer rather + * than a character. These numbers represent the number of digits in a + * group. The first char in the string represents the number of digits + * in the least significant group. If a char is negative, it indicates + * an unlimited number of digits for the group. If more chars from the + * string are required to group a number, the last char is used + * repeatedly. + * + * For example, if the grouping() returns \003\002 + * and is applied to the number 123456789, this corresponds to + * 12,34,56,789. Note that if the string was 32, this would + * put more than 50 digits into the least significant group if + * the character set is ASCII. + * + * The string is returned by calling + * moneypunct::do_grouping(). + * + * @return string representing grouping specification. + */ + string + grouping() const + { return this->do_grouping(); } + + /** + * @brief Return currency symbol string. + * + * This function returns a string_type to use as a currency symbol. It + * does so by returning returning + * moneypunct::do_curr_symbol(). + * + * @return @a string_type representing a currency symbol. + */ + string_type + curr_symbol() const + { return this->do_curr_symbol(); } + + /** + * @brief Return positive sign string. + * + * This function returns a string_type to use as a sign for positive + * amounts. It does so by returning returning + * moneypunct::do_positive_sign(). + * + * If the return value contains more than one character, the first + * character appears in the position indicated by pos_format() and the + * remainder appear at the end of the formatted string. + * + * @return @a string_type representing a positive sign. + */ + string_type + positive_sign() const + { return this->do_positive_sign(); } + + /** + * @brief Return negative sign string. + * + * This function returns a string_type to use as a sign for negative + * amounts. It does so by returning returning + * moneypunct::do_negative_sign(). + * + * If the return value contains more than one character, the first + * character appears in the position indicated by neg_format() and the + * remainder appear at the end of the formatted string. + * + * @return @a string_type representing a negative sign. + */ + string_type + negative_sign() const + { return this->do_negative_sign(); } + + /** + * @brief Return number of digits in fraction. + * + * This function returns the exact number of digits that make up the + * fractional part of a money amount. It does so by returning + * returning moneypunct::do_frac_digits(). + * + * The fractional part of a money amount is optional. But if it is + * present, there must be frac_digits() digits. + * + * @return Number of digits in amount fraction. + */ + int + frac_digits() const + { return this->do_frac_digits(); } + + //@{ + /** + * @brief Return pattern for money values. + * + * This function returns a pattern describing the formatting of a + * positive or negative valued money amount. It does so by returning + * returning moneypunct::do_pos_format() or + * moneypunct::do_neg_format(). + * + * The pattern has 4 fields describing the ordering of symbol, sign, + * value, and none or space. There must be one of each in the pattern. + * The none and space enums may not appear in the first field and space + * may not appear in the final field. + * + * The parts of a money string must appear in the order indicated by + * the fields of the pattern. The symbol field indicates that the + * value of curr_symbol() may be present. The sign field indicates + * that the value of positive_sign() or negative_sign() must be + * present. The value field indicates that the absolute value of the + * money amount is present. none indicates 0 or more whitespace + * characters, except at the end, where it permits no whitespace. + * space indicates that 1 or more whitespace characters must be + * present. + * + * For example, for the US locale and pos_format() pattern + * {symbol,sign,value,none}, curr_symbol() == '$' + * positive_sign() == '+', and value 10.01, and + * options set to force the symbol, the corresponding string is + * $+10.01. + * + * @return Pattern for money values. + */ + pattern + pos_format() const + { return this->do_pos_format(); } + + pattern + neg_format() const + { return this->do_neg_format(); } + //@} + + protected: + /// Destructor. + virtual + ~moneypunct(); + + /** + * @brief Return decimal point character. + * + * Returns a char_type to use as a decimal point. This function is a + * hook for derived classes to change the value returned. + * + * @return @a char_type representing a decimal point. + */ + virtual char_type + do_decimal_point() const + { return _M_data->_M_decimal_point; } + + /** + * @brief Return thousands separator character. + * + * Returns a char_type to use as a thousands separator. This function + * is a hook for derived classes to change the value returned. + * + * @return @a char_type representing a thousands separator. + */ + virtual char_type + do_thousands_sep() const + { return _M_data->_M_thousands_sep; } + + /** + * @brief Return grouping specification. + * + * Returns a string representing groupings for the integer part of a + * number. This function is a hook for derived classes to change the + * value returned. @see grouping() for details. + * + * @return String representing grouping specification. + */ + virtual string + do_grouping() const + { return _M_data->_M_grouping; } + + /** + * @brief Return currency symbol string. + * + * This function returns a string_type to use as a currency symbol. + * This function is a hook for derived classes to change the value + * returned. @see curr_symbol() for details. + * + * @return @a string_type representing a currency symbol. + */ + virtual string_type + do_curr_symbol() const + { return _M_data->_M_curr_symbol; } + + /** + * @brief Return positive sign string. + * + * This function returns a string_type to use as a sign for positive + * amounts. This function is a hook for derived classes to change the + * value returned. @see positive_sign() for details. + * + * @return @a string_type representing a positive sign. + */ + virtual string_type + do_positive_sign() const + { return _M_data->_M_positive_sign; } + + /** + * @brief Return negative sign string. + * + * This function returns a string_type to use as a sign for negative + * amounts. This function is a hook for derived classes to change the + * value returned. @see negative_sign() for details. + * + * @return @a string_type representing a negative sign. + */ + virtual string_type + do_negative_sign() const + { return _M_data->_M_negative_sign; } + + /** + * @brief Return number of digits in fraction. + * + * This function returns the exact number of digits that make up the + * fractional part of a money amount. This function is a hook for + * derived classes to change the value returned. @see frac_digits() + * for details. + * + * @return Number of digits in amount fraction. + */ + virtual int + do_frac_digits() const + { return _M_data->_M_frac_digits; } + + /** + * @brief Return pattern for money values. + * + * This function returns a pattern describing the formatting of a + * positive valued money amount. This function is a hook for derived + * classes to change the value returned. @see pos_format() for + * details. + * + * @return Pattern for money values. + */ + virtual pattern + do_pos_format() const + { return _M_data->_M_pos_format; } + + /** + * @brief Return pattern for money values. + * + * This function returns a pattern describing the formatting of a + * negative valued money amount. This function is a hook for derived + * classes to change the value returned. @see neg_format() for + * details. + * + * @return Pattern for money values. + */ + virtual pattern + do_neg_format() const + { return _M_data->_M_neg_format; } + + // For use at construction time only. + void + _M_initialize_moneypunct(__c_locale __cloc = 0, + const char* __name = 0); + }; + + template + locale::id moneypunct<_CharT, _Intl>::id; + + template + const bool moneypunct<_CharT, _Intl>::intl; + + template<> + moneypunct::~moneypunct(); + + template<> + moneypunct::~moneypunct(); + + template<> + void + moneypunct::_M_initialize_moneypunct(__c_locale, const char*); + + template<> + void + moneypunct::_M_initialize_moneypunct(__c_locale, const char*); + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + moneypunct::~moneypunct(); + + template<> + moneypunct::~moneypunct(); + + template<> + void + moneypunct::_M_initialize_moneypunct(__c_locale, + const char*); + + template<> + void + moneypunct::_M_initialize_moneypunct(__c_locale, + const char*); +#endif + + /// class moneypunct_byname [22.2.6.4]. + template + class moneypunct_byname : public moneypunct<_CharT, _Intl> + { + public: + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + + static const bool intl = _Intl; + + explicit + moneypunct_byname(const char* __s, size_t __refs = 0) + : moneypunct<_CharT, _Intl>(__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_moneypunct(__tmp); + this->_S_destroy_c_locale(__tmp); + } + } + + protected: + virtual + ~moneypunct_byname() { } + }; + + template + const bool moneypunct_byname<_CharT, _Intl>::intl; + +_GLIBCXX_BEGIN_NAMESPACE_LDBL + + /** + * @brief Primary class template money_get. + * @ingroup locales + * + * This facet encapsulates the code to parse and return a monetary + * amount from a string. + * + * The money_get template uses protected virtual functions to + * provide the actual results. The public accessors forward the + * call to the virtual functions. These virtual functions are + * hooks for developers to implement the behavior they require from + * the money_get facet. + */ + template + class money_get : public locale::facet + { + public: + // Types: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef _InIter iter_type; + typedef basic_string<_CharT> string_type; + //@} + + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + money_get(size_t __refs = 0) : facet(__refs) { } + + /** + * @brief Read and parse a monetary value. + * + * This function reads characters from @a __s, interprets them as a + * monetary value according to moneypunct and ctype facets retrieved + * from io.getloc(), and returns the result in @a units as an integral + * value moneypunct::frac_digits() * the actual amount. For example, + * the string $10.01 in a US locale would store 1001 in @a units. + * + * Any characters not part of a valid money amount are not consumed. + * + * If a money value cannot be parsed from the input stream, sets + * err=(err|io.failbit). If the stream is consumed before finishing + * parsing, sets err=(err|io.failbit|io.eofbit). @a units is + * unchanged if parsing fails. + * + * This function works by returning the result of do_get(). + * + * @param __s Start of characters to parse. + * @param __end End of characters to parse. + * @param __intl Parameter to use_facet >. + * @param __io Source of facets and io state. + * @param __err Error field to set if parsing fails. + * @param __units Place to store result of parsing. + * @return Iterator referencing first character beyond valid money + * amount. + */ + iter_type + get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, long double& __units) const + { return this->do_get(__s, __end, __intl, __io, __err, __units); } + + /** + * @brief Read and parse a monetary value. + * + * This function reads characters from @a __s, interprets them as + * a monetary value according to moneypunct and ctype facets + * retrieved from io.getloc(), and returns the result in @a + * digits. For example, the string $10.01 in a US locale would + * store 1001 in @a digits. + * + * Any characters not part of a valid money amount are not consumed. + * + * If a money value cannot be parsed from the input stream, sets + * err=(err|io.failbit). If the stream is consumed before finishing + * parsing, sets err=(err|io.failbit|io.eofbit). + * + * This function works by returning the result of do_get(). + * + * @param __s Start of characters to parse. + * @param __end End of characters to parse. + * @param __intl Parameter to use_facet >. + * @param __io Source of facets and io state. + * @param __err Error field to set if parsing fails. + * @param __digits Place to store result of parsing. + * @return Iterator referencing first character beyond valid money + * amount. + */ + iter_type + get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, string_type& __digits) const + { return this->do_get(__s, __end, __intl, __io, __err, __digits); } + + protected: + /// Destructor. + virtual + ~money_get() { } + + /** + * @brief Read and parse a monetary value. + * + * This function reads and parses characters representing a monetary + * value. This function is a hook for derived classes to change the + * value returned. @see get() for details. + */ + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + __do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, double& __units) const; +#else + virtual iter_type + do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, long double& __units) const; +#endif + + /** + * @brief Read and parse a monetary value. + * + * This function reads and parses characters representing a monetary + * value. This function is a hook for derived classes to change the + * value returned. @see get() for details. + */ + virtual iter_type + do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, string_type& __digits) const; + + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, long double& __units) const; +#endif + + template + iter_type + _M_extract(iter_type __s, iter_type __end, ios_base& __io, + ios_base::iostate& __err, string& __digits) const; + }; + + template + locale::id money_get<_CharT, _InIter>::id; + + /** + * @brief Primary class template money_put. + * @ingroup locales + * + * This facet encapsulates the code to format and output a monetary + * amount. + * + * The money_put template uses protected virtual functions to + * provide the actual results. The public accessors forward the + * call to the virtual functions. These virtual functions are + * hooks for developers to implement the behavior they require from + * the money_put facet. + */ + template + class money_put : public locale::facet + { + public: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef _OutIter iter_type; + typedef basic_string<_CharT> string_type; + //@} + + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + money_put(size_t __refs = 0) : facet(__refs) { } + + /** + * @brief Format and output a monetary value. + * + * This function formats @a units as a monetary value according to + * moneypunct and ctype facets retrieved from io.getloc(), and writes + * the resulting characters to @a __s. For example, the value 1001 in a + * US locale would write $10.01 to @a __s. + * + * This function works by returning the result of do_put(). + * + * @param __s The stream to write to. + * @param __intl Parameter to use_facet >. + * @param __io Source of facets and io state. + * @param __fill char_type to use for padding. + * @param __units Place to store result of parsing. + * @return Iterator after writing. + */ + iter_type + put(iter_type __s, bool __intl, ios_base& __io, + char_type __fill, long double __units) const + { return this->do_put(__s, __intl, __io, __fill, __units); } + + /** + * @brief Format and output a monetary value. + * + * This function formats @a digits as a monetary value + * according to moneypunct and ctype facets retrieved from + * io.getloc(), and writes the resulting characters to @a __s. + * For example, the string 1001 in a US locale + * would write $10.01 to @a __s. + * + * This function works by returning the result of do_put(). + * + * @param __s The stream to write to. + * @param __intl Parameter to use_facet >. + * @param __io Source of facets and io state. + * @param __fill char_type to use for padding. + * @param __digits Place to store result of parsing. + * @return Iterator after writing. + */ + iter_type + put(iter_type __s, bool __intl, ios_base& __io, + char_type __fill, const string_type& __digits) const + { return this->do_put(__s, __intl, __io, __fill, __digits); } + + protected: + /// Destructor. + virtual + ~money_put() { } + + /** + * @brief Format and output a monetary value. + * + * This function formats @a units as a monetary value according to + * moneypunct and ctype facets retrieved from io.getloc(), and writes + * the resulting characters to @a __s. For example, the value 1001 in a + * US locale would write $10.01 to @a __s. + * + * This function is a hook for derived classes to change the value + * returned. @see put(). + * + * @param __s The stream to write to. + * @param __intl Parameter to use_facet >. + * @param __io Source of facets and io state. + * @param __fill char_type to use for padding. + * @param __units Place to store result of parsing. + * @return Iterator after writing. + */ + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + double __units) const; +#else + virtual iter_type + do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + long double __units) const; +#endif + + /** + * @brief Format and output a monetary value. + * + * This function formats @a digits as a monetary value + * according to moneypunct and ctype facets retrieved from + * io.getloc(), and writes the resulting characters to @a __s. + * For example, the string 1001 in a US locale + * would write $10.01 to @a __s. + * + * This function is a hook for derived classes to change the value + * returned. @see put(). + * + * @param __s The stream to write to. + * @param __intl Parameter to use_facet >. + * @param __io Source of facets and io state. + * @param __fill char_type to use for padding. + * @param __digits Place to store result of parsing. + * @return Iterator after writing. + */ + virtual iter_type + do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + const string_type& __digits) const; + + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + long double __units) const; +#endif + + template + iter_type + _M_insert(iter_type __s, ios_base& __io, char_type __fill, + const string_type& __digits) const; + }; + + template + locale::id money_put<_CharT, _OutIter>::id; + +_GLIBCXX_END_NAMESPACE_LDBL + + /** + * @brief Messages facet base class providing catalog typedef. + * @ingroup locales + */ + struct messages_base + { + typedef int catalog; + }; + + /** + * @brief Primary class template messages. + * @ingroup locales + * + * This facet encapsulates the code to retrieve messages from + * message catalogs. The only thing defined by the standard for this facet + * is the interface. All underlying functionality is + * implementation-defined. + * + * This library currently implements 3 versions of the message facet. The + * first version (gnu) is a wrapper around gettext, provided by libintl. + * The second version (ieee) is a wrapper around catgets. The final + * version (default) does no actual translation. These implementations are + * only provided for char and wchar_t instantiations. + * + * The messages template uses protected virtual functions to + * provide the actual results. The public accessors forward the + * call to the virtual functions. These virtual functions are + * hooks for developers to implement the behavior they require from + * the messages facet. + */ + template + class messages : public locale::facet, public messages_base + { + public: + // Types: + //@{ + /// Public typedefs + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + //@} + + protected: + // Underlying "C" library locale information saved from + // initialization, needed by messages_byname as well. + __c_locale _M_c_locale_messages; + const char* _M_name_messages; + + public: + /// Numpunct facet id. + static locale::id id; + + /** + * @brief Constructor performs initialization. + * + * This is the constructor provided by the standard. + * + * @param __refs Passed to the base facet class. + */ + explicit + messages(size_t __refs = 0); + + // Non-standard. + /** + * @brief Internal constructor. Not for general use. + * + * This is a constructor for use by the library itself to set up new + * locales. + * + * @param __cloc The C locale. + * @param __s The name of a locale. + * @param __refs Refcount to pass to the base class. + */ + explicit + messages(__c_locale __cloc, const char* __s, size_t __refs = 0); + + /* + * @brief Open a message catalog. + * + * This function opens and returns a handle to a message catalog by + * returning do_open(__s, __loc). + * + * @param __s The catalog to open. + * @param __loc Locale to use for character set conversions. + * @return Handle to the catalog or value < 0 if open fails. + */ + catalog + open(const basic_string& __s, const locale& __loc) const + { return this->do_open(__s, __loc); } + + // Non-standard and unorthodox, yet effective. + /* + * @brief Open a message catalog. + * + * This non-standard function opens and returns a handle to a message + * catalog by returning do_open(s, loc). The third argument provides a + * message catalog root directory for gnu gettext and is ignored + * otherwise. + * + * @param __s The catalog to open. + * @param __loc Locale to use for character set conversions. + * @param __dir Message catalog root directory. + * @return Handle to the catalog or value < 0 if open fails. + */ + catalog + open(const basic_string&, const locale&, const char*) const; + + /* + * @brief Look up a string in a message catalog. + * + * This function retrieves and returns a message from a catalog by + * returning do_get(c, set, msgid, s). + * + * For gnu, @a __set and @a msgid are ignored. Returns gettext(s). + * For default, returns s. For ieee, returns catgets(c,set,msgid,s). + * + * @param __c The catalog to access. + * @param __set Implementation-defined. + * @param __msgid Implementation-defined. + * @param __s Default return value if retrieval fails. + * @return Retrieved message or @a __s if get fails. + */ + string_type + get(catalog __c, int __set, int __msgid, const string_type& __s) const + { return this->do_get(__c, __set, __msgid, __s); } + + /* + * @brief Close a message catalog. + * + * Closes catalog @a c by calling do_close(c). + * + * @param __c The catalog to close. + */ + void + close(catalog __c) const + { return this->do_close(__c); } + + protected: + /// Destructor. + virtual + ~messages(); + + /* + * @brief Open a message catalog. + * + * This function opens and returns a handle to a message catalog in an + * implementation-defined manner. This function is a hook for derived + * classes to change the value returned. + * + * @param __s The catalog to open. + * @param __loc Locale to use for character set conversions. + * @return Handle to the opened catalog, value < 0 if open failed. + */ + virtual catalog + do_open(const basic_string&, const locale&) const; + + /* + * @brief Look up a string in a message catalog. + * + * This function retrieves and returns a message from a catalog in an + * implementation-defined manner. This function is a hook for derived + * classes to change the value returned. + * + * For gnu, @a __set and @a __msgid are ignored. Returns gettext(s). + * For default, returns s. For ieee, returns catgets(c,set,msgid,s). + * + * @param __c The catalog to access. + * @param __set Implementation-defined. + * @param __msgid Implementation-defined. + * @param __s Default return value if retrieval fails. + * @return Retrieved message or @a __s if get fails. + */ + virtual string_type + do_get(catalog, int, int, const string_type& __dfault) const; + + /* + * @brief Close a message catalog. + * + * @param __c The catalog to close. + */ + virtual void + do_close(catalog) const; + + // Returns a locale and codeset-converted string, given a char* message. + char* + _M_convert_to_char(const string_type& __msg) const + { + // XXX + return reinterpret_cast(const_cast<_CharT*>(__msg.c_str())); + } + + // Returns a locale and codeset-converted string, given a char* message. + string_type + _M_convert_from_char(char*) const + { + // XXX + return string_type(); + } + }; + + template + locale::id messages<_CharT>::id; + + /// Specializations for required instantiations. + template<> + string + messages::do_get(catalog, int, int, const string&) const; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + wstring + messages::do_get(catalog, int, int, const wstring&) const; +#endif + + /// class messages_byname [22.2.7.2]. + template + class messages_byname : public messages<_CharT> + { + public: + typedef _CharT char_type; + typedef basic_string<_CharT> string_type; + + explicit + messages_byname(const char* __s, size_t __refs = 0); + + protected: + virtual + ~messages_byname() + { } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +// Include host and configuration specific messages functions. +#include + +// 22.2.1.5 Template class codecvt +#include + +#include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets_nonio.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets_nonio.tcc new file mode 100644 index 0000000..7f2d83e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/locale_facets_nonio.tcc @@ -0,0 +1,1373 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/locale_facets_nonio.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +#ifndef _LOCALE_FACETS_NONIO_TCC +#define _LOCALE_FACETS_NONIO_TCC 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + struct __use_cache<__moneypunct_cache<_CharT, _Intl> > + { + const __moneypunct_cache<_CharT, _Intl>* + operator() (const locale& __loc) const + { + const size_t __i = moneypunct<_CharT, _Intl>::id._M_id(); + const locale::facet** __caches = __loc._M_impl->_M_caches; + if (!__caches[__i]) + { + __moneypunct_cache<_CharT, _Intl>* __tmp = 0; + __try + { + __tmp = new __moneypunct_cache<_CharT, _Intl>; + __tmp->_M_cache(__loc); + } + __catch(...) + { + delete __tmp; + __throw_exception_again; + } + __loc._M_impl->_M_install_cache(__tmp, __i); + } + return static_cast< + const __moneypunct_cache<_CharT, _Intl>*>(__caches[__i]); + } + }; + + template + void + __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc) + { + _M_allocated = true; + + const moneypunct<_CharT, _Intl>& __mp = + use_facet >(__loc); + + _M_decimal_point = __mp.decimal_point(); + _M_thousands_sep = __mp.thousands_sep(); + _M_frac_digits = __mp.frac_digits(); + + char* __grouping = 0; + _CharT* __curr_symbol = 0; + _CharT* __positive_sign = 0; + _CharT* __negative_sign = 0; + __try + { + _M_grouping_size = __mp.grouping().size(); + __grouping = new char[_M_grouping_size]; + __mp.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_curr_symbol_size = __mp.curr_symbol().size(); + __curr_symbol = new _CharT[_M_curr_symbol_size]; + __mp.curr_symbol().copy(__curr_symbol, _M_curr_symbol_size); + _M_curr_symbol = __curr_symbol; + + _M_positive_sign_size = __mp.positive_sign().size(); + __positive_sign = new _CharT[_M_positive_sign_size]; + __mp.positive_sign().copy(__positive_sign, _M_positive_sign_size); + _M_positive_sign = __positive_sign; + + _M_negative_sign_size = __mp.negative_sign().size(); + __negative_sign = new _CharT[_M_negative_sign_size]; + __mp.negative_sign().copy(__negative_sign, _M_negative_sign_size); + _M_negative_sign = __negative_sign; + + _M_pos_format = __mp.pos_format(); + _M_neg_format = __mp.neg_format(); + + const ctype<_CharT>& __ct = use_facet >(__loc); + __ct.widen(money_base::_S_atoms, + money_base::_S_atoms + money_base::_S_end, _M_atoms); + } + __catch(...) + { + delete [] __grouping; + delete [] __curr_symbol; + delete [] __positive_sign; + delete [] __negative_sign; + __throw_exception_again; + } + } + +_GLIBCXX_BEGIN_NAMESPACE_LDBL + + template + template + _InIter + money_get<_CharT, _InIter>:: + _M_extract(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, string& __units) const + { + typedef char_traits<_CharT> __traits_type; + typedef typename string_type::size_type size_type; + typedef money_base::part part; + typedef __moneypunct_cache<_CharT, _Intl> __cache_type; + + const locale& __loc = __io._M_getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); + + __use_cache<__cache_type> __uc; + const __cache_type* __lc = __uc(__loc); + const char_type* __lit = __lc->_M_atoms; + + // Deduced sign. + bool __negative = false; + // Sign size. + size_type __sign_size = 0; + // True if sign is mandatory. + const bool __mandatory_sign = (__lc->_M_positive_sign_size + && __lc->_M_negative_sign_size); + // String of grouping info from thousands_sep plucked from __units. + string __grouping_tmp; + if (__lc->_M_use_grouping) + __grouping_tmp.reserve(32); + // Last position before the decimal point. + int __last_pos = 0; + // Separator positions, then, possibly, fractional digits. + int __n = 0; + // If input iterator is in a valid state. + bool __testvalid = true; + // Flag marking when a decimal point is found. + bool __testdecfound = false; + + // The tentative returned string is stored here. + string __res; + __res.reserve(32); + + const char_type* __lit_zero = __lit + money_base::_S_zero; + const money_base::pattern __p = __lc->_M_neg_format; + for (int __i = 0; __i < 4 && __testvalid; ++__i) + { + const part __which = static_cast(__p.field[__i]); + switch (__which) + { + case money_base::symbol: + // According to 22.2.6.1.2, p2, symbol is required + // if (__io.flags() & ios_base::showbase), otherwise + // is optional and consumed only if other characters + // are needed to complete the format. + if (__io.flags() & ios_base::showbase || __sign_size > 1 + || __i == 0 + || (__i == 1 && (__mandatory_sign + || (static_cast(__p.field[0]) + == money_base::sign) + || (static_cast(__p.field[2]) + == money_base::space))) + || (__i == 2 && ((static_cast(__p.field[3]) + == money_base::value) + || (__mandatory_sign + && (static_cast(__p.field[3]) + == money_base::sign))))) + { + const size_type __len = __lc->_M_curr_symbol_size; + size_type __j = 0; + for (; __beg != __end && __j < __len + && *__beg == __lc->_M_curr_symbol[__j]; + ++__beg, ++__j); + if (__j != __len + && (__j || __io.flags() & ios_base::showbase)) + __testvalid = false; + } + break; + case money_base::sign: + // Sign might not exist, or be more than one character long. + if (__lc->_M_positive_sign_size && __beg != __end + && *__beg == __lc->_M_positive_sign[0]) + { + __sign_size = __lc->_M_positive_sign_size; + ++__beg; + } + else if (__lc->_M_negative_sign_size && __beg != __end + && *__beg == __lc->_M_negative_sign[0]) + { + __negative = true; + __sign_size = __lc->_M_negative_sign_size; + ++__beg; + } + else if (__lc->_M_positive_sign_size + && !__lc->_M_negative_sign_size) + // "... if no sign is detected, the result is given the sign + // that corresponds to the source of the empty string" + __negative = true; + else if (__mandatory_sign) + __testvalid = false; + break; + case money_base::value: + // Extract digits, remove and stash away the + // grouping of found thousands separators. + for (; __beg != __end; ++__beg) + { + const char_type __c = *__beg; + const char_type* __q = __traits_type::find(__lit_zero, + 10, __c); + if (__q != 0) + { + __res += money_base::_S_atoms[__q - __lit]; + ++__n; + } + else if (__c == __lc->_M_decimal_point + && !__testdecfound) + { + if (__lc->_M_frac_digits <= 0) + break; + + __last_pos = __n; + __n = 0; + __testdecfound = true; + } + else if (__lc->_M_use_grouping + && __c == __lc->_M_thousands_sep + && !__testdecfound) + { + if (__n) + { + // Mark position for later analysis. + __grouping_tmp += static_cast(__n); + __n = 0; + } + else + { + __testvalid = false; + break; + } + } + else + break; + } + if (__res.empty()) + __testvalid = false; + break; + case money_base::space: + // At least one space is required. + if (__beg != __end && __ctype.is(ctype_base::space, *__beg)) + ++__beg; + else + __testvalid = false; + case money_base::none: + // Only if not at the end of the pattern. + if (__i != 3) + for (; __beg != __end + && __ctype.is(ctype_base::space, *__beg); ++__beg); + break; + } + } + + // Need to get the rest of the sign characters, if they exist. + if (__sign_size > 1 && __testvalid) + { + const char_type* __sign = __negative ? __lc->_M_negative_sign + : __lc->_M_positive_sign; + size_type __i = 1; + for (; __beg != __end && __i < __sign_size + && *__beg == __sign[__i]; ++__beg, ++__i); + + if (__i != __sign_size) + __testvalid = false; + } + + if (__testvalid) + { + // Strip leading zeros. + if (__res.size() > 1) + { + const size_type __first = __res.find_first_not_of('0'); + const bool __only_zeros = __first == string::npos; + if (__first) + __res.erase(0, __only_zeros ? __res.size() - 1 : __first); + } + + // 22.2.6.1.2, p4 + if (__negative && __res[0] != '0') + __res.insert(__res.begin(), '-'); + + // Test for grouping fidelity. + if (__grouping_tmp.size()) + { + // Add the ending grouping. + __grouping_tmp += static_cast(__testdecfound ? __last_pos + : __n); + if (!std::__verify_grouping(__lc->_M_grouping, + __lc->_M_grouping_size, + __grouping_tmp)) + __err |= ios_base::failbit; + } + + // Iff not enough digits were supplied after the decimal-point. + if (__testdecfound && __n != __lc->_M_frac_digits) + __testvalid = false; + } + + // Iff valid sequence is not recognized. + if (!__testvalid) + __err |= ios_base::failbit; + else + __units.swap(__res); + + // Iff no more characters are available. + if (__beg == __end) + __err |= ios_base::eofbit; + return __beg; + } + +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + template + _InIter + money_get<_CharT, _InIter>:: + __do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, double& __units) const + { + string __str; + __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) + : _M_extract(__beg, __end, __io, __err, __str); + std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); + return __beg; + } +#endif + + template + _InIter + money_get<_CharT, _InIter>:: + do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, long double& __units) const + { + string __str; + __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) + : _M_extract(__beg, __end, __io, __err, __str); + std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); + return __beg; + } + + template + _InIter + money_get<_CharT, _InIter>:: + do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, string_type& __digits) const + { + typedef typename string::size_type size_type; + + const locale& __loc = __io._M_getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); + + string __str; + __beg = __intl ? _M_extract(__beg, __end, __io, __err, __str) + : _M_extract(__beg, __end, __io, __err, __str); + const size_type __len = __str.size(); + if (__len) + { + __digits.resize(__len); + __ctype.widen(__str.data(), __str.data() + __len, &__digits[0]); + } + return __beg; + } + + template + template + _OutIter + money_put<_CharT, _OutIter>:: + _M_insert(iter_type __s, ios_base& __io, char_type __fill, + const string_type& __digits) const + { + typedef typename string_type::size_type size_type; + typedef money_base::part part; + typedef __moneypunct_cache<_CharT, _Intl> __cache_type; + + const locale& __loc = __io._M_getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); + + __use_cache<__cache_type> __uc; + const __cache_type* __lc = __uc(__loc); + const char_type* __lit = __lc->_M_atoms; + + // Determine if negative or positive formats are to be used, and + // discard leading negative_sign if it is present. + const char_type* __beg = __digits.data(); + + money_base::pattern __p; + const char_type* __sign; + size_type __sign_size; + if (!(*__beg == __lit[money_base::_S_minus])) + { + __p = __lc->_M_pos_format; + __sign = __lc->_M_positive_sign; + __sign_size = __lc->_M_positive_sign_size; + } + else + { + __p = __lc->_M_neg_format; + __sign = __lc->_M_negative_sign; + __sign_size = __lc->_M_negative_sign_size; + if (__digits.size()) + ++__beg; + } + + // Look for valid numbers in the ctype facet within input digits. + size_type __len = __ctype.scan_not(ctype_base::digit, __beg, + __beg + __digits.size()) - __beg; + if (__len) + { + // Assume valid input, and attempt to format. + // Break down input numbers into base components, as follows: + // final_value = grouped units + (decimal point) + (digits) + string_type __value; + __value.reserve(2 * __len); + + // Add thousands separators to non-decimal digits, per + // grouping rules. + long __paddec = __len - __lc->_M_frac_digits; + if (__paddec > 0) + { + if (__lc->_M_frac_digits < 0) + __paddec = __len; + if (__lc->_M_grouping_size) + { + __value.assign(2 * __paddec, char_type()); + _CharT* __vend = + std::__add_grouping(&__value[0], __lc->_M_thousands_sep, + __lc->_M_grouping, + __lc->_M_grouping_size, + __beg, __beg + __paddec); + __value.erase(__vend - &__value[0]); + } + else + __value.assign(__beg, __paddec); + } + + // Deal with decimal point, decimal digits. + if (__lc->_M_frac_digits > 0) + { + __value += __lc->_M_decimal_point; + if (__paddec >= 0) + __value.append(__beg + __paddec, __lc->_M_frac_digits); + else + { + // Have to pad zeros in the decimal position. + __value.append(-__paddec, __lit[money_base::_S_zero]); + __value.append(__beg, __len); + } + } + + // Calculate length of resulting string. + const ios_base::fmtflags __f = __io.flags() + & ios_base::adjustfield; + __len = __value.size() + __sign_size; + __len += ((__io.flags() & ios_base::showbase) + ? __lc->_M_curr_symbol_size : 0); + + string_type __res; + __res.reserve(2 * __len); + + const size_type __width = static_cast(__io.width()); + const bool __testipad = (__f == ios_base::internal + && __len < __width); + // Fit formatted digits into the required pattern. + for (int __i = 0; __i < 4; ++__i) + { + const part __which = static_cast(__p.field[__i]); + switch (__which) + { + case money_base::symbol: + if (__io.flags() & ios_base::showbase) + __res.append(__lc->_M_curr_symbol, + __lc->_M_curr_symbol_size); + break; + case money_base::sign: + // Sign might not exist, or be more than one + // character long. In that case, add in the rest + // below. + if (__sign_size) + __res += __sign[0]; + break; + case money_base::value: + __res += __value; + break; + case money_base::space: + // At least one space is required, but if internal + // formatting is required, an arbitrary number of + // fill spaces will be necessary. + if (__testipad) + __res.append(__width - __len, __fill); + else + __res += __fill; + break; + case money_base::none: + if (__testipad) + __res.append(__width - __len, __fill); + break; + } + } + + // Special case of multi-part sign parts. + if (__sign_size > 1) + __res.append(__sign + 1, __sign_size - 1); + + // Pad, if still necessary. + __len = __res.size(); + if (__width > __len) + { + if (__f == ios_base::left) + // After. + __res.append(__width - __len, __fill); + else + // Before. + __res.insert(0, __width - __len, __fill); + __len = __width; + } + + // Write resulting, fully-formatted string to output iterator. + __s = std::__write(__s, __res.data(), __len); + } + __io.width(0); + return __s; + } + +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + template + _OutIter + money_put<_CharT, _OutIter>:: + __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + double __units) const + { return this->do_put(__s, __intl, __io, __fill, (long double) __units); } +#endif + + template + _OutIter + money_put<_CharT, _OutIter>:: + do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + long double __units) const + { + const locale __loc = __io.getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); +#ifdef _GLIBCXX_USE_C99 + // First try a buffer perhaps big enough. + int __cs_size = 64; + char* __cs = static_cast(__builtin_alloca(__cs_size)); + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 328. Bad sprintf format modifier in money_put<>::do_put() + int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, + "%.*Lf", 0, __units); + // If the buffer was not large enough, try again with the correct size. + 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, + "%.*Lf", 0, __units); + } +#else + // max_exponent10 + 1 for the integer part, + 2 for sign and '\0'. + const int __cs_size = + __gnu_cxx::__numeric_traits::__max_exponent10 + 3; + char* __cs = static_cast(__builtin_alloca(__cs_size)); + int __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, "%.*Lf", + 0, __units); +#endif + string_type __digits(__len, char_type()); + __ctype.widen(__cs, __cs + __len, &__digits[0]); + return __intl ? _M_insert(__s, __io, __fill, __digits) + : _M_insert(__s, __io, __fill, __digits); + } + + template + _OutIter + money_put<_CharT, _OutIter>:: + do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + const string_type& __digits) const + { return __intl ? _M_insert(__s, __io, __fill, __digits) + : _M_insert(__s, __io, __fill, __digits); } + +_GLIBCXX_END_NAMESPACE_LDBL + + // NB: Not especially useful. Without an ios_base object or some + // kind of locale reference, we are left clawing at the air where + // the side of the mountain used to be... + template + time_base::dateorder + time_get<_CharT, _InIter>::do_date_order() const + { return time_base::no_order; } + + // Expand a strftime format string and parse it. E.g., do_get_date() may + // pass %m/%d/%Y => extracted characters. + template + _InIter + time_get<_CharT, _InIter>:: + _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm, + const _CharT* __format) const + { + const locale& __loc = __io._M_getloc(); + const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); + const ctype<_CharT>& __ctype = use_facet >(__loc); + const size_t __len = char_traits<_CharT>::length(__format); + + ios_base::iostate __tmperr = ios_base::goodbit; + size_t __i = 0; + for (; __beg != __end && __i < __len && !__tmperr; ++__i) + { + if (__ctype.narrow(__format[__i], 0) == '%') + { + // Verify valid formatting code, attempt to extract. + char __c = __ctype.narrow(__format[++__i], 0); + int __mem = 0; + if (__c == 'E' || __c == 'O') + __c = __ctype.narrow(__format[++__i], 0); + switch (__c) + { + const char* __cs; + _CharT __wcs[10]; + case 'a': + // Abbreviated weekday name [tm_wday] + const char_type* __days1[7]; + __tp._M_days_abbreviated(__days1); + __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days1, + 7, __io, __tmperr); + break; + case 'A': + // Weekday name [tm_wday]. + const char_type* __days2[7]; + __tp._M_days(__days2); + __beg = _M_extract_name(__beg, __end, __tm->tm_wday, __days2, + 7, __io, __tmperr); + break; + case 'h': + case 'b': + // Abbreviated month name [tm_mon] + const char_type* __months1[12]; + __tp._M_months_abbreviated(__months1); + __beg = _M_extract_name(__beg, __end, __tm->tm_mon, + __months1, 12, __io, __tmperr); + break; + case 'B': + // Month name [tm_mon]. + const char_type* __months2[12]; + __tp._M_months(__months2); + __beg = _M_extract_name(__beg, __end, __tm->tm_mon, + __months2, 12, __io, __tmperr); + break; + case 'c': + // Default time and date representation. + const char_type* __dt[2]; + __tp._M_date_time_formats(__dt); + __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, + __tm, __dt[0]); + break; + case 'd': + // Day [01, 31]. [tm_mday] + __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 1, 31, 2, + __io, __tmperr); + break; + case 'e': + // Day [1, 31], with single digits preceded by + // space. [tm_mday] + if (__ctype.is(ctype_base::space, *__beg)) + __beg = _M_extract_num(++__beg, __end, __tm->tm_mday, 1, 9, + 1, __io, __tmperr); + else + __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 10, 31, + 2, __io, __tmperr); + break; + case 'D': + // Equivalent to %m/%d/%y.[tm_mon, tm_mday, tm_year] + __cs = "%m/%d/%y"; + __ctype.widen(__cs, __cs + 9, __wcs); + __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, + __tm, __wcs); + break; + case 'H': + // Hour [00, 23]. [tm_hour] + __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 0, 23, 2, + __io, __tmperr); + break; + case 'I': + // Hour [01, 12]. [tm_hour] + __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 1, 12, 2, + __io, __tmperr); + break; + case 'm': + // Month [01, 12]. [tm_mon] + __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, + __io, __tmperr); + if (!__tmperr) + __tm->tm_mon = __mem - 1; + break; + case 'M': + // Minute [00, 59]. [tm_min] + __beg = _M_extract_num(__beg, __end, __tm->tm_min, 0, 59, 2, + __io, __tmperr); + break; + case 'n': + if (__ctype.narrow(*__beg, 0) == '\n') + ++__beg; + else + __tmperr |= ios_base::failbit; + break; + case 'R': + // Equivalent to (%H:%M). + __cs = "%H:%M"; + __ctype.widen(__cs, __cs + 6, __wcs); + __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, + __tm, __wcs); + break; + case 'S': + // Seconds. [tm_sec] + // [00, 60] in C99 (one leap-second), [00, 61] in C89. +#ifdef _GLIBCXX_USE_C99 + __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 60, 2, +#else + __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 61, 2, +#endif + __io, __tmperr); + break; + case 't': + if (__ctype.narrow(*__beg, 0) == '\t') + ++__beg; + else + __tmperr |= ios_base::failbit; + break; + case 'T': + // Equivalent to (%H:%M:%S). + __cs = "%H:%M:%S"; + __ctype.widen(__cs, __cs + 9, __wcs); + __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, + __tm, __wcs); + break; + case 'x': + // Locale's date. + const char_type* __dates[2]; + __tp._M_date_formats(__dates); + __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, + __tm, __dates[0]); + break; + case 'X': + // Locale's time. + const char_type* __times[2]; + __tp._M_time_formats(__times); + __beg = _M_extract_via_format(__beg, __end, __io, __tmperr, + __tm, __times[0]); + break; + case 'y': + case 'C': // C99 + // Two digit year. + case 'Y': + // Year [1900). + // NB: We parse either two digits, implicitly years since + // 1900, or 4 digits, full year. In both cases we can + // reconstruct [tm_year]. See also libstdc++/26701. + __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4, + __io, __tmperr); + if (!__tmperr) + __tm->tm_year = __mem < 0 ? __mem + 100 : __mem - 1900; + break; + case 'Z': + // Timezone info. + if (__ctype.is(ctype_base::upper, *__beg)) + { + int __tmp; + __beg = _M_extract_name(__beg, __end, __tmp, + __timepunct_cache<_CharT>::_S_timezones, + 14, __io, __tmperr); + + // GMT requires special effort. + if (__beg != __end && !__tmperr && __tmp == 0 + && (*__beg == __ctype.widen('-') + || *__beg == __ctype.widen('+'))) + { + __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2, + __io, __tmperr); + __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2, + __io, __tmperr); + } + } + else + __tmperr |= ios_base::failbit; + break; + default: + // Not recognized. + __tmperr |= ios_base::failbit; + } + } + else + { + // Verify format and input match, extract and discard. + if (__format[__i] == *__beg) + ++__beg; + else + __tmperr |= ios_base::failbit; + } + } + + if (__tmperr || __i != __len) + __err |= ios_base::failbit; + + return __beg; + } + + template + _InIter + time_get<_CharT, _InIter>:: + _M_extract_num(iter_type __beg, iter_type __end, int& __member, + int __min, int __max, size_t __len, + ios_base& __io, ios_base::iostate& __err) const + { + const locale& __loc = __io._M_getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); + + // As-is works for __len = 1, 2, 4, the values actually used. + int __mult = __len == 2 ? 10 : (__len == 4 ? 1000 : 1); + + ++__min; + size_t __i = 0; + int __value = 0; + for (; __beg != __end && __i < __len; ++__beg, ++__i) + { + const char __c = __ctype.narrow(*__beg, '*'); + if (__c >= '0' && __c <= '9') + { + __value = __value * 10 + (__c - '0'); + const int __valuec = __value * __mult; + if (__valuec > __max || __valuec + __mult < __min) + break; + __mult /= 10; + } + else + break; + } + if (__i == __len) + __member = __value; + // Special encoding for do_get_year, 'y', and 'Y' above. + else if (__len == 4 && __i == 2) + __member = __value - 100; + else + __err |= ios_base::failbit; + + return __beg; + } + + // Assumptions: + // All elements in __names are unique. + template + _InIter + time_get<_CharT, _InIter>:: + _M_extract_name(iter_type __beg, iter_type __end, int& __member, + const _CharT** __names, size_t __indexlen, + ios_base& __io, ios_base::iostate& __err) const + { + typedef char_traits<_CharT> __traits_type; + const locale& __loc = __io._M_getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); + + int* __matches = static_cast(__builtin_alloca(sizeof(int) + * __indexlen)); + size_t __nmatches = 0; + size_t __pos = 0; + bool __testvalid = true; + const char_type* __name; + + // Look for initial matches. + // NB: Some of the locale data is in the form of all lowercase + // names, and some is in the form of initially-capitalized + // names. Look for both. + if (__beg != __end) + { + const char_type __c = *__beg; + for (size_t __i1 = 0; __i1 < __indexlen; ++__i1) + if (__c == __names[__i1][0] + || __c == __ctype.toupper(__names[__i1][0])) + __matches[__nmatches++] = __i1; + } + + while (__nmatches > 1) + { + // Find smallest matching string. + size_t __minlen = __traits_type::length(__names[__matches[0]]); + for (size_t __i2 = 1; __i2 < __nmatches; ++__i2) + __minlen = std::min(__minlen, + __traits_type::length(__names[__matches[__i2]])); + ++__beg, ++__pos; + if (__pos < __minlen && __beg != __end) + for (size_t __i3 = 0; __i3 < __nmatches;) + { + __name = __names[__matches[__i3]]; + if (!(__name[__pos] == *__beg)) + __matches[__i3] = __matches[--__nmatches]; + else + ++__i3; + } + else + break; + } + + if (__nmatches == 1) + { + // Make sure found name is completely extracted. + ++__beg, ++__pos; + __name = __names[__matches[0]]; + const size_t __len = __traits_type::length(__name); + while (__pos < __len && __beg != __end && __name[__pos] == *__beg) + ++__beg, ++__pos; + + if (__len == __pos) + __member = __matches[0]; + else + __testvalid = false; + } + else + __testvalid = false; + if (!__testvalid) + __err |= ios_base::failbit; + + return __beg; + } + + template + _InIter + time_get<_CharT, _InIter>:: + _M_extract_wday_or_month(iter_type __beg, iter_type __end, int& __member, + const _CharT** __names, size_t __indexlen, + ios_base& __io, ios_base::iostate& __err) const + { + typedef char_traits<_CharT> __traits_type; + const locale& __loc = __io._M_getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); + + int* __matches = static_cast(__builtin_alloca(2 * sizeof(int) + * __indexlen)); + size_t __nmatches = 0; + size_t* __matches_lengths = 0; + size_t __pos = 0; + + if (__beg != __end) + { + const char_type __c = *__beg; + for (size_t __i = 0; __i < 2 * __indexlen; ++__i) + if (__c == __names[__i][0] + || __c == __ctype.toupper(__names[__i][0])) + __matches[__nmatches++] = __i; + } + + if (__nmatches) + { + ++__beg, ++__pos; + + __matches_lengths + = static_cast(__builtin_alloca(sizeof(size_t) + * __nmatches)); + for (size_t __i = 0; __i < __nmatches; ++__i) + __matches_lengths[__i] + = __traits_type::length(__names[__matches[__i]]); + } + + for (; __beg != __end; ++__beg, ++__pos) + { + size_t __nskipped = 0; + const char_type __c = *__beg; + for (size_t __i = 0; __i < __nmatches;) + { + const char_type* __name = __names[__matches[__i]]; + if (__pos >= __matches_lengths[__i]) + ++__nskipped, ++__i; + else if (!(__name[__pos] == __c)) + { + --__nmatches; + __matches[__i] = __matches[__nmatches]; + __matches_lengths[__i] = __matches_lengths[__nmatches]; + } + else + ++__i; + } + if (__nskipped == __nmatches) + break; + } + + if ((__nmatches == 1 && __matches_lengths[0] == __pos) + || (__nmatches == 2 && (__matches_lengths[0] == __pos + || __matches_lengths[1] == __pos))) + __member = (__matches[0] >= __indexlen + ? __matches[0] - __indexlen : __matches[0]); + else + __err |= ios_base::failbit; + + return __beg; + } + + template + _InIter + time_get<_CharT, _InIter>:: + do_get_time(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const + { + const locale& __loc = __io._M_getloc(); + const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); + const char_type* __times[2]; + __tp._M_time_formats(__times); + __beg = _M_extract_via_format(__beg, __end, __io, __err, + __tm, __times[0]); + if (__beg == __end) + __err |= ios_base::eofbit; + return __beg; + } + + template + _InIter + time_get<_CharT, _InIter>:: + do_get_date(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const + { + const locale& __loc = __io._M_getloc(); + const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); + const char_type* __dates[2]; + __tp._M_date_formats(__dates); + __beg = _M_extract_via_format(__beg, __end, __io, __err, + __tm, __dates[0]); + if (__beg == __end) + __err |= ios_base::eofbit; + return __beg; + } + + template + _InIter + time_get<_CharT, _InIter>:: + do_get_weekday(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const + { + typedef char_traits<_CharT> __traits_type; + const locale& __loc = __io._M_getloc(); + const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); + const ctype<_CharT>& __ctype = use_facet >(__loc); + const char_type* __days[14]; + __tp._M_days_abbreviated(__days); + __tp._M_days(__days + 7); + int __tmpwday; + ios_base::iostate __tmperr = ios_base::goodbit; + + __beg = _M_extract_wday_or_month(__beg, __end, __tmpwday, __days, 7, + __io, __tmperr); + if (!__tmperr) + __tm->tm_wday = __tmpwday; + else + __err |= ios_base::failbit; + + if (__beg == __end) + __err |= ios_base::eofbit; + return __beg; + } + + template + _InIter + time_get<_CharT, _InIter>:: + do_get_monthname(iter_type __beg, iter_type __end, + ios_base& __io, ios_base::iostate& __err, tm* __tm) const + { + typedef char_traits<_CharT> __traits_type; + const locale& __loc = __io._M_getloc(); + const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); + const ctype<_CharT>& __ctype = use_facet >(__loc); + const char_type* __months[24]; + __tp._M_months_abbreviated(__months); + __tp._M_months(__months + 12); + int __tmpmon; + ios_base::iostate __tmperr = ios_base::goodbit; + + __beg = _M_extract_wday_or_month(__beg, __end, __tmpmon, __months, 12, + __io, __tmperr); + if (!__tmperr) + __tm->tm_mon = __tmpmon; + else + __err |= ios_base::failbit; + + if (__beg == __end) + __err |= ios_base::eofbit; + return __beg; + } + + template + _InIter + time_get<_CharT, _InIter>:: + do_get_year(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, tm* __tm) const + { + const locale& __loc = __io._M_getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); + int __tmpyear; + ios_base::iostate __tmperr = ios_base::goodbit; + + __beg = _M_extract_num(__beg, __end, __tmpyear, 0, 9999, 4, + __io, __tmperr); + if (!__tmperr) + __tm->tm_year = __tmpyear < 0 ? __tmpyear + 100 : __tmpyear - 1900; + else + __err |= ios_base::failbit; + + if (__beg == __end) + __err |= ios_base::eofbit; + return __beg; + } + + template + _OutIter + time_put<_CharT, _OutIter>:: + put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm, + const _CharT* __beg, const _CharT* __end) const + { + const locale& __loc = __io._M_getloc(); + ctype<_CharT> const& __ctype = use_facet >(__loc); + for (; __beg != __end; ++__beg) + if (__ctype.narrow(*__beg, 0) != '%') + { + *__s = *__beg; + ++__s; + } + else if (++__beg != __end) + { + char __format; + char __mod = 0; + const char __c = __ctype.narrow(*__beg, 0); + if (__c != 'E' && __c != 'O') + __format = __c; + else if (++__beg != __end) + { + __mod = __c; + __format = __ctype.narrow(*__beg, 0); + } + else + break; + __s = this->do_put(__s, __io, __fill, __tm, __format, __mod); + } + else + break; + return __s; + } + + template + _OutIter + time_put<_CharT, _OutIter>:: + do_put(iter_type __s, ios_base& __io, char_type, const tm* __tm, + char __format, char __mod) const + { + const locale& __loc = __io._M_getloc(); + ctype<_CharT> const& __ctype = use_facet >(__loc); + __timepunct<_CharT> const& __tp = use_facet<__timepunct<_CharT> >(__loc); + + // NB: This size is arbitrary. Should this be a data member, + // initialized at construction? + const size_t __maxlen = 128; + char_type __res[__maxlen]; + + // NB: In IEE 1003.1-200x, and perhaps other locale models, it + // is possible that the format character will be longer than one + // character. Possibilities include 'E' or 'O' followed by a + // format character: if __mod is not the default argument, assume + // it's a valid modifier. + char_type __fmt[4]; + __fmt[0] = __ctype.widen('%'); + if (!__mod) + { + __fmt[1] = __format; + __fmt[2] = char_type(); + } + else + { + __fmt[1] = __mod; + __fmt[2] = __format; + __fmt[3] = char_type(); + } + + __tp._M_put(__res, __maxlen, __fmt, __tm); + + // Write resulting, fully-formatted string to output iterator. + return std::__write(__s, __res, char_traits::length(__res)); + } + + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template class moneypunct; + extern template class moneypunct; + extern template class moneypunct_byname; + extern template class moneypunct_byname; + extern template class _GLIBCXX_NAMESPACE_LDBL money_get; + extern template class _GLIBCXX_NAMESPACE_LDBL money_put; + extern template class __timepunct; + extern template class time_put; + extern template class time_put_byname; + extern template class time_get; + extern template class time_get_byname; + extern template class messages; + extern template class messages_byname; + + extern template + const moneypunct& + use_facet >(const locale&); + + extern template + const moneypunct& + use_facet >(const locale&); + + extern template + const money_put& + use_facet >(const locale&); + + extern template + const money_get& + use_facet >(const locale&); + + extern template + const __timepunct& + use_facet<__timepunct >(const locale&); + + extern template + const time_put& + use_facet >(const locale&); + + extern template + const time_get& + use_facet >(const locale&); + + extern template + const messages& + 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<__timepunct >(const locale&); + + extern template + bool + has_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template class moneypunct; + extern template class moneypunct; + extern template class moneypunct_byname; + extern template class moneypunct_byname; + extern template class _GLIBCXX_NAMESPACE_LDBL money_get; + extern template class _GLIBCXX_NAMESPACE_LDBL money_put; + extern template class __timepunct; + extern template class time_put; + extern template class time_put_byname; + extern template class time_get; + extern template class time_get_byname; + extern template class messages; + extern template class messages_byname; + + extern template + const moneypunct& + use_facet >(const locale&); + + extern template + const moneypunct& + use_facet >(const locale&); + + extern template + const money_put& + use_facet >(const locale&); + + extern template + const money_get& + use_facet >(const locale&); + + extern template + const __timepunct& + use_facet<__timepunct >(const locale&); + + extern template + const time_put& + use_facet >(const locale&); + + extern template + const time_get& + use_facet >(const locale&); + + extern template + const messages& + 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<__timepunct >(const locale&); + + extern template + bool + has_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); + + extern template + bool + has_facet >(const locale&); +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/localefwd.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/localefwd.h new file mode 100644 index 0000000..ca06dc1 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/localefwd.h @@ -0,0 +1,190 @@ +// Forward declarations -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/localefwd.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +#ifndef _LOCALE_FWD_H +#define _LOCALE_FWD_H 1 + +#pragma GCC system_header + +#include +#include // Defines __c_locale, config-specific include +#include // For ostreambuf_iterator, istreambuf_iterator +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup locales Locales + * + * Classes and functions for internationalization and localization. + */ + + // 22.1.1 Locale + class locale; + + template + bool + has_facet(const locale&) throw(); + + template + const _Facet& + use_facet(const locale&); + + // 22.1.3 Convenience interfaces + 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&); + + // 22.2.1 and 22.2.1.3 ctype + class ctype_base; + template + class ctype; + template<> class ctype; +#ifdef _GLIBCXX_USE_WCHAR_T + template<> class ctype; +#endif + template + class ctype_byname; + // NB: Specialized for char and wchar_t in locale_facets.h. + + class codecvt_base; + template + class codecvt; + template<> class codecvt; +#ifdef _GLIBCXX_USE_WCHAR_T + template<> class codecvt; +#endif + template + class codecvt_byname; + + // 22.2.2 and 22.2.3 numeric +_GLIBCXX_BEGIN_NAMESPACE_LDBL + template > + class num_get; + template > + class num_put; +_GLIBCXX_END_NAMESPACE_LDBL + template class numpunct; + template class numpunct_byname; + + // 22.2.4 collation + template + class collate; + template class + collate_byname; + + // 22.2.5 date and time + class time_base; + template > + class time_get; + template > + class time_get_byname; + template > + class time_put; + template > + class time_put_byname; + + // 22.2.6 money + class money_base; +_GLIBCXX_BEGIN_NAMESPACE_LDBL + template > + class money_get; + template > + class money_put; +_GLIBCXX_END_NAMESPACE_LDBL + template + class moneypunct; + template + class moneypunct_byname; + + // 22.2.7 message retrieval + class messages_base; + template + class messages; + template + class messages_byname; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/mask_array.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/mask_array.h new file mode 100644 index 0000000..5cbea8a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/mask_array.h @@ -0,0 +1,208 @@ +// The template and inlines for the -*- C++ -*- mask_array class. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/mask_array.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{valarray} + */ + +// Written by Gabriel Dos Reis + +#ifndef _MASK_ARRAY_H +#define _MASK_ARRAY_H 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup numeric_arrays + * @{ + */ + + /** + * @brief Reference to selected subset of an array. + * + * A mask_array is a reference to the actual elements of an array specified + * by a bitmask in the form of an array of bool. The way to get a + * mask_array is to call operator[](valarray) on a valarray. The + * returned mask_array then permits carrying operations out on the + * referenced subset of elements in the original valarray. + * + * For example, if a mask_array is obtained using the array (false, true, + * false, true) as an argument, the mask array has two elements referring + * to array[1] and array[3] in the underlying array. + * + * @param Tp Element type. + */ + template + class mask_array + { + public: + typedef _Tp value_type; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 253. valarray helper functions are almost entirely useless + + /// Copy constructor. Both slices refer to the same underlying array. + mask_array (const mask_array&); + + /// Assignment operator. Assigns elements to corresponding elements + /// of @a a. + mask_array& operator=(const mask_array&); + + void operator=(const valarray<_Tp>&) const; + /// Multiply slice elements by corresponding elements of @a v. + void operator*=(const valarray<_Tp>&) const; + /// Divide slice elements by corresponding elements of @a v. + void operator/=(const valarray<_Tp>&) const; + /// Modulo slice elements by corresponding elements of @a v. + void operator%=(const valarray<_Tp>&) const; + /// Add corresponding elements of @a v to slice elements. + void operator+=(const valarray<_Tp>&) const; + /// Subtract corresponding elements of @a v from slice elements. + void operator-=(const valarray<_Tp>&) const; + /// Logical xor slice elements with corresponding elements of @a v. + void operator^=(const valarray<_Tp>&) const; + /// Logical and slice elements with corresponding elements of @a v. + void operator&=(const valarray<_Tp>&) const; + /// Logical or slice elements with corresponding elements of @a v. + void operator|=(const valarray<_Tp>&) const; + /// Left shift slice elements by corresponding elements of @a v. + void operator<<=(const valarray<_Tp>&) const; + /// Right shift slice elements by corresponding elements of @a v. + void operator>>=(const valarray<_Tp>&) const; + /// Assign all slice elements to @a t. + void operator=(const _Tp&) const; + + // ~mask_array (); + + template + void operator=(const _Expr<_Dom,_Tp>&) const; + template + void operator*=(const _Expr<_Dom,_Tp>&) const; + template + void operator/=(const _Expr<_Dom,_Tp>&) const; + template + void operator%=(const _Expr<_Dom,_Tp>&) const; + template + void operator+=(const _Expr<_Dom,_Tp>&) const; + template + void operator-=(const _Expr<_Dom,_Tp>&) const; + template + void operator^=(const _Expr<_Dom,_Tp>&) const; + template + void operator&=(const _Expr<_Dom,_Tp>&) const; + template + void operator|=(const _Expr<_Dom,_Tp>&) const; + template + void operator<<=(const _Expr<_Dom,_Tp>&) const; + template + void operator>>=(const _Expr<_Dom,_Tp>&) const; + + private: + mask_array(_Array<_Tp>, size_t, _Array); + friend class valarray<_Tp>; + + const size_t _M_sz; + const _Array _M_mask; + const _Array<_Tp> _M_array; + + // not implemented + mask_array(); + }; + + template + inline mask_array<_Tp>::mask_array(const mask_array<_Tp>& a) + : _M_sz(a._M_sz), _M_mask(a._M_mask), _M_array(a._M_array) {} + + template + inline + mask_array<_Tp>::mask_array(_Array<_Tp> __a, size_t __s, _Array __m) + : _M_sz(__s), _M_mask(__m), _M_array(__a) {} + + template + inline mask_array<_Tp>& + mask_array<_Tp>::operator=(const mask_array<_Tp>& __a) + { + std::__valarray_copy(__a._M_array, __a._M_mask, + _M_sz, _M_array, _M_mask); + return *this; + } + + template + inline void + mask_array<_Tp>::operator=(const _Tp& __t) const + { std::__valarray_fill(_M_array, _M_sz, _M_mask, __t); } + + template + inline void + mask_array<_Tp>::operator=(const valarray<_Tp>& __v) const + { std::__valarray_copy(_Array<_Tp>(__v), __v.size(), _M_array, _M_mask); } + + template + template + inline void + mask_array<_Tp>::operator=(const _Expr<_Ex, _Tp>& __e) const + { std::__valarray_copy(__e, __e.size(), _M_array, _M_mask); } + +#undef _DEFINE_VALARRAY_OPERATOR +#define _DEFINE_VALARRAY_OPERATOR(_Op, _Name) \ + template \ + inline void \ + mask_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const \ + { \ + _Array_augmented_##_Name(_M_array, _M_mask, \ + _Array<_Tp>(__v), __v.size()); \ + } \ + \ + template \ + template \ + inline void \ + mask_array<_Tp>::operator _Op##=(const _Expr<_Dom, _Tp>& __e) const\ + { \ + _Array_augmented_##_Name(_M_array, _M_mask, __e, __e.size()); \ + } + +_DEFINE_VALARRAY_OPERATOR(*, __multiplies) +_DEFINE_VALARRAY_OPERATOR(/, __divides) +_DEFINE_VALARRAY_OPERATOR(%, __modulus) +_DEFINE_VALARRAY_OPERATOR(+, __plus) +_DEFINE_VALARRAY_OPERATOR(-, __minus) +_DEFINE_VALARRAY_OPERATOR(^, __bitwise_xor) +_DEFINE_VALARRAY_OPERATOR(&, __bitwise_and) +_DEFINE_VALARRAY_OPERATOR(|, __bitwise_or) +_DEFINE_VALARRAY_OPERATOR(<<, __shift_left) +_DEFINE_VALARRAY_OPERATOR(>>, __shift_right) + +#undef _DEFINE_VALARRAY_OPERATOR + + // @} group numeric_arrays + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _MASK_ARRAY_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/memoryfwd.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/memoryfwd.h new file mode 100644 index 0000000..7c85970 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/memoryfwd.h @@ -0,0 +1,78 @@ +// Forward declarations -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1996-1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/memoryfwd.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _MEMORYFWD_H +#define _MEMORYFWD_H 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup allocators Allocators + * @ingroup memory + * + * Classes encapsulating memory operations. + * + * @{ + */ + + template + class allocator; + + template<> + class allocator; + + /// Declare uses_allocator so it can be specialized in \ etc. + template + struct uses_allocator; + + /// @} group memory + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/move.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/move.h new file mode 100644 index 0000000..fb6c61f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/move.h @@ -0,0 +1,198 @@ +// Move, forward and identity for C++0x + swap -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/move.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{utility} + */ + +#ifndef _MOVE_H +#define _MOVE_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Used, in C++03 mode too, by allocators, etc. + /** + * @brief Same as C++11 std::addressof + * @ingroup utilities + */ + template + inline _Tp* + __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT + { + return reinterpret_cast<_Tp*> + (&const_cast(reinterpret_cast(__r))); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if __cplusplus >= 201103L +#include // Brings in std::declval too. + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup utilities + * @{ + */ + + /** + * @brief Forward an lvalue. + * @return The parameter cast to the specified type. + * + * This function is used to implement "perfect forwarding". + */ + template + constexpr _Tp&& + forward(typename std::remove_reference<_Tp>::type& __t) noexcept + { return static_cast<_Tp&&>(__t); } + + /** + * @brief Forward an rvalue. + * @return The parameter cast to the specified type. + * + * This function is used to implement "perfect forwarding". + */ + template + constexpr _Tp&& + forward(typename std::remove_reference<_Tp>::type&& __t) noexcept + { + static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" + " substituting _Tp is an lvalue reference type"); + return static_cast<_Tp&&>(__t); + } + + /** + * @brief Convert a value to an rvalue. + * @param __t A thing of arbitrary type. + * @return The parameter cast to an rvalue-reference to allow moving it. + */ + template + 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 { }; + + /** + * @brief Conditionally convert a value to an rvalue. + * @param __x A thing of arbitrary type. + * @return The parameter, possibly cast to an rvalue-reference. + * + * Same as std::move unless the type's move constructor could throw and the + * type is copyable, in which case an lvalue-reference is returned instead. + */ + template + inline constexpr typename + conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type + move_if_noexcept(_Tp& __x) noexcept + { return std::move(__x); } + + // declval, from type_traits. + + /** + * @brief Returns the actual address of the object or function + * referenced by r, even in the presence of an overloaded + * operator&. + * @param __r Reference to an object or function. + * @return The actual address. + */ + template + inline _Tp* + addressof(_Tp& __r) noexcept + { return std::__addressof(__r); } + + /// @} group utilities +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#define _GLIBCXX_MOVE(__val) std::move(__val) +#define _GLIBCXX_FORWARD(_Tp, __val) std::forward<_Tp>(__val) +#else +#define _GLIBCXX_MOVE(__val) (__val) +#define _GLIBCXX_FORWARD(_Tp, __val) (__val) +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup utilities + * @{ + */ + + /** + * @brief Swaps two values. + * @param __a A thing of arbitrary type. + * @param __b Another thing of arbitrary type. + * @return Nothing. + */ + template + inline void + swap(_Tp& __a, _Tp& __b) +#if __cplusplus >= 201103L + noexcept(__and_, + is_nothrow_move_assignable<_Tp>>::value) +#endif + { + // concept requirements + __glibcxx_function_requires(_SGIAssignableConcept<_Tp>) + + _Tp __tmp = _GLIBCXX_MOVE(__a); + __a = _GLIBCXX_MOVE(__b); + __b = _GLIBCXX_MOVE(__tmp); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 809. std::swap should be overloaded for array types. + /// Swap the contents of two arrays. + template + inline void + swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) +#if __cplusplus >= 201103L + noexcept(noexcept(swap(*__a, *__b))) +#endif + { + for (size_t __n = 0; __n < _Nm; ++__n) + swap(__a[__n], __b[__n]); + } + + /// @} group utilities +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _MOVE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/nested_exception.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/nested_exception.h new file mode 100644 index 0000000..81a5d0d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/nested_exception.h @@ -0,0 +1,166 @@ +// Nested Exception support header (nested_exception class) for -*- C++ -*- + +// Copyright (C) 2009-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/nested_exception.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{exception} + */ + +#ifndef _GLIBCXX_NESTED_EXCEPTION_H +#define _GLIBCXX_NESTED_EXCEPTION_H 1 + +#pragma GCC visibility push(default) + +#if __cplusplus < 201103L +# include +#else + +#include + +#if ATOMIC_INT_LOCK_FREE < 2 +# error This platform does not support exception propagation. +#endif + +extern "C++" { + +namespace std +{ + /** + * @addtogroup exceptions + * @{ + */ + + /// Exception class with exception_ptr data member. + class nested_exception + { + exception_ptr _M_ptr; + + public: + nested_exception() noexcept : _M_ptr(current_exception()) { } + + nested_exception(const nested_exception&) = 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__)); + + // This function should never be called, but is needed to avoid a warning + // about ambiguous base classes when instantiating throw_with_nested<_Ex>() + // with a type that has an accessible nested_exception base. + 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__)); + + /// If @p __ex is derived from nested_exception, @p __ex. + /// Else, an implementation-defined object derived from both. + template + inline void + throw_with_nested(_Ex __ex) + { + if (__get_nested_exception(__ex)) + throw __ex; + __throw_with_nested(static_cast<_Ex&&>(__ex), &__ex); + } + + /// If @p __ex is derived from nested_exception, @p __ex.rethrow_nested(). + template + inline void + rethrow_if_nested(const _Ex& __ex) + { + if (const nested_exception* __nested = __get_nested_exception(__ex)) + __nested->rethrow_nested(); + } + + /// Overload, See N2619 + inline void + rethrow_if_nested(const nested_exception& __ex) + { __ex.rethrow_nested(); } + + // @} group exceptions +} // namespace std + +} // extern "C++" + +#endif // C++11 + +#pragma GCC visibility pop + +#endif // _GLIBCXX_NESTED_EXCEPTION_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ostream.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ostream.tcc new file mode 100644 index 0000000..9904a25 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ostream.tcc @@ -0,0 +1,407 @@ +// ostream classes -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ostream.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ostream} + */ + +// +// ISO C++ 14882: 27.6.2 Output streams +// + +#ifndef _OSTREAM_TCC +#define _OSTREAM_TCC 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + basic_ostream<_CharT, _Traits>::sentry:: + sentry(basic_ostream<_CharT, _Traits>& __os) + : _M_ok(false), _M_os(__os) + { + // XXX MT + 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; + __try + { + const __num_put_type& __np = __check_facet(this->_M_num_put); + if (__np.put(*this, *this, this->fill(), __v).failed()) + __err |= ios_base::badbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 117. basic_ostream uses nonexistent num_put member functions. + 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 117. basic_ostream uses nonexistent num_put member functions. + 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) + { + __try + { + if (!__copy_streambufs(__sbin, this->rdbuf())) + __err |= ios_base::failbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 60. What is a formatted input function? + // basic_ostream::put(char_type) is an unformatted output function. + // DR 63. Exception-handling policy for unformatted output. + // Unformatted output functions should catch exceptions thrown + // from streambuf members. + sentry __cerb(*this); + if (__cerb) + { + ios_base::iostate __err = ios_base::goodbit; + __try + { + const int_type __put = this->rdbuf()->sputc(__c); + if (traits_type::eq_int_type(__put, traits_type::eof())) + __err |= ios_base::badbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 60. What is a formatted input function? + // basic_ostream::write(const char_type*, streamsize) is an + // unformatted output function. + // DR 63. Exception-handling policy for unformatted output. + // Unformatted output functions should catch exceptions thrown + // from streambuf members. + sentry __cerb(*this); + if (__cerb) + { + __try + { _M_write(__s, __n); } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { this->_M_setstate(ios_base::badbit); } + } + return *this; + } + + template + basic_ostream<_CharT, _Traits>& + basic_ostream<_CharT, _Traits>:: + flush() + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 60. What is a formatted input function? + // basic_ostream::flush() is *not* an unformatted output function. + ios_base::iostate __err = ios_base::goodbit; + __try + { + if (this->rdbuf() && this->rdbuf()->pubsync() == -1) + __err |= ios_base::badbit; + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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); + __try + { + if (!this->fail()) + __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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; + __try + { + if (!this->fail()) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 136. seekp, seekg setting wrong streams? + const pos_type __p = this->rdbuf()->pubseekpos(__pos, + ios_base::out); + + // 129. Need error indication from seekp() and seekg() + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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; + __try + { + if (!this->fail()) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 136. seekp, seekg setting wrong streams? + const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, + ios_base::out); + + // 129. Need error indication from seekp() and seekg() + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + this->_M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { 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 + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 167. Improper use of traits_type::length() + const size_t __clen = char_traits::length(__s); + __try + { + struct __ptr_guard + { + _CharT *__p; + __ptr_guard (_CharT *__ip): __p(__ip) { } + ~__ptr_guard() { delete[] __p; } + _CharT* __get() { return __p; } + } __pg (new _CharT[__clen]); + + _CharT *__ws = __pg.__get(); + for (size_t __i = 0; __i < __clen; ++__i) + __ws[__i] = __out.widen(__s[__i]); + __ostream_insert(__out, __ws, __clen); + } + __catch(__cxxabiv1::__forced_unwind&) + { + __out._M_setstate(ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { __out._M_setstate(ios_base::badbit); } + } + return __out; + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template 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); +#ifdef _GLIBCXX_USE_LONG_LONG + extern template ostream& ostream::_M_insert(long long); + extern template ostream& ostream::_M_insert(unsigned long long); +#endif + extern template ostream& ostream::_M_insert(double); + extern template ostream& ostream::_M_insert(long double); + extern template ostream& ostream::_M_insert(const void*); + +#ifdef _GLIBCXX_USE_WCHAR_T + 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); +#ifdef _GLIBCXX_USE_LONG_LONG + extern template wostream& wostream::_M_insert(long long); + extern template wostream& wostream::_M_insert(unsigned long long); +#endif + extern template wostream& wostream::_M_insert(double); + extern template wostream& wostream::_M_insert(long double); + extern template wostream& wostream::_M_insert(const void*); +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ostream_insert.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ostream_insert.h new file mode 100644 index 0000000..1fa09fb --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ostream_insert.h @@ -0,0 +1,129 @@ +// Helpers for ostream inserters -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ostream_insert.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ostream} + */ + +#ifndef _OSTREAM_INSERT_H +#define _OSTREAM_INSERT_H 1 + +#pragma GCC system_header + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + 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) + { + __try + { + const streamsize __w = __out.width(); + if (__w > __n) + { + const bool __left = ((__out.flags() + & __ios_base::adjustfield) + == __ios_base::left); + if (!__left) + __ostream_fill(__out, __w - __n); + if (__out.good()) + __ostream_write(__out, __s, __n); + if (__left && __out.good()) + __ostream_fill(__out, __w - __n); + } + else + __ostream_write(__out, __s, __n); + __out.width(0); + } + __catch(__cxxabiv1::__forced_unwind&) + { + __out._M_setstate(__ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { __out._M_setstate(__ios_base::badbit); } + } + return __out; + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template ostream& __ostream_insert(ostream&, const char*, streamsize); + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template wostream& __ostream_insert(wostream&, const wchar_t*, + streamsize); +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif /* _OSTREAM_INSERT_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/postypes.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/postypes.h new file mode 100644 index 0000000..d48dfe1 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/postypes.h @@ -0,0 +1,242 @@ +// Position types -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/postypes.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +// +// ISO C++ 14882: 27.4.1 - Types +// ISO C++ 14882: 27.4.3 - Template class fpos +// + +#ifndef _GLIBCXX_POSTYPES_H +#define _GLIBCXX_POSTYPES_H 1 + +#pragma GCC system_header + +#include // For mbstate_t + +// XXX If is really needed, make sure to define the macros +// before including it, in order not to break (and +// in C++0x). Reconsider all this as soon as possible... +#if (defined(_GLIBCXX_HAVE_INT64_T) && !defined(_GLIBCXX_HAVE_INT64_T_LONG) \ + && !defined(_GLIBCXX_HAVE_INT64_T_LONG_LONG)) + +#ifndef __STDC_LIMIT_MACROS +# define _UNDEF__STDC_LIMIT_MACROS +# define __STDC_LIMIT_MACROS +#endif +#ifndef __STDC_CONSTANT_MACROS +# define _UNDEF__STDC_CONSTANT_MACROS +# define __STDC_CONSTANT_MACROS +#endif +#include // For int64_t +#ifdef _UNDEF__STDC_LIMIT_MACROS +# undef __STDC_LIMIT_MACROS +# undef _UNDEF__STDC_LIMIT_MACROS +#endif +#ifdef _UNDEF__STDC_CONSTANT_MACROS +# undef __STDC_CONSTANT_MACROS +# undef _UNDEF__STDC_CONSTANT_MACROS +#endif + +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // The types streamoff, streampos and wstreampos and the class + // template fpos<> are described in clauses 21.1.2, 21.1.3, 27.1.2, + // 27.2, 27.4.1, 27.4.3 and D.6. Despite all this verbiage, the + // behaviour of these types is mostly implementation defined or + // unspecified. The behaviour in this implementation is as noted + // below. + + /** + * @brief Type used by fpos, char_traits, and char_traits. + * + * In clauses 21.1.3.1 and 27.4.1 streamoff is described as an + * implementation defined type. + * Note: In versions of GCC up to and including GCC 3.3, streamoff + * was typedef long. + */ +#ifdef _GLIBCXX_HAVE_INT64_T_LONG + typedef long streamoff; +#elif defined(_GLIBCXX_HAVE_INT64_T_LONG_LONG) + typedef long long streamoff; +#elif defined(_GLIBCXX_HAVE_INT64_T) + typedef int64_t streamoff; +#else + typedef long long streamoff; +#endif + + /// Integral type for I/O operation counts and buffer sizes. + typedef ptrdiff_t streamsize; // Signed integral type + + /** + * @brief Class representing stream positions. + * + * The standard places no requirements upon the template parameter StateT. + * In this implementation StateT must be DefaultConstructible, + * CopyConstructible and Assignable. The standard only requires that fpos + * should contain a member of type StateT. In this implementation it also + * contains an offset stored as a signed integer. + * + * @param StateT Type passed to and returned from state(). + */ + template + class fpos + { + private: + streamoff _M_off; + _StateT _M_state; + + public: + // The standard doesn't require that fpos objects can be default + // constructed. This implementation provides a default + // constructor that initializes the offset to 0 and default + // constructs the state. + fpos() + : _M_off(0), _M_state() { } + + // The standard requires that fpos objects can be constructed + // from streamoff objects using the constructor syntax, and + // fails to give any meaningful semantics. In this + // implementation implicit conversion is also allowed, and this + // constructor stores the streamoff as the offset and default + // constructs the state. + /// Construct position from offset. + fpos(streamoff __off) + : _M_off(__off), _M_state() { } + + /// Convert to streamoff. + operator streamoff() const { return _M_off; } + + /// Remember the value of @a st. + void + state(_StateT __st) + { _M_state = __st; } + + /// Return the last set value of @a st. + _StateT + state() const + { return _M_state; } + + // The standard requires that this operator must be defined, but + // gives no semantics. In this implementation it just adds its + // argument to the stored offset and returns *this. + /// Add offset to this position. + fpos& + operator+=(streamoff __off) + { + _M_off += __off; + return *this; + } + + // The standard requires that this operator must be defined, but + // gives no semantics. In this implementation it just subtracts + // its argument from the stored offset and returns *this. + /// Subtract offset from this position. + fpos& + operator-=(streamoff __off) + { + _M_off -= __off; + return *this; + } + + // The standard requires that this operator must be defined, but + // defines its semantics only in terms of operator-. In this + // implementation it constructs a copy of *this, adds the + // argument to that copy using operator+= and then returns the + // copy. + /// Add position and offset. + fpos + operator+(streamoff __off) const + { + fpos __pos(*this); + __pos += __off; + return __pos; + } + + // The standard requires that this operator must be defined, but + // defines its semantics only in terms of operator+. In this + // implementation it constructs a copy of *this, subtracts the + // argument from that copy using operator-= and then returns the + // copy. + /// Subtract offset from position. + fpos + operator-(streamoff __off) const + { + fpos __pos(*this); + __pos -= __off; + return __pos; + } + + // The standard requires that this operator must be defined, but + // defines its semantics only in terms of operator+. In this + // implementation it returns the difference between the offset + // stored in *this and in the argument. + /// Subtract position to return offset. + streamoff + operator-(const fpos& __other) const + { return _M_off - __other._M_off; } + }; + + // The standard only requires that operator== must be an + // equivalence relation. In this implementation two fpos + // objects belong to the same equivalence class if the contained + // offsets compare equal. + /// Test if equivalent to another position. + 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); } + + // Clauses 21.1.3.1 and 21.1.3.2 describe streampos and wstreampos + // as implementation defined types, but clause 27.2 requires that + // they must both be typedefs for fpos + /// File position for char streams. + typedef fpos streampos; + /// File position for wchar_t streams. + typedef fpos wstreampos; + +#if __cplusplus >= 201103L + /// File position for char16_t streams. + typedef fpos u16streampos; + /// File position for char32_t streams. + typedef fpos u32streampos; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ptr_traits.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ptr_traits.h new file mode 100644 index 0000000..8a85fb2 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/ptr_traits.h @@ -0,0 +1,182 @@ +// Pointer Traits -*- C++ -*- + +// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ptr_traits.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _PTR_TRAITS_H +#define _PTR_TRAITS_H 1 + +#if __cplusplus >= 201103L + +#include // For _GLIBCXX_HAS_NESTED_TYPE + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +_GLIBCXX_HAS_NESTED_TYPE(element_type) +_GLIBCXX_HAS_NESTED_TYPE(difference_type) + + 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); } + }; + + /** + * @brief Uniform interface to all pointer-like types + * @ingroup pointer_abstractions + */ + template + struct pointer_traits : __ptrtr_pointer_to<_Ptr> + { + /// The pointer type + typedef _Ptr pointer; + /// The type pointed to + typedef typename __ptrtr_elt_type<_Ptr>::__type element_type; + /// Type used to represent the difference between two pointers + typedef typename __ptrtr_diff_type<_Ptr>::__type difference_type; + + template + using rebind = typename __ptrtr_rebind<_Ptr, _Up>::__type; + }; + + /** + * @brief Partial specialization for built-in pointers. + * @ingroup pointer_abstractions + */ + template + struct pointer_traits<_Tp*> + { + /// The pointer type + typedef _Tp* pointer; + /// The type pointed to + typedef _Tp element_type; + /// Type used to represent the difference between two pointers + typedef ptrdiff_t difference_type; + + template + using rebind = _Up*; + + /** + * @brief Obtain a pointer to an object + * @param __r A reference to an object of type @c element_type + * @return @c addressof(__r) + */ + static pointer + pointer_to(typename __ptrtr_not_void::__type& __r) noexcept + { return std::addressof(__r); } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/random.h new file mode 100644 index 0000000..c37d2f3 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/random.h @@ -0,0 +1,6069 @@ +// random number generation -*- C++ -*- + +// Copyright (C) 2009-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _RANDOM_H +#define _RANDOM_H 1 + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // [26.4] Random number generation + + /** + * @defgroup random Random Number Generation + * @ingroup numerics + * + * A facility for generating random numbers on selected distributions. + * @{ + */ + + /** + * @brief A function template for converting the output of a (integral) + * uniform random number generator to a floatng point result in the range + * [0-1). + */ + template + _RealType + generate_canonical(_UniformRandomNumberGenerator& __g); + +_GLIBCXX_END_NAMESPACE_VERSION + + /* + * Implementation-space details. + */ + namespace __detail + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + (std::numeric_limits<_UIntType>::digits)> + struct _Shift + { static const _UIntType __value = 0; }; + + template + struct _Shift<_UIntType, __w, true> + { static const _UIntType __value = _UIntType(1) << __w; }; + + template + struct _Select_uint_least_t + { + static_assert(__which < 0, /* needs to be dependent */ + "sorry, would be too much trouble for a slow result"); + }; + + template + struct _Select_uint_least_t<__s, 4> + { typedef unsigned int type; }; + + template + struct _Select_uint_least_t<__s, 3> + { typedef unsigned long type; }; + + template + struct _Select_uint_least_t<__s, 2> + { typedef unsigned long long type; }; + +#ifdef _GLIBCXX_USE_INT128 + template + struct _Select_uint_least_t<__s, 1> + { typedef unsigned __int128 type; }; +#endif + + // Assume a != 0, a < m, c < m, x < m. + template= __m - 1), + bool __schrage_ok = __m % __a < __m / __a> + struct _Mod + { + typedef typename _Select_uint_least_t::type _Tp2; + static _Tp + __calc(_Tp __x) + { return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m); } + }; + + // Schrage. + template + struct _Mod<_Tp, __m, __a, __c, false, true> + { + static _Tp + __calc(_Tp __x); + }; + + // Special cases: + // - for m == 2^n or m == 0, unsigned integer overflow is safe. + // - a * (m - 1) + c fits in _Tp, there is no overflow. + template + struct _Mod<_Tp, __m, __a, __c, true, __s> + { + static _Tp + __calc(_Tp __x) + { + _Tp __res = __a * __x + __c; + if (__m) + __res %= __m; + return __res; + } + }; + + template + inline _Tp + __mod(_Tp __x) + { return _Mod<_Tp, __m, __a, __c>::__calc(__x); } + + /* Determine whether number is a power of 2. */ + template + inline bool + _Power_of_2(_Tp __x) + { + return ((__x - 1) & __x) == 0; + }; + + /* + * An adaptor class for converting the output of any Generator into + * the input for a specific Distribution. + */ + template + struct _Adaptor + { + + public: + _Adaptor(_Engine& __g) + : _M_g(__g) { } + + _DInputType + min() const + { return _DInputType(0); } + + _DInputType + max() const + { return _DInputType(1); } + + /* + * Converts a value generated by the adapted random number generator + * into a value in the input domain for the dependent random number + * distribution. + */ + _DInputType + operator()() + { + return std::generate_canonical<_DInputType, + std::numeric_limits<_DInputType>::digits, + _Engine>(_M_g); + } + + private: + _Engine& _M_g; + }; + + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace __detail + +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup random_generators Random Number Generators + * @ingroup random + * + * These classes define objects which provide random or pseudorandom + * numbers, either from a discrete or a continuous interval. The + * random number generator supplied as a part of this library are + * all uniform random number generators which provide a sequence of + * random number uniformly distributed over their range. + * + * A number generator is a function object with an operator() that + * takes zero arguments and returns a number. + * + * A compliant random number generator must satisfy the following + * requirements. + * + *
    Random Number Generator Requirements
    To be documented.
    + * + * @{ + */ + + /** + * @brief A model of a linear congruential random number generator. + * + * A random number generator that produces pseudorandom numbers via + * linear function: + * @f[ + * x_{i+1}\leftarrow(ax_{i} + c) \bmod m + * @f] + * + * The template parameter @p _UIntType must be an unsigned integral type + * large enough to store values up to (__m-1). If the template parameter + * @p __m is 0, the modulus @p __m used is + * std::numeric_limits<_UIntType>::max() plus 1. Otherwise, the template + * parameters @p __a and @p __c must be less than @p __m. + * + * The size of the state is @f$1@f$. + */ + template + class linear_congruential_engine + { + static_assert(std::is_unsigned<_UIntType>::value, "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: + /** The type of the generated random value. */ + typedef _UIntType result_type; + + /** The multiplier. */ + static constexpr result_type multiplier = __a; + /** An increment. */ + static constexpr result_type increment = __c; + /** The modulus. */ + static constexpr result_type modulus = __m; + static constexpr result_type default_seed = 1u; + + /** + * @brief Constructs a %linear_congruential_engine random number + * generator engine with seed @p __s. The default seed value + * is 1. + * + * @param __s The initial seed value. + */ + explicit + linear_congruential_engine(result_type __s = default_seed) + { seed(__s); } + + /** + * @brief Constructs a %linear_congruential_engine random number + * generator engine seeded from the seed sequence @p __q. + * + * @param __q the seed sequence. + */ + template::value> + ::type> + explicit + linear_congruential_engine(_Sseq& __q) + { seed(__q); } + + /** + * @brief Reseeds the %linear_congruential_engine random number generator + * engine sequence to the seed @p __s. + * + * @param __s The new seed. + */ + void + seed(result_type __s = default_seed); + + /** + * @brief Reseeds the %linear_congruential_engine random number generator + * engine + * sequence using values from the seed sequence @p __q. + * + * @param __q the seed sequence. + */ + template + typename std::enable_if::value>::type + seed(_Sseq& __q); + + /** + * @brief Gets the smallest possible value in the output range. + * + * The minimum depends on the @p __c parameter: if it is zero, the + * minimum generated must be > 0, otherwise 0 is allowed. + */ + static constexpr result_type + min() + { return __c == 0u ? 1u : 0u; } + + /** + * @brief Gets the largest possible value in the output range. + */ + static constexpr result_type + max() + { return __m - 1u; } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * @brief Gets the next random number in the sequence. + */ + result_type + operator()() + { + _M_x = __detail::__mod<_UIntType, __m, __a, __c>(_M_x); + return _M_x; + } + + /** + * @brief Compares two linear congruential random number generator + * objects of the same type for equality. + * + * @param __lhs A linear congruential random number generator object. + * @param __rhs Another linear congruential random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const linear_congruential_engine& __lhs, + const linear_congruential_engine& __rhs) + { return __lhs._M_x == __rhs._M_x; } + + /** + * @brief Writes the textual representation of the state x(i) of x to + * @p __os. + * + * @param __os The output stream. + * @param __lcr A % linear_congruential_engine random number generator. + * @returns __os. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::linear_congruential_engine<_UIntType1, + __a1, __c1, __m1>& __lcr); + + /** + * @brief Sets the state of the engine by reading its textual + * representation from @p __is. + * + * The textual representation must have been previously written using + * an output stream whose imbued locale and whose type's template + * specialization arguments _CharT and _Traits were the same as those + * of @p __is. + * + * @param __is The input stream. + * @param __lcr A % linear_congruential_engine random number generator. + * @returns __is. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::linear_congruential_engine<_UIntType1, __a1, + __c1, __m1>& __lcr); + + private: + _UIntType _M_x; + }; + + /** + * @brief Compares two linear congruential random number generator + * objects of the same type for inequality. + * + * @param __lhs A linear congruential random number generator object. + * @param __rhs Another linear congruential random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::linear_congruential_engine<_UIntType, __a, + __c, __m>& __lhs, + const std::linear_congruential_engine<_UIntType, __a, + __c, __m>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * A generalized feedback shift register discrete random number generator. + * + * This algorithm avoids multiplication and division and is designed to be + * friendly to a pipelined architecture. If the parameters are chosen + * correctly, this generator will produce numbers with a very long period and + * fairly good apparent entropy, although still not cryptographically strong. + * + * The best way to use this generator is with the predefined mt19937 class. + * + * This algorithm was originally invented by Makoto Matsumoto and + * Takuji Nishimura. + * + * @tparam __w Word size, the number of bits in each element of + * the state vector. + * @tparam __n The degree of recursion. + * @tparam __m The period parameter. + * @tparam __r The separation point bit index. + * @tparam __a The last row of the twist matrix. + * @tparam __u The first right-shift tempering matrix parameter. + * @tparam __d The first right-shift tempering matrix mask. + * @tparam __s The first left-shift tempering matrix parameter. + * @tparam __b The first left-shift tempering matrix mask. + * @tparam __t The second left-shift tempering matrix parameter. + * @tparam __c The second left-shift tempering matrix mask. + * @tparam __l The second right-shift tempering matrix parameter. + * @tparam __f Initialization multiplier. + */ + template + class mersenne_twister_engine + { + static_assert(std::is_unsigned<_UIntType>::value, "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: + /** The type of the generated random value. */ + typedef _UIntType result_type; + + // parameter values + static constexpr size_t word_size = __w; + static constexpr size_t state_size = __n; + static constexpr size_t shift_size = __m; + static constexpr size_t mask_bits = __r; + static constexpr result_type xor_mask = __a; + static constexpr size_t tempering_u = __u; + static constexpr result_type tempering_d = __d; + static constexpr size_t tempering_s = __s; + static constexpr result_type tempering_b = __b; + static constexpr size_t tempering_t = __t; + static constexpr result_type tempering_c = __c; + static constexpr size_t tempering_l = __l; + static constexpr result_type initialization_multiplier = __f; + static constexpr result_type default_seed = 5489u; + + // constructors and member function + explicit + mersenne_twister_engine(result_type __sd = default_seed) + { seed(__sd); } + + /** + * @brief Constructs a %mersenne_twister_engine random number generator + * engine seeded from the seed sequence @p __q. + * + * @param __q the seed sequence. + */ + template::value> + ::type> + explicit + mersenne_twister_engine(_Sseq& __q) + { seed(__q); } + + void + seed(result_type __sd = default_seed); + + template + typename std::enable_if::value>::type + seed(_Sseq& __q); + + /** + * @brief Gets the smallest possible value in the output range. + */ + static constexpr result_type + min() + { return 0; }; + + /** + * @brief Gets the largest possible value in the output range. + */ + static constexpr result_type + max() + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z); + + result_type + operator()(); + + /** + * @brief Compares two % mersenne_twister_engine random number generator + * objects of the same type for equality. + * + * @param __lhs A % mersenne_twister_engine random number generator + * object. + * @param __rhs Another % mersenne_twister_engine random number + * generator object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const mersenne_twister_engine& __lhs, + const mersenne_twister_engine& __rhs) + { return (std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x) + && __lhs._M_p == __rhs._M_p); } + + /** + * @brief Inserts the current state of a % mersenne_twister_engine + * random number generator engine @p __x into the output stream + * @p __os. + * + * @param __os An output stream. + * @param __x A % mersenne_twister_engine random number generator + * engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::mersenne_twister_engine<_UIntType1, __w1, __n1, + __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, + __l1, __f1>& __x); + + /** + * @brief Extracts the current state of a % mersenne_twister_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A % mersenne_twister_engine random number generator + * engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::mersenne_twister_engine<_UIntType1, __w1, __n1, __m1, + __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, + __l1, __f1>& __x); + + private: + void _M_gen_rand(); + + _UIntType _M_x[state_size]; + size_t _M_p; + }; + + /** + * @brief Compares two % mersenne_twister_engine random number generator + * objects of the same type for inequality. + * + * @param __lhs A % mersenne_twister_engine random number generator + * object. + * @param __rhs Another % mersenne_twister_engine random number + * generator object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::mersenne_twister_engine<_UIntType, __w, __n, __m, + __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __lhs, + const std::mersenne_twister_engine<_UIntType, __w, __n, __m, + __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * @brief The Marsaglia-Zaman generator. + * + * This is a model of a Generalized Fibonacci discrete random number + * generator, sometimes referred to as the SWC generator. + * + * A discrete random number generator that produces pseudorandom + * numbers using: + * @f[ + * x_{i}\leftarrow(x_{i - s} - x_{i - r} - carry_{i-1}) \bmod m + * @f] + * + * The size of the state is @f$r@f$ + * and the maximum period of the generator is @f$(m^r - m^s - 1)@f$. + * + * @var _M_x The state of the generator. This is a ring buffer. + * @var _M_carry The carry. + * @var _M_p Current index of x(i - r). + */ + template + class subtract_with_carry_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: + /** The type of the generated random value. */ + typedef _UIntType result_type; + + // parameter values + static constexpr size_t word_size = __w; + static constexpr size_t short_lag = __s; + static constexpr size_t long_lag = __r; + static constexpr result_type default_seed = 19780503u; + + /** + * @brief Constructs an explicitly seeded % subtract_with_carry_engine + * random number generator. + */ + explicit + subtract_with_carry_engine(result_type __sd = default_seed) + { seed(__sd); } + + /** + * @brief Constructs a %subtract_with_carry_engine random number engine + * seeded from the seed sequence @p __q. + * + * @param __q the seed sequence. + */ + template::value> + ::type> + explicit + subtract_with_carry_engine(_Sseq& __q) + { seed(__q); } + + /** + * @brief Seeds the initial state @f$x_0@f$ of the random number + * generator. + * + * N1688[4.19] modifies this as follows. If @p __value == 0, + * sets value to 19780503. In any case, with a linear + * congruential generator lcg(i) having parameters @f$ m_{lcg} = + * 2147483563, a_{lcg} = 40014, c_{lcg} = 0, and lcg(0) = value + * @f$, sets @f$ x_{-r} \dots x_{-1} @f$ to @f$ lcg(1) \bmod m + * \dots lcg(r) \bmod m @f$ respectively. If @f$ x_{-1} = 0 @f$ + * set carry to 1, otherwise sets carry to 0. + */ + void + seed(result_type __sd = default_seed); + + /** + * @brief Seeds the initial state @f$x_0@f$ of the + * % subtract_with_carry_engine random number generator. + */ + template + typename std::enable_if::value>::type + seed(_Sseq& __q); + + /** + * @brief Gets the inclusive minimum value of the range of random + * integers returned by this generator. + */ + static constexpr result_type + min() + { return 0; } + + /** + * @brief Gets the inclusive maximum value of the range of random + * integers returned by this generator. + */ + static constexpr result_type + max() + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * @brief Gets the next random number in the sequence. + */ + result_type + operator()(); + + /** + * @brief Compares two % subtract_with_carry_engine random number + * generator objects of the same type for equality. + * + * @param __lhs A % subtract_with_carry_engine random number generator + * object. + * @param __rhs Another % subtract_with_carry_engine random number + * generator object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const subtract_with_carry_engine& __lhs, + const subtract_with_carry_engine& __rhs) + { return (std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x) + && __lhs._M_carry == __rhs._M_carry + && __lhs._M_p == __rhs._M_p); } + + /** + * @brief Inserts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x into the output stream + * @p __os. + * + * @param __os An output stream. + * @param __x A % subtract_with_carry_engine random number generator + * engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const std::subtract_with_carry_engine<_UIntType1, __w1, + __s1, __r1>&); + + /** + * @brief Extracts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A % subtract_with_carry_engine random number generator + * engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + std::subtract_with_carry_engine<_UIntType1, __w1, + __s1, __r1>&); + + private: + _UIntType _M_x[long_lag]; + _UIntType _M_carry; + size_t _M_p; + }; + + /** + * @brief Compares two % subtract_with_carry_engine random number + * generator objects of the same type for inequality. + * + * @param __lhs A % subtract_with_carry_engine random number generator + * object. + * @param __rhs Another % subtract_with_carry_engine random number + * generator object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::subtract_with_carry_engine<_UIntType, __w, + __s, __r>& __lhs, + const std::subtract_with_carry_engine<_UIntType, __w, + __s, __r>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * Produces random numbers from some base engine by discarding blocks of + * data. + * + * 0 <= @p __r <= @p __p + */ + template + class discard_block_engine + { + static_assert(1 <= __r && __r <= __p, + "template argument substituting __r out of bounds"); + + public: + /** The type of the generated random value. */ + typedef typename _RandomNumberEngine::result_type result_type; + + // parameter values + static constexpr size_t block_size = __p; + static constexpr size_t used_block = __r; + + /** + * @brief Constructs a default %discard_block_engine engine. + * + * The underlying engine is default constructed as well. + */ + discard_block_engine() + : _M_b(), _M_n(0) { } + + /** + * @brief Copy constructs a %discard_block_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + discard_block_engine(const _RandomNumberEngine& __rng) + : _M_b(__rng), _M_n(0) { } + + /** + * @brief Move constructs a %discard_block_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + discard_block_engine(_RandomNumberEngine&& __rng) + : _M_b(std::move(__rng)), _M_n(0) { } + + /** + * @brief Seed constructs a %discard_block_engine engine. + * + * Constructs the underlying generator engine seeded with @p __s. + * @param __s A seed value for the base class engine. + */ + explicit + discard_block_engine(result_type __s) + : _M_b(__s), _M_n(0) { } + + /** + * @brief Generator construct a %discard_block_engine engine. + * + * @param __q A seed sequence. + */ + template::value + && !std::is_same<_Sseq, _RandomNumberEngine>::value> + ::type> + explicit + discard_block_engine(_Sseq& __q) + : _M_b(__q), _M_n(0) + { } + + /** + * @brief Reseeds the %discard_block_engine object with the default + * seed for the underlying base class generator engine. + */ + void + seed() + { + _M_b.seed(); + _M_n = 0; + } + + /** + * @brief Reseeds the %discard_block_engine object with the default + * seed for the underlying base class generator engine. + */ + void + seed(result_type __s) + { + _M_b.seed(__s); + _M_n = 0; + } + + /** + * @brief Reseeds the %discard_block_engine object with the given seed + * sequence. + * @param __q A seed generator function. + */ + template + void + seed(_Sseq& __q) + { + _M_b.seed(__q); + _M_n = 0; + } + + /** + * @brief Gets a const reference to the underlying generator engine + * object. + */ + const _RandomNumberEngine& + base() const noexcept + { return _M_b; } + + /** + * @brief Gets the minimum value in the generated random number range. + */ + static constexpr result_type + min() + { return _RandomNumberEngine::min(); } + + /** + * @brief Gets the maximum value in the generated random number range. + */ + static constexpr result_type + max() + { return _RandomNumberEngine::max(); } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * @brief Gets the next value in the generated random number sequence. + */ + result_type + operator()(); + + /** + * @brief Compares two %discard_block_engine random number generator + * objects of the same type for equality. + * + * @param __lhs A %discard_block_engine random number generator object. + * @param __rhs Another %discard_block_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const discard_block_engine& __lhs, + const discard_block_engine& __rhs) + { return __lhs._M_b == __rhs._M_b && __lhs._M_n == __rhs._M_n; } + + /** + * @brief Inserts the current state of a %discard_block_engine random + * number generator engine @p __x into the output stream + * @p __os. + * + * @param __os An output stream. + * @param __x A %discard_block_engine random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::discard_block_engine<_RandomNumberEngine1, + __p1, __r1>& __x); + + /** + * @brief Extracts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A %discard_block_engine random number generator engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::discard_block_engine<_RandomNumberEngine1, + __p1, __r1>& __x); + + private: + _RandomNumberEngine _M_b; + size_t _M_n; + }; + + /** + * @brief Compares two %discard_block_engine random number generator + * objects of the same type for inequality. + * + * @param __lhs A %discard_block_engine random number generator object. + * @param __rhs Another %discard_block_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::discard_block_engine<_RandomNumberEngine, __p, + __r>& __lhs, + const std::discard_block_engine<_RandomNumberEngine, __p, + __r>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * Produces random numbers by combining random numbers from some base + * engine to produce random numbers with a specifies number of bits @p __w. + */ + template + class independent_bits_engine + { + static_assert(std::is_unsigned<_UIntType>::value, "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: + /** The type of the generated random value. */ + typedef _UIntType result_type; + + /** + * @brief Constructs a default %independent_bits_engine engine. + * + * The underlying engine is default constructed as well. + */ + independent_bits_engine() + : _M_b() { } + + /** + * @brief Copy constructs a %independent_bits_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + independent_bits_engine(const _RandomNumberEngine& __rng) + : _M_b(__rng) { } + + /** + * @brief Move constructs a %independent_bits_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + independent_bits_engine(_RandomNumberEngine&& __rng) + : _M_b(std::move(__rng)) { } + + /** + * @brief Seed constructs a %independent_bits_engine engine. + * + * Constructs the underlying generator engine seeded with @p __s. + * @param __s A seed value for the base class engine. + */ + explicit + independent_bits_engine(result_type __s) + : _M_b(__s) { } + + /** + * @brief Generator construct a %independent_bits_engine engine. + * + * @param __q A seed sequence. + */ + template::value + && !std::is_same<_Sseq, _RandomNumberEngine>::value> + ::type> + explicit + independent_bits_engine(_Sseq& __q) + : _M_b(__q) + { } + + /** + * @brief Reseeds the %independent_bits_engine object with the default + * seed for the underlying base class generator engine. + */ + void + seed() + { _M_b.seed(); } + + /** + * @brief Reseeds the %independent_bits_engine object with the default + * seed for the underlying base class generator engine. + */ + void + seed(result_type __s) + { _M_b.seed(__s); } + + /** + * @brief Reseeds the %independent_bits_engine object with the given + * seed sequence. + * @param __q A seed generator function. + */ + template + void + seed(_Sseq& __q) + { _M_b.seed(__q); } + + /** + * @brief Gets a const reference to the underlying generator engine + * object. + */ + const _RandomNumberEngine& + base() const noexcept + { return _M_b; } + + /** + * @brief Gets the minimum value in the generated random number range. + */ + static constexpr result_type + min() + { return 0U; } + + /** + * @brief Gets the maximum value in the generated random number range. + */ + static constexpr result_type + max() + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * @brief Gets the next value in the generated random number sequence. + */ + result_type + operator()(); + + /** + * @brief Compares two %independent_bits_engine random number generator + * objects of the same type for equality. + * + * @param __lhs A %independent_bits_engine random number generator + * object. + * @param __rhs Another %independent_bits_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const independent_bits_engine& __lhs, + const independent_bits_engine& __rhs) + { return __lhs._M_b == __rhs._M_b; } + + /** + * @brief Extracts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A %independent_bits_engine random number generator + * engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::independent_bits_engine<_RandomNumberEngine, + __w, _UIntType>& __x) + { + __is >> __x._M_b; + return __is; + } + + private: + _RandomNumberEngine _M_b; + }; + + /** + * @brief Compares two %independent_bits_engine random number generator + * objects of the same type for inequality. + * + * @param __lhs A %independent_bits_engine random number generator + * object. + * @param __rhs Another %independent_bits_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::independent_bits_engine<_RandomNumberEngine, __w, + _UIntType>& __lhs, + const std::independent_bits_engine<_RandomNumberEngine, __w, + _UIntType>& __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Inserts the current state of a %independent_bits_engine random + * number generator engine @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %independent_bits_engine random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::independent_bits_engine<_RandomNumberEngine, + __w, _UIntType>& __x) + { + __os << __x.base(); + return __os; + } + + + /** + * @brief Produces random numbers by combining random numbers from some + * base engine to produce random numbers with a specifies number of bits + * @p __w. + */ + template + class shuffle_order_engine + { + static_assert(1u <= __k, "template argument substituting " + "__k out of bound"); + + public: + /** The type of the generated random value. */ + typedef typename _RandomNumberEngine::result_type result_type; + + static constexpr size_t table_size = __k; + + /** + * @brief Constructs a default %shuffle_order_engine engine. + * + * The underlying engine is default constructed as well. + */ + shuffle_order_engine() + : _M_b() + { _M_initialize(); } + + /** + * @brief Copy constructs a %shuffle_order_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + shuffle_order_engine(const _RandomNumberEngine& __rng) + : _M_b(__rng) + { _M_initialize(); } + + /** + * @brief Move constructs a %shuffle_order_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + shuffle_order_engine(_RandomNumberEngine&& __rng) + : _M_b(std::move(__rng)) + { _M_initialize(); } + + /** + * @brief Seed constructs a %shuffle_order_engine engine. + * + * Constructs the underlying generator engine seeded with @p __s. + * @param __s A seed value for the base class engine. + */ + explicit + shuffle_order_engine(result_type __s) + : _M_b(__s) + { _M_initialize(); } + + /** + * @brief Generator construct a %shuffle_order_engine engine. + * + * @param __q A seed sequence. + */ + template::value + && !std::is_same<_Sseq, _RandomNumberEngine>::value> + ::type> + explicit + shuffle_order_engine(_Sseq& __q) + : _M_b(__q) + { _M_initialize(); } + + /** + * @brief Reseeds the %shuffle_order_engine object with the default seed + for the underlying base class generator engine. + */ + void + seed() + { + _M_b.seed(); + _M_initialize(); + } + + /** + * @brief Reseeds the %shuffle_order_engine object with the default seed + * for the underlying base class generator engine. + */ + void + seed(result_type __s) + { + _M_b.seed(__s); + _M_initialize(); + } + + /** + * @brief Reseeds the %shuffle_order_engine object with the given seed + * sequence. + * @param __q A seed generator function. + */ + template + void + seed(_Sseq& __q) + { + _M_b.seed(__q); + _M_initialize(); + } + + /** + * Gets a const reference to the underlying generator engine object. + */ + const _RandomNumberEngine& + base() const noexcept + { return _M_b; } + + /** + * Gets the minimum value in the generated random number range. + */ + static constexpr result_type + min() + { return _RandomNumberEngine::min(); } + + /** + * Gets the maximum value in the generated random number range. + */ + static constexpr result_type + max() + { return _RandomNumberEngine::max(); } + + /** + * Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * Gets the next value in the generated random number sequence. + */ + result_type + operator()(); + + /** + * Compares two %shuffle_order_engine random number generator objects + * of the same type for equality. + * + * @param __lhs A %shuffle_order_engine random number generator object. + * @param __rhs Another %shuffle_order_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const shuffle_order_engine& __lhs, + const shuffle_order_engine& __rhs) + { return (__lhs._M_b == __rhs._M_b + && std::equal(__lhs._M_v, __lhs._M_v + __k, __rhs._M_v) + && __lhs._M_y == __rhs._M_y); } + + /** + * @brief Inserts the current state of a %shuffle_order_engine random + * number generator engine @p __x into the output stream + @p __os. + * + * @param __os An output stream. + * @param __x A %shuffle_order_engine random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::shuffle_order_engine<_RandomNumberEngine1, + __k1>& __x); + + /** + * @brief Extracts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A %shuffle_order_engine random number generator engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::shuffle_order_engine<_RandomNumberEngine1, __k1>& __x); + + private: + void _M_initialize() + { + for (size_t __i = 0; __i < __k; ++__i) + _M_v[__i] = _M_b(); + _M_y = _M_b(); + } + + _RandomNumberEngine _M_b; + result_type _M_v[__k]; + result_type _M_y; + }; + + /** + * Compares two %shuffle_order_engine random number generator objects + * of the same type for inequality. + * + * @param __lhs A %shuffle_order_engine random number generator object. + * @param __rhs Another %shuffle_order_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::shuffle_order_engine<_RandomNumberEngine, + __k>& __lhs, + const std::shuffle_order_engine<_RandomNumberEngine, + __k>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller. + */ + typedef linear_congruential_engine + minstd_rand0; + + /** + * An alternative LCR (Lehmer Generator function). + */ + typedef linear_congruential_engine + minstd_rand; + + /** + * The classic Mersenne Twister. + * + * Reference: + * M. Matsumoto and T. Nishimura, Mersenne Twister: A 623-Dimensionally + * Equidistributed Uniform Pseudo-Random Number Generator, ACM Transactions + * on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30. + */ + typedef mersenne_twister_engine< + uint_fast32_t, + 32, 624, 397, 31, + 0x9908b0dfUL, 11, + 0xffffffffUL, 7, + 0x9d2c5680UL, 15, + 0xefc60000UL, 18, 1812433253UL> mt19937; + + /** + * An alternative Mersenne Twister. + */ + typedef mersenne_twister_engine< + uint_fast64_t, + 64, 312, 156, 31, + 0xb5026f5aa96619e9ULL, 29, + 0x5555555555555555ULL, 17, + 0x71d67fffeda60000ULL, 37, + 0xfff7eee000000000ULL, 43, + 6364136223846793005ULL> mt19937_64; + + typedef subtract_with_carry_engine + ranlux24_base; + + typedef subtract_with_carry_engine + ranlux48_base; + + typedef discard_block_engine ranlux24; + + typedef discard_block_engine ranlux48; + + typedef shuffle_order_engine knuth_b; + + typedef minstd_rand0 default_random_engine; + + /** + * A standard interface to a platform-specific non-deterministic + * random number generator (if any are available). + */ + class random_device + { + public: + /** The type of the generated random value. */ + typedef unsigned int result_type; + + // constructors, destructors and member functions + +#ifdef _GLIBCXX_USE_RANDOM_TR1 + + explicit + random_device(const std::string& __token = "default") + { + _M_init(__token); + } + + ~random_device() + { _M_fini(); } + +#else + + explicit + random_device(const std::string& __token = "mt19937") + { _M_init_pretr1(__token); } + + public: + +#endif + + static constexpr result_type + min() + { return std::numeric_limits::min(); } + + static constexpr result_type + max() + { return std::numeric_limits::max(); } + + double + entropy() const noexcept + { return 0.0; } + + result_type + operator()() + { +#ifdef _GLIBCXX_USE_RANDOM_TR1 + return this->_M_getval(); +#else + return this->_M_getval_pretr1(); +#endif + } + + // No copy functions. + random_device(const random_device&) = delete; + void operator=(const random_device&) = delete; + + private: + + void _M_init(const std::string& __token); + void _M_init_pretr1(const std::string& __token); + void _M_fini(); + + result_type _M_getval(); + result_type _M_getval_pretr1(); + + union + { + FILE* _M_file; + mt19937 _M_mt; + }; + }; + + /* @} */ // group random_generators + + /** + * @addtogroup random_distributions Random Number Distributions + * @ingroup random + * @{ + */ + + /** + * @addtogroup random_distributions_uniform Uniform Distributions + * @ingroup random_distributions + * @{ + */ + + /** + * @brief Uniform discrete distribution for random numbers. + * A discrete random distribution on the range @f$[min, max]@f$ with equal + * probability throughout the range. + */ + template + class uniform_int_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + /** Parameter 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) + { + _GLIBCXX_DEBUG_ASSERT(_M_a <= _M_b); + } + + result_type + a() const + { return _M_a; } + + result_type + b() const + { return _M_b; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } + + private: + _IntType _M_a; + _IntType _M_b; + }; + + public: + /** + * @brief Constructs a uniform distribution object. + */ + 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) + { } + + /** + * @brief Resets the distribution state. + * + * Does nothing for the uniform integer distribution. + */ + void + reset() { } + + result_type + a() const + { return _M_param.a(); } + + result_type + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the inclusive lower bound of the distribution range. + */ + result_type + min() const + { return this->a(); } + + /** + * @brief Returns the inclusive upper bound of the distribution range. + */ + result_type + max() const + { return this->b(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two uniform integer distributions have + * the same parameters. + */ + 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; + }; + + /** + * @brief Return true if two uniform integer distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::uniform_int_distribution<_IntType>& __d1, + const std::uniform_int_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %uniform_int_distribution random number + * distribution @p __x into the output stream @p os. + * + * @param __os An output stream. + * @param __x A %uniform_int_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const std::uniform_int_distribution<_IntType>&); + + /** + * @brief Extracts a %uniform_int_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %uniform_int_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + std::uniform_int_distribution<_IntType>&); + + + /** + * @brief Uniform continuous distribution for random numbers. + * + * A continuous random distribution on the range [min, max) with equal + * probability throughout the range. The URNG should be real-valued and + * deliver number in the range [0, 1). + */ + template + class uniform_real_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef uniform_real_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __a = _RealType(0), + _RealType __b = _RealType(1)) + : _M_a(__a), _M_b(__b) + { + _GLIBCXX_DEBUG_ASSERT(_M_a <= _M_b); + } + + result_type + a() const + { return _M_a; } + + result_type + b() const + { return _M_b; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } + + private: + _RealType _M_a; + _RealType _M_b; + }; + + public: + /** + * @brief Constructs a uniform_real_distribution object. + * + * @param __a [IN] The lower bound of the distribution. + * @param __b [IN] The upper bound of the distribution. + */ + explicit + uniform_real_distribution(_RealType __a = _RealType(0), + _RealType __b = _RealType(1)) + : _M_param(__a, __b) + { } + + explicit + uniform_real_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + * + * Does nothing for the uniform real distribution. + */ + void + reset() { } + + result_type + a() const + { return _M_param.a(); } + + result_type + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the inclusive lower bound of the distribution range. + */ + result_type + min() const + { return this->a(); } + + /** + * @brief Returns the inclusive upper bound of the distribution range. + */ + result_type + max() const + { return this->b(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + return (__aurng() * (__p.b() - __p.a())) + __p.a(); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two uniform real distributions have + * the same parameters. + */ + friend bool + operator==(const uniform_real_distribution& __d1, + const uniform_real_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two uniform real distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::uniform_real_distribution<_IntType>& __d1, + const std::uniform_real_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %uniform_real_distribution random number + * distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %uniform_real_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const std::uniform_real_distribution<_RealType>&); + + /** + * @brief Extracts a %uniform_real_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %uniform_real_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + std::uniform_real_distribution<_RealType>&); + + /* @} */ // group random_distributions_uniform + + /** + * @addtogroup random_distributions_normal Normal Distributions + * @ingroup random_distributions + * @{ + */ + + /** + * @brief A normal continuous distribution for random numbers. + * + * The formula for the normal probability density function is + * @f[ + * p(x|\mu,\sigma) = \frac{1}{\sigma \sqrt{2 \pi}} + * e^{- \frac{{x - \mu}^ {2}}{2 \sigma ^ {2}} } + * @f] + */ + template + class normal_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef normal_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __mean = _RealType(0), + _RealType __stddev = _RealType(1)) + : _M_mean(__mean), _M_stddev(__stddev) + { + _GLIBCXX_DEBUG_ASSERT(_M_stddev > _RealType(0)); + } + + _RealType + mean() const + { return _M_mean; } + + _RealType + stddev() const + { return _M_stddev; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return (__p1._M_mean == __p2._M_mean + && __p1._M_stddev == __p2._M_stddev); } + + private: + _RealType _M_mean; + _RealType _M_stddev; + }; + + public: + /** + * Constructs a normal distribution with parameters @f$mean@f$ and + * standard deviation. + */ + explicit + normal_distribution(result_type __mean = result_type(0), + result_type __stddev = result_type(1)) + : _M_param(__mean, __stddev), _M_saved_available(false) + { } + + explicit + normal_distribution(const param_type& __p) + : _M_param(__p), _M_saved_available(false) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_saved_available = false; } + + /** + * @brief Returns the mean of the distribution. + */ + _RealType + mean() const + { return _M_param.mean(); } + + /** + * @brief Returns the standard deviation of the distribution. + */ + _RealType + stddev() const + { return _M_param.stddev(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::lowest(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two normal distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + template + friend bool + operator==(const std::normal_distribution<_RealType1>& __d1, + const std::normal_distribution<_RealType1>& __d2); + + /** + * @brief Inserts a %normal_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %normal_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::normal_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %normal_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %normal_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::normal_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + result_type _M_saved; + bool _M_saved_available; + }; + + /** + * @brief Return true if two normal distributions are different. + */ + template + inline bool + operator!=(const std::normal_distribution<_RealType>& __d1, + const std::normal_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A lognormal_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f[ + * p(x|m,s) = \frac{1}{sx\sqrt{2\pi}} + * \exp{-\frac{(\ln{x} - m)^2}{2s^2}} + * @f] + */ + template + class lognormal_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef 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() + { } + + /** + * Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * + */ + _RealType + m() const + { return _M_param.m(); } + + _RealType + s() const + { return _M_param.s(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { return std::exp(__p.s() * _M_nd(__urng) + __p.m()); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two lognormal distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const lognormal_distribution& __d1, + const lognormal_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_nd == __d2._M_nd); } + + /** + * @brief Inserts a %lognormal_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %lognormal_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::lognormal_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %lognormal_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %lognormal_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::lognormal_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution _M_nd; + }; + + /** + * @brief Return true if two lognormal distributions are different. + */ + template + inline bool + operator!=(const std::lognormal_distribution<_RealType>& __d1, + const std::lognormal_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A gamma continuous distribution for random numbers. + * + * The formula for the gamma probability density function is: + * @f[ + * p(x|\alpha,\beta) = \frac{1}{\beta\Gamma(\alpha)} + * (x/\beta)^{\alpha - 1} e^{-x/\beta} + * @f] + */ + template + class gamma_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef gamma_distribution<_RealType> distribution_type; + friend class gamma_distribution<_RealType>; + + explicit + param_type(_RealType __alpha_val = _RealType(1), + _RealType __beta_val = _RealType(1)) + : _M_alpha(__alpha_val), _M_beta(__beta_val) + { + _GLIBCXX_DEBUG_ASSERT(_M_alpha > _RealType(0)); + _M_initialize(); + } + + _RealType + alpha() const + { return _M_alpha; } + + _RealType + beta() const + { return _M_beta; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return (__p1._M_alpha == __p2._M_alpha + && __p1._M_beta == __p2._M_beta); } + + private: + void + _M_initialize(); + + _RealType _M_alpha; + _RealType _M_beta; + + _RealType _M_malpha, _M_a2; + }; + + public: + /** + * @brief Constructs a gamma distribution with parameters + * @f$\alpha@f$ and @f$\beta@f$. + */ + explicit + gamma_distribution(_RealType __alpha_val = _RealType(1), + _RealType __beta_val = _RealType(1)) + : _M_param(__alpha_val, __beta_val), _M_nd() + { } + + explicit + gamma_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * @brief Returns the @f$\alpha@f$ of the distribution. + */ + _RealType + alpha() const + { return _M_param.alpha(); } + + /** + * @brief Returns the @f$\beta@f$ of the distribution. + */ + _RealType + beta() const + { return _M_param.beta(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two gamma distributions have the same + * parameters and the sequences that would be generated + * are equal. + */ + friend bool + operator==(const gamma_distribution& __d1, + const gamma_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_nd == __d2._M_nd); } + + /** + * @brief Inserts a %gamma_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %gamma_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::gamma_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %gamma_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %gamma_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::gamma_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution _M_nd; + }; + + /** + * @brief Return true if two gamma distributions are different. + */ + template + inline bool + operator!=(const std::gamma_distribution<_RealType>& __d1, + const std::gamma_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A chi_squared_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f$p(x|n) = \frac{x^{(n/2) - 1}e^{-x/2}}{\Gamma(n/2) 2^{n/2}}@f$ + */ + template + class chi_squared_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef 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) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_gd.reset(); } + + /** + * + */ + _RealType + n() const + { return _M_param.n(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return 2 * _M_gd(__urng); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution::param_type + param_type; + return 2 * _M_gd(__urng, param_type(__p.n() / 2)); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { typename std::gamma_distribution::param_type + __p2(__p.n() / 2); + this->__generate_impl(__f, __t, __urng, __p2); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { typename std::gamma_distribution::param_type + __p2(__p.n() / 2); + this->__generate_impl(__f, __t, __urng, __p2); } + + /** + * @brief Return true if two Chi-squared distributions have + * the same parameters and the sequences that would be + * generated are equal. + */ + friend bool + operator==(const chi_squared_distribution& __d1, + const chi_squared_distribution& __d2) + { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } + + /** + * @brief Inserts a %chi_squared_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %chi_squared_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::chi_squared_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %chi_squared_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %chi_squared_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::chi_squared_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const typename + std::gamma_distribution::param_type& __p); + + param_type _M_param; + + std::gamma_distribution _M_gd; + }; + + /** + * @brief Return true if two Chi-squared distributions are different. + */ + template + inline bool + operator!=(const std::chi_squared_distribution<_RealType>& __d1, + const std::chi_squared_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A cauchy_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f$p(x|a,b) = (\pi b (1 + (\frac{x-a}{b})^2))^{-1}@f$ + */ + template + class cauchy_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef 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) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * + */ + _RealType + a() const + { return _M_param.a(); } + + _RealType + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::lowest(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Cauchy distributions have + * the same parameters. + */ + friend bool + operator==(const cauchy_distribution& __d1, + const cauchy_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two Cauchy distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::cauchy_distribution<_RealType>& __d1, + const std::cauchy_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %cauchy_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %cauchy_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::cauchy_distribution<_RealType>& __x); + + /** + * @brief Extracts a %cauchy_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %cauchy_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::cauchy_distribution<_RealType>& __x); + + + /** + * @brief A fisher_f_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f[ + * p(x|m,n) = \frac{\Gamma((m+n)/2)}{\Gamma(m/2)\Gamma(n/2)} + * (\frac{m}{n})^{m/2} x^{(m/2)-1} + * (1 + \frac{mx}{n})^{-(m+n)/2} + * @f] + */ + template + class fisher_f_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef 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) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { + _M_gd_x.reset(); + _M_gd_y.reset(); + } + + /** + * + */ + _RealType + m() const + { return _M_param.m(); } + + _RealType + n() const + { return _M_param.n(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution::param_type + param_type; + return ((_M_gd_x(__urng, param_type(__p.m() / 2)) * n()) + / (_M_gd_y(__urng, param_type(__p.n() / 2)) * m())); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Fisher f distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const fisher_f_distribution& __d1, + const fisher_f_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_gd_x == __d2._M_gd_x + && __d1._M_gd_y == __d2._M_gd_y); } + + /** + * @brief Inserts a %fisher_f_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %fisher_f_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::fisher_f_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %fisher_f_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %fisher_f_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::fisher_f_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::gamma_distribution _M_gd_x, _M_gd_y; + }; + + /** + * @brief Return true if two Fisher f distributions are diferent. + */ + template + inline bool + operator!=(const std::fisher_f_distribution<_RealType>& __d1, + const std::fisher_f_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief A student_t_distribution random number distribution. + * + * The formula for the normal probability mass function is: + * @f[ + * p(x|n) = \frac{1}{\sqrt(n\pi)} \frac{\Gamma((n+1)/2)}{\Gamma(n/2)} + * (1 + \frac{x^2}{n}) ^{-(n+1)/2} + * @f] + */ + template + class student_t_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef 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) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { + _M_nd.reset(); + _M_gd.reset(); + } + + /** + * + */ + _RealType + n() const + { return _M_param.n(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::lowest(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution::param_type + param_type; + + const result_type __g = _M_gd(__urng, param_type(__p.n() / 2, 2)); + return _M_nd(__urng) * std::sqrt(__p.n() / __g); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Student t distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const student_t_distribution& __d1, + const student_t_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_nd == __d2._M_nd && __d1._M_gd == __d2._M_gd); } + + /** + * @brief Inserts a %student_t_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %student_t_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::student_t_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %student_t_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %student_t_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::student_t_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution _M_nd; + std::gamma_distribution _M_gd; + }; + + /** + * @brief Return true if two Student t distributions are different. + */ + template + inline bool + operator!=(const std::student_t_distribution<_RealType>& __d1, + const std::student_t_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /* @} */ // group random_distributions_normal + + /** + * @addtogroup random_distributions_bernoulli Bernoulli Distributions + * @ingroup random_distributions + * @{ + */ + + /** + * @brief A Bernoulli random number distribution. + * + * Generates a sequence of true and false values with likelihood @f$p@f$ + * that true will come up and @f$(1 - p)@f$ that false will appear. + */ + class bernoulli_distribution + { + public: + /** The type of the range of the distribution. */ + typedef bool result_type; + /** Parameter type. */ + struct param_type + { + typedef bernoulli_distribution distribution_type; + + explicit + param_type(double __p = 0.5) + : _M_p(__p) + { + _GLIBCXX_DEBUG_ASSERT((_M_p >= 0.0) && (_M_p <= 1.0)); + } + + double + p() const + { return _M_p; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_p == __p2._M_p; } + + private: + double _M_p; + }; + + public: + /** + * @brief Constructs a Bernoulli distribution with likelihood @p p. + * + * @param __p [IN] The likelihood of a true result being returned. + * Must be in the interval @f$[0, 1]@f$. + */ + explicit + bernoulli_distribution(double __p = 0.5) + : _M_param(__p) + { } + + explicit + bernoulli_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + * + * Does nothing for a Bernoulli distribution. + */ + void + reset() { } + + /** + * @brief Returns the @p p parameter of the distribution. + */ + double + p() const + { return _M_param.p(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::min(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + if ((__aurng() - __aurng.min()) + < __p.p() * (__aurng.max() - __aurng.min())) + return true; + return false; + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Bernoulli distributions have + * the same parameters. + */ + friend bool + operator==(const bernoulli_distribution& __d1, + const bernoulli_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two Bernoulli distributions have + * different parameters. + */ + inline bool + operator!=(const std::bernoulli_distribution& __d1, + const std::bernoulli_distribution& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %bernoulli_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %bernoulli_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::bernoulli_distribution& __x); + + /** + * @brief Extracts a %bernoulli_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %bernoulli_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::bernoulli_distribution& __x) + { + double __p; + __is >> __p; + __x.param(bernoulli_distribution::param_type(__p)); + return __is; + } + + + /** + * @brief A discrete binomial random number distribution. + * + * The formula for the binomial probability density function is + * @f$p(i|t,p) = \binom{t}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$ + * and @f$p@f$ are the parameters of the distribution. + */ + template + class binomial_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + /** Parameter type. */ + struct param_type + { + typedef binomial_distribution<_IntType> distribution_type; + friend class binomial_distribution<_IntType>; + + explicit + param_type(_IntType __t = _IntType(1), double __p = 0.5) + : _M_t(__t), _M_p(__p) + { + _GLIBCXX_DEBUG_ASSERT((_M_t >= _IntType(0)) + && (_M_p >= 0.0) + && (_M_p <= 1.0)); + _M_initialize(); + } + + _IntType + t() const + { return _M_t; } + + double + p() const + { return _M_p; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; } + + private: + void + _M_initialize(); + + _IntType _M_t; + double _M_p; + + double _M_q; +#if _GLIBCXX_USE_C99_MATH_TR1 + double _M_d1, _M_d2, _M_s1, _M_s2, _M_c, + _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p; +#endif + bool _M_easy; + }; + + // constructors and member function + explicit + binomial_distribution(_IntType __t = _IntType(1), + double __p = 0.5) + : _M_param(__t, __p), _M_nd() + { } + + explicit + binomial_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * @brief Returns the distribution @p t parameter. + */ + _IntType + t() const + { return _M_param.t(); } + + /** + * @brief Returns the distribution @p p parameter. + */ + double + p() const + { return _M_param.p(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return 0; } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return _M_param.t(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two binomial distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const binomial_distribution& __d1, + const binomial_distribution& __d2) +#ifdef _GLIBCXX_USE_C99_MATH_TR1 + { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +#else + { return __d1._M_param == __d2._M_param; } +#endif + + /** + * @brief Inserts a %binomial_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %binomial_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::binomial_distribution<_IntType1>& __x); + + /** + * @brief Extracts a %binomial_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %binomial_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::binomial_distribution<_IntType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + result_type + _M_waiting(_UniformRandomNumberGenerator& __urng, + _IntType __t, double __q); + + param_type _M_param; + + // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. + std::normal_distribution _M_nd; + }; + + /** + * @brief Return true if two binomial distributions are different. + */ + template + inline bool + operator!=(const std::binomial_distribution<_IntType>& __d1, + const std::binomial_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A discrete geometric random number distribution. + * + * The formula for the geometric probability density function is + * @f$p(i|p) = p(1 - p)^{i}@f$ where @f$p@f$ is the parameter of the + * distribution. + */ + template + class geometric_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + /** Parameter type. */ + struct param_type + { + typedef geometric_distribution<_IntType> distribution_type; + friend class geometric_distribution<_IntType>; + + explicit + param_type(double __p = 0.5) + : _M_p(__p) + { + _GLIBCXX_DEBUG_ASSERT((_M_p > 0.0) && (_M_p < 1.0)); + _M_initialize(); + } + + double + p() const + { return _M_p; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_p == __p2._M_p; } + + private: + void + _M_initialize() + { _M_log_1_p = std::log(1.0 - _M_p); } + + double _M_p; + + double _M_log_1_p; + }; + + // constructors and member function + explicit + geometric_distribution(double __p = 0.5) + : _M_param(__p) + { } + + explicit + geometric_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + * + * Does nothing for the geometric distribution. + */ + void + reset() { } + + /** + * @brief Returns the distribution parameter @p p. + */ + double + p() const + { return _M_param.p(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return 0; } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two geometric distributions have + * the same parameters. + */ + friend bool + operator==(const geometric_distribution& __d1, + const geometric_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two geometric distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::geometric_distribution<_IntType>& __d1, + const std::geometric_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %geometric_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %geometric_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::geometric_distribution<_IntType>& __x); + + /** + * @brief Extracts a %geometric_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %geometric_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::geometric_distribution<_IntType>& __x); + + + /** + * @brief A negative_binomial_distribution random number distribution. + * + * The formula for the negative binomial probability mass function is + * @f$p(i) = \binom{n}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$ + * and @f$p@f$ are the parameters of the distribution. + */ + template + class negative_binomial_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + /** Parameter type. */ + struct param_type + { + typedef negative_binomial_distribution<_IntType> distribution_type; + + explicit + param_type(_IntType __k = 1, double __p = 0.5) + : _M_k(__k), _M_p(__p) + { + _GLIBCXX_DEBUG_ASSERT((_M_k > 0) && (_M_p > 0.0) && (_M_p <= 1.0)); + } + + _IntType + k() const + { return _M_k; } + + double + p() const + { return _M_p; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; } + + private: + _IntType _M_k; + double _M_p; + }; + + explicit + negative_binomial_distribution(_IntType __k = 1, double __p = 0.5) + : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p) + { } + + explicit + negative_binomial_distribution(const param_type& __p) + : _M_param(__p), _M_gd(__p.k(), (1.0 - __p.p()) / __p.p()) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_gd.reset(); } + + /** + * @brief Return the @f$k@f$ parameter of the distribution. + */ + _IntType + k() const + { return _M_param.k(); } + + /** + * @brief Return the @f$p@f$ parameter of the distribution. + */ + double + p() const + { return _M_param.p(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng); + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two negative binomial distributions have + * the same parameters and the sequences that would be + * generated are equal. + */ + friend bool + operator==(const negative_binomial_distribution& __d1, + const negative_binomial_distribution& __d2) + { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } + + /** + * @brief Inserts a %negative_binomial_distribution random + * number distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %negative_binomial_distribution random number + * distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::negative_binomial_distribution<_IntType1>& __x); + + /** + * @brief Extracts a %negative_binomial_distribution random number + * distribution @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %negative_binomial_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::negative_binomial_distribution<_IntType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::gamma_distribution _M_gd; + }; + + /** + * @brief Return true if two negative binomial distributions are different. + */ + template + inline bool + operator!=(const std::negative_binomial_distribution<_IntType>& __d1, + const std::negative_binomial_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + + /* @} */ // group random_distributions_bernoulli + + /** + * @addtogroup random_distributions_poisson Poisson Distributions + * @ingroup random_distributions + * @{ + */ + + /** + * @brief A discrete Poisson random number distribution. + * + * The formula for the Poisson probability density function is + * @f$p(i|\mu) = \frac{\mu^i}{i!} e^{-\mu}@f$ where @f$\mu@f$ is the + * parameter of the distribution. + */ + template + class poisson_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + /** Parameter type. */ + struct param_type + { + typedef poisson_distribution<_IntType> distribution_type; + friend class poisson_distribution<_IntType>; + + explicit + param_type(double __mean = 1.0) + : _M_mean(__mean) + { + _GLIBCXX_DEBUG_ASSERT(_M_mean > 0.0); + _M_initialize(); + } + + double + mean() const + { return _M_mean; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_mean == __p2._M_mean; } + + private: + // Hosts either log(mean) or the threshold of the simple method. + void + _M_initialize(); + + double _M_mean; + + double _M_lm_thr; +#if _GLIBCXX_USE_C99_MATH_TR1 + double _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb; +#endif + }; + + // constructors and member function + explicit + poisson_distribution(double __mean = 1.0) + : _M_param(__mean), _M_nd() + { } + + explicit + poisson_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * @brief Returns the distribution parameter @p mean. + */ + double + mean() const + { return _M_param.mean(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return 0; } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Poisson distributions have the same + * parameters and the sequences that would be generated + * are equal. + */ + friend bool + operator==(const poisson_distribution& __d1, + const poisson_distribution& __d2) +#ifdef _GLIBCXX_USE_C99_MATH_TR1 + { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +#else + { return __d1._M_param == __d2._M_param; } +#endif + + /** + * @brief Inserts a %poisson_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %poisson_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::poisson_distribution<_IntType1>& __x); + + /** + * @brief Extracts a %poisson_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %poisson_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::poisson_distribution<_IntType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. + std::normal_distribution _M_nd; + }; + + /** + * @brief Return true if two Poisson distributions are different. + */ + template + inline bool + operator!=(const std::poisson_distribution<_IntType>& __d1, + const std::poisson_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief An exponential continuous distribution for random numbers. + * + * The formula for the exponential probability density function is + * @f$p(x|\lambda) = \lambda e^{-\lambda x}@f$. + * + * + * + * + * + * + * + * + *
    Distribution Statistics
    Mean@f$\frac{1}{\lambda}@f$
    Median@f$\frac{\ln 2}{\lambda}@f$
    Mode@f$zero@f$
    Range@f$[0, \infty]@f$
    Standard Deviation@f$\frac{1}{\lambda}@f$
    + */ + template + class exponential_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef exponential_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __lambda = _RealType(1)) + : _M_lambda(__lambda) + { + _GLIBCXX_DEBUG_ASSERT(_M_lambda > _RealType(0)); + } + + _RealType + lambda() const + { return _M_lambda; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_lambda == __p2._M_lambda; } + + private: + _RealType _M_lambda; + }; + + public: + /** + * @brief Constructs an exponential distribution with inverse scale + * parameter @f$\lambda@f$. + */ + explicit + exponential_distribution(const result_type& __lambda = result_type(1)) + : _M_param(__lambda) + { } + + explicit + exponential_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + * + * Has no effect on exponential distributions. + */ + void + reset() { } + + /** + * @brief Returns the inverse scale parameter of the distribution. + */ + _RealType + lambda() const + { return _M_param.lambda(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + return -std::log(result_type(1) - __aurng()) / __p.lambda(); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two exponential distributions have the same + * parameters. + */ + friend bool + operator==(const exponential_distribution& __d1, + const exponential_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two exponential distributions have different + * parameters. + */ + template + inline bool + operator!=(const std::exponential_distribution<_RealType>& __d1, + const std::exponential_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %exponential_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %exponential_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::exponential_distribution<_RealType>& __x); + + /** + * @brief Extracts a %exponential_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %exponential_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::exponential_distribution<_RealType>& __x); + + + /** + * @brief A weibull_distribution random number distribution. + * + * The formula for the normal probability density function is: + * @f[ + * p(x|\alpha,\beta) = \frac{\alpha}{\beta} (\frac{x}{\beta})^{\alpha-1} + * \exp{(-(\frac{x}{\beta})^\alpha)} + * @f] + */ + template + class weibull_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef 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) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Return the @f$a@f$ parameter of the distribution. + */ + _RealType + a() const + { return _M_param.a(); } + + /** + * @brief Return the @f$b@f$ parameter of the distribution. + */ + _RealType + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Weibull distributions have the same + * parameters. + */ + friend bool + operator==(const weibull_distribution& __d1, + const weibull_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two Weibull distributions have different + * parameters. + */ + template + inline bool + operator!=(const std::weibull_distribution<_RealType>& __d1, + const std::weibull_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %weibull_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %weibull_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::weibull_distribution<_RealType>& __x); + + /** + * @brief Extracts a %weibull_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %weibull_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::weibull_distribution<_RealType>& __x); + + + /** + * @brief A extreme_value_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f[ + * p(x|a,b) = \frac{1}{b} + * \exp( \frac{a-x}{b} - \exp(\frac{a-x}{b})) + * @f] + */ + template + class extreme_value_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef 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) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Return the @f$a@f$ parameter of the distribution. + */ + _RealType + a() const + { return _M_param.a(); } + + /** + * @brief Return the @f$b@f$ parameter of the distribution. + */ + _RealType + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::lowest(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two extreme value distributions have the same + * parameters. + */ + friend bool + operator==(const extreme_value_distribution& __d1, + const extreme_value_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two extreme value distributions have different + * parameters. + */ + template + inline bool + operator!=(const std::extreme_value_distribution<_RealType>& __d1, + const std::extreme_value_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %extreme_value_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %extreme_value_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::extreme_value_distribution<_RealType>& __x); + + /** + * @brief Extracts a %extreme_value_distribution random number + * distribution @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %extreme_value_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::extreme_value_distribution<_RealType>& __x); + + + /** + * @brief A discrete_distribution random number distribution. + * + * The formula for the discrete probability mass function is + * + */ + template + class discrete_distribution + { + static_assert(std::is_integral<_IntType>::value, + "template argument not an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + /** Parameter type. */ + struct param_type + { + typedef discrete_distribution<_IntType> distribution_type; + friend class discrete_distribution<_IntType>; + + param_type() + : _M_prob(), _M_cp() + { } + + template + param_type(_InputIterator __wbegin, + _InputIterator __wend) + : _M_prob(__wbegin, __wend), _M_cp() + { _M_initialize(); } + + param_type(initializer_list __wil) + : _M_prob(__wil.begin(), __wil.end()), _M_cp() + { _M_initialize(); } + + template + param_type(size_t __nw, double __xmin, double __xmax, + _Func __fw); + + // See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/ + param_type(const param_type&) = default; + param_type& operator=(const param_type&) = default; + + std::vector + probabilities() const + { return _M_prob.empty() ? std::vector(1, 1.0) : _M_prob; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_prob == __p2._M_prob; } + + private: + void + _M_initialize(); + + std::vector _M_prob; + std::vector _M_cp; + }; + + discrete_distribution() + : _M_param() + { } + + template + discrete_distribution(_InputIterator __wbegin, + _InputIterator __wend) + : _M_param(__wbegin, __wend) + { } + + discrete_distribution(initializer_list __wl) + : _M_param(__wl) + { } + + template + discrete_distribution(size_t __nw, double __xmin, double __xmax, + _Func __fw) + : _M_param(__nw, __xmin, __xmax, __fw) + { } + + explicit + discrete_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Returns the probabilities of the distribution. + */ + std::vector + probabilities() const + { + return _M_param._M_prob.empty() + ? std::vector(1, 1.0) : _M_param._M_prob; + } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { + return _M_param._M_prob.empty() + ? result_type(0) : result_type(_M_param._M_prob.size() - 1); + } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two discrete distributions have the same + * parameters. + */ + friend bool + operator==(const discrete_distribution& __d1, + const discrete_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %discrete_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %discrete_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::discrete_distribution<_IntType1>& __x); + + /** + * @brief Extracts a %discrete_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %discrete_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::discrete_distribution<_IntType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two discrete distributions have different + * parameters. + */ + template + inline bool + operator!=(const std::discrete_distribution<_IntType>& __d1, + const std::discrete_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A piecewise_constant_distribution random number distribution. + * + * The formula for the piecewise constant probability mass function is + * + */ + template + class piecewise_constant_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef piecewise_constant_distribution<_RealType> distribution_type; + friend class piecewise_constant_distribution<_RealType>; + + param_type() + : _M_int(), _M_den(), _M_cp() + { } + + template + param_type(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin); + + template + param_type(initializer_list<_RealType> __bi, _Func __fw); + + template + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, + _Func __fw); + + // See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/ + param_type(const param_type&) = default; + param_type& operator=(const param_type&) = default; + + std::vector<_RealType> + intervals() const + { + if (_M_int.empty()) + { + std::vector<_RealType> __tmp(2); + __tmp[1] = _RealType(1); + return __tmp; + } + else + return _M_int; + } + + std::vector + densities() const + { return _M_den.empty() ? std::vector(1, 1.0) : _M_den; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } + + private: + void + _M_initialize(); + + std::vector<_RealType> _M_int; + std::vector _M_den; + std::vector _M_cp; + }; + + explicit + piecewise_constant_distribution() + : _M_param() + { } + + template + piecewise_constant_distribution(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_param(__bfirst, __bend, __wbegin) + { } + + template + piecewise_constant_distribution(initializer_list<_RealType> __bl, + _Func __fw) + : _M_param(__bl, __fw) + { } + + template + piecewise_constant_distribution(size_t __nw, + _RealType __xmin, _RealType __xmax, + _Func __fw) + : _M_param(__nw, __xmin, __xmax, __fw) + { } + + explicit + piecewise_constant_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Returns a vector of the intervals. + */ + std::vector<_RealType> + intervals() const + { + if (_M_param._M_int.empty()) + { + std::vector<_RealType> __tmp(2); + __tmp[1] = _RealType(1); + return __tmp; + } + else + return _M_param._M_int; + } + + /** + * @brief Returns a vector of the probability densities. + */ + std::vector + densities() const + { + return _M_param._M_den.empty() + ? std::vector(1, 1.0) : _M_param._M_den; + } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { + return _M_param._M_int.empty() + ? result_type(0) : _M_param._M_int.front(); + } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { + return _M_param._M_int.empty() + ? result_type(1) : _M_param._M_int.back(); + } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two piecewise constant distributions have the + * same parameters. + */ + friend bool + operator==(const piecewise_constant_distribution& __d1, + const piecewise_constant_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %piecewise_constan_distribution random + * number distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %piecewise_constan_distribution random number + * distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::piecewise_constant_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %piecewise_constan_distribution random + * number distribution @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %piecewise_constan_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::piecewise_constant_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two piecewise constant distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::piecewise_constant_distribution<_RealType>& __d1, + const std::piecewise_constant_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A piecewise_linear_distribution random number distribution. + * + * The formula for the piecewise linear probability mass function is + * + */ + template + class piecewise_linear_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + typedef piecewise_linear_distribution<_RealType> distribution_type; + friend class piecewise_linear_distribution<_RealType>; + + param_type() + : _M_int(), _M_den(), _M_cp(), _M_m() + { } + + template + param_type(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin); + + template + param_type(initializer_list<_RealType> __bl, _Func __fw); + + template + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, + _Func __fw); + + // See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/ + param_type(const param_type&) = default; + param_type& operator=(const param_type&) = default; + + std::vector<_RealType> + intervals() const + { + if (_M_int.empty()) + { + std::vector<_RealType> __tmp(2); + __tmp[1] = _RealType(1); + return __tmp; + } + else + return _M_int; + } + + std::vector + densities() const + { return _M_den.empty() ? std::vector(2, 1.0) : _M_den; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return (__p1._M_int == __p2._M_int + && __p1._M_den == __p2._M_den); } + + private: + void + _M_initialize(); + + std::vector<_RealType> _M_int; + std::vector _M_den; + std::vector _M_cp; + std::vector _M_m; + }; + + explicit + piecewise_linear_distribution() + : _M_param() + { } + + template + piecewise_linear_distribution(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_param(__bfirst, __bend, __wbegin) + { } + + template + piecewise_linear_distribution(initializer_list<_RealType> __bl, + _Func __fw) + : _M_param(__bl, __fw) + { } + + template + piecewise_linear_distribution(size_t __nw, + _RealType __xmin, _RealType __xmax, + _Func __fw) + : _M_param(__nw, __xmin, __xmax, __fw) + { } + + explicit + piecewise_linear_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Return the intervals of the distribution. + */ + std::vector<_RealType> + intervals() const + { + if (_M_param._M_int.empty()) + { + std::vector<_RealType> __tmp(2); + __tmp[1] = _RealType(1); + return __tmp; + } + else + return _M_param._M_int; + } + + /** + * @brief Return a vector of the probability densities of the + * distribution. + */ + std::vector + densities() const + { + return _M_param._M_den.empty() + ? std::vector(2, 1.0) : _M_param._M_den; + } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { + return _M_param._M_int.empty() + ? result_type(0) : _M_param._M_int.front(); + } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { + return _M_param._M_int.empty() + ? result_type(1) : _M_param._M_int.back(); + } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two piecewise linear distributions have the + * same parameters. + */ + friend bool + operator==(const piecewise_linear_distribution& __d1, + const piecewise_linear_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %piecewise_linear_distribution random number + * distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %piecewise_linear_distribution random number + * distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::piecewise_linear_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %piecewise_linear_distribution random number + * distribution @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %piecewise_linear_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::piecewise_linear_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two piecewise linear distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::piecewise_linear_distribution<_RealType>& __d1, + const std::piecewise_linear_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /* @} */ // group random_distributions_poisson + + /* @} */ // group random_distributions + + /** + * @addtogroup random_utilities Random Number Utilities + * @ingroup random + * @{ + */ + + /** + * @brief The seed_seq class generates sequences of seeds for random + * number generators. + */ + class seed_seq + { + + public: + /** The type of the seed vales. */ + typedef uint_least32_t result_type; + + /** Default constructor. */ + seed_seq() + : _M_v() + { } + + template + seed_seq(std::initializer_list<_IntType> il); + + template + seed_seq(_InputIterator __begin, _InputIterator __end); + + // generating functions + template + void + generate(_RandomAccessIterator __begin, _RandomAccessIterator __end); + + // property functions + size_t size() const + { return _M_v.size(); } + + template + void + param(OutputIterator __dest) const + { std::copy(_M_v.begin(), _M_v.end(), __dest); } + + private: + /// + std::vector _M_v; + }; + + /* @} */ // group random_utilities + + /* @} */ // group random + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/random.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/random.tcc new file mode 100644 index 0000000..10c6550 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/random.tcc @@ -0,0 +1,3486 @@ +// random number generation (out of line) -*- C++ -*- + +// Copyright (C) 2009-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/random.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _RANDOM_TCC +#define _RANDOM_TCC 1 + +#include // std::accumulate and std::partial_sum + +namespace std _GLIBCXX_VISIBILITY(default) +{ + /* + * (Further) implementation-space details. + */ + namespace __detail + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION + + // General case for x = (ax + c) mod m -- use Schrage's algorithm + // to avoid integer overflow. + // + // Preconditions: a > 0, m > 0. + // + // Note: only works correctly for __m % __a < __m / __a. + template + _Tp + _Mod<_Tp, __m, __a, __c, false, true>:: + __calc(_Tp __x) + { + if (__a == 1) + __x %= __m; + else + { + static const _Tp __q = __m / __a; + static const _Tp __r = __m % __a; + + _Tp __t1 = __a * (__x % __q); + _Tp __t2 = __r * (__x / __q); + if (__t1 >= __t2) + __x = __t1 - __t2; + else + __x = __m - __t2 + __t1; + } + + if (__c != 0) + { + const _Tp __d = __m - __x; + if (__d > __c) + __x += __c; + else + __x = __c - __d; + } + return __x; + } + + template + _OutputIterator + __normalize(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, const _Tp& __factor) + { + for (; __first != __last; ++__first, ++__result) + *__result = *__first / __factor; + return __result; + } + + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace __detail + +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::multiplier; + + template + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::increment; + + template + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::modulus; + + template + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::default_seed; + + /** + * Seeds the LCR with integral value @p __s, adjusted so that the + * ring identity is never a member of the convergence set. + */ + template + void + linear_congruential_engine<_UIntType, __a, __c, __m>:: + seed(result_type __s) + { + if ((__detail::__mod<_UIntType, __m>(__c) == 0) + && (__detail::__mod<_UIntType, __m>(__s) == 0)) + _M_x = 1; + else + _M_x = __detail::__mod<_UIntType, __m>(__s); + } + + /** + * Seeds the LCR engine with a value generated by @p __q. + */ + template + template + typename std::enable_if::value>::type + linear_congruential_engine<_UIntType, __a, __c, __m>:: + seed(_Sseq& __q) + { + const _UIntType __k0 = __m == 0 ? std::numeric_limits<_UIntType>::digits + : std::__lg(__m); + const _UIntType __k = (__k0 + 31) / 32; + uint_least32_t __arr[__k + 3]; + __q.generate(__arr + 0, __arr + __k + 3); + _UIntType __factor = 1u; + _UIntType __sum = 0u; + for (size_t __j = 0; __j < __k; ++__j) + { + __sum += __arr[__j + 3] * __factor; + __factor *= __detail::_Shift<_UIntType, 32>::__value; + } + seed(__sum); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const linear_congruential_engine<_UIntType, + __a, __c, __m>& __lcr) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__os.widen(' ')); + + __os << __lcr._M_x; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + linear_congruential_engine<_UIntType, __a, __c, __m>& __lcr) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec); + + __is >> __lcr._M_x; + + __is.flags(__flags); + return __is; + } + + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::word_size; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::state_size; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::shift_size; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::mask_bits; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::xor_mask; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_u; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_d; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_s; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_b; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_t; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_c; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_l; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + initialization_multiplier; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::default_seed; + + template + void + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + seed(result_type __sd) + { + _M_x[0] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__sd); + + for (size_t __i = 1; __i < state_size; ++__i) + { + _UIntType __x = _M_x[__i - 1]; + __x ^= __x >> (__w - 2); + __x *= __f; + __x += __detail::__mod<_UIntType, __n>(__i); + _M_x[__i] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__x); + } + _M_p = state_size; + } + + template + template + typename std::enable_if::value>::type + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + seed(_Sseq& __q) + { + const _UIntType __upper_mask = (~_UIntType()) << __r; + const size_t __k = (__w + 31) / 32; + uint_least32_t __arr[__n * __k]; + __q.generate(__arr + 0, __arr + __n * __k); + + bool __zero = true; + for (size_t __i = 0; __i < state_size; ++__i) + { + _UIntType __factor = 1u; + _UIntType __sum = 0u; + for (size_t __j = 0; __j < __k; ++__j) + { + __sum += __arr[__k * __i + __j] * __factor; + __factor *= __detail::_Shift<_UIntType, 32>::__value; + } + _M_x[__i] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__sum); + + if (__zero) + { + if (__i == 0) + { + if ((_M_x[0] & __upper_mask) != 0u) + __zero = false; + } + else if (_M_x[__i] != 0u) + __zero = false; + } + } + if (__zero) + _M_x[0] = __detail::_Shift<_UIntType, __w - 1>::__value; + _M_p = state_size; + } + + template + void + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + _M_gen_rand(void) + { + const _UIntType __upper_mask = (~_UIntType()) << __r; + const _UIntType __lower_mask = ~__upper_mask; + + for (size_t __k = 0; __k < (__n - __m); ++__k) + { + _UIntType __y = ((_M_x[__k] & __upper_mask) + | (_M_x[__k + 1] & __lower_mask)); + _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1) + ^ ((__y & 0x01) ? __a : 0)); + } + + for (size_t __k = (__n - __m); __k < (__n - 1); ++__k) + { + _UIntType __y = ((_M_x[__k] & __upper_mask) + | (_M_x[__k + 1] & __lower_mask)); + _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1) + ^ ((__y & 0x01) ? __a : 0)); + } + + _UIntType __y = ((_M_x[__n - 1] & __upper_mask) + | (_M_x[0] & __lower_mask)); + _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1) + ^ ((__y & 0x01) ? __a : 0)); + _M_p = 0; + } + + template + void + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + discard(unsigned long long __z) + { + while (__z > state_size - _M_p) + { + __z -= state_size - _M_p; + _M_gen_rand(); + } + _M_p += __z; + } + + template + typename + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::result_type + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + operator()() + { + // Reload the vector - cost is O(n) amortized over n calls. + if (_M_p >= state_size) + _M_gen_rand(); + + // Calculate o(x(i)). + result_type __z = _M_x[_M_p++]; + __z ^= (__z >> __u) & __d; + __z ^= (__z << __s) & __b; + __z ^= (__z << __t) & __c; + __z ^= (__z >> __l); + + return __z; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const mersenne_twister_engine<_UIntType, __w, __n, __m, + __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + for (size_t __i = 0; __i < __n; ++__i) + __os << __x._M_x[__i] << __space; + __os << __x._M_p; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + mersenne_twister_engine<_UIntType, __w, __n, __m, + __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + for (size_t __i = 0; __i < __n; ++__i) + __is >> __x._M_x[__i]; + __is >> __x._M_p; + + __is.flags(__flags); + return __is; + } + + + template + constexpr size_t + subtract_with_carry_engine<_UIntType, __w, __s, __r>::word_size; + + template + constexpr size_t + subtract_with_carry_engine<_UIntType, __w, __s, __r>::short_lag; + + template + constexpr size_t + subtract_with_carry_engine<_UIntType, __w, __s, __r>::long_lag; + + template + constexpr _UIntType + subtract_with_carry_engine<_UIntType, __w, __s, __r>::default_seed; + + template + void + subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + seed(result_type __value) + { + std::linear_congruential_engine + __lcg(__value == 0u ? default_seed : __value); + + const size_t __n = (__w + 31) / 32; + + for (size_t __i = 0; __i < long_lag; ++__i) + { + _UIntType __sum = 0u; + _UIntType __factor = 1u; + for (size_t __j = 0; __j < __n; ++__j) + { + __sum += __detail::__mod::__value> + (__lcg()) * __factor; + __factor *= __detail::_Shift<_UIntType, 32>::__value; + } + _M_x[__i] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__sum); + } + _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; + _M_p = 0; + } + + template + template + typename std::enable_if::value>::type + subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + seed(_Sseq& __q) + { + const size_t __k = (__w + 31) / 32; + uint_least32_t __arr[__r * __k]; + __q.generate(__arr + 0, __arr + __r * __k); + + for (size_t __i = 0; __i < long_lag; ++__i) + { + _UIntType __sum = 0u; + _UIntType __factor = 1u; + for (size_t __j = 0; __j < __k; ++__j) + { + __sum += __arr[__k * __i + __j] * __factor; + __factor *= __detail::_Shift<_UIntType, 32>::__value; + } + _M_x[__i] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__sum); + } + _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; + _M_p = 0; + } + + template + typename subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + result_type + subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + operator()() + { + // Derive short lag index from current index. + long __ps = _M_p - short_lag; + if (__ps < 0) + __ps += long_lag; + + // Calculate new x(i) without overflow or division. + // NB: Thanks to the requirements for _UIntType, _M_x[_M_p] + _M_carry + // cannot overflow. + _UIntType __xi; + if (_M_x[__ps] >= _M_x[_M_p] + _M_carry) + { + __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry; + _M_carry = 0; + } + else + { + __xi = (__detail::_Shift<_UIntType, __w>::__value + - _M_x[_M_p] - _M_carry + _M_x[__ps]); + _M_carry = 1; + } + _M_x[_M_p] = __xi; + + // Adjust current index to loop around in ring buffer. + if (++_M_p >= long_lag) + _M_p = 0; + + return __xi; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const subtract_with_carry_engine<_UIntType, + __w, __s, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + for (size_t __i = 0; __i < __r; ++__i) + __os << __x._M_x[__i] << __space; + __os << __x._M_carry << __space << __x._M_p; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + subtract_with_carry_engine<_UIntType, __w, __s, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + for (size_t __i = 0; __i < __r; ++__i) + __is >> __x._M_x[__i]; + __is >> __x._M_carry; + __is >> __x._M_p; + + __is.flags(__flags); + return __is; + } + + + template + constexpr size_t + discard_block_engine<_RandomNumberEngine, __p, __r>::block_size; + + template + constexpr size_t + discard_block_engine<_RandomNumberEngine, __p, __r>::used_block; + + template + typename discard_block_engine<_RandomNumberEngine, + __p, __r>::result_type + discard_block_engine<_RandomNumberEngine, __p, __r>:: + operator()() + { + if (_M_n >= used_block) + { + _M_b.discard(block_size - _M_n); + _M_n = 0; + } + ++_M_n; + return _M_b(); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const discard_block_engine<_RandomNumberEngine, + __p, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + __os << __x.base() << __space << __x._M_n; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + discard_block_engine<_RandomNumberEngine, __p, __r>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + __is >> __x._M_b >> __x._M_n; + + __is.flags(__flags); + return __is; + } + + + template + typename independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: + result_type + independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: + operator()() + { + typedef typename _RandomNumberEngine::result_type _Eresult_type; + const _Eresult_type __r + = (_M_b.max() - _M_b.min() < std::numeric_limits<_Eresult_type>::max() + ? _M_b.max() - _M_b.min() + 1 : 0); + const unsigned __edig = std::numeric_limits<_Eresult_type>::digits; + const unsigned __m = __r ? std::__lg(__r) : __edig; + + typedef typename std::common_type<_Eresult_type, result_type>::type + __ctype; + const unsigned __cdig = std::numeric_limits<__ctype>::digits; + + unsigned __n, __n0; + __ctype __s0, __s1, __y0, __y1; + + for (size_t __i = 0; __i < 2; ++__i) + { + __n = (__w + __m - 1) / __m + __i; + __n0 = __n - __w % __n; + const unsigned __w0 = __w / __n; // __w0 <= __m + + __s0 = 0; + __s1 = 0; + if (__w0 < __cdig) + { + __s0 = __ctype(1) << __w0; + __s1 = __s0 << 1; + } + + __y0 = 0; + __y1 = 0; + if (__r) + { + __y0 = __s0 * (__r / __s0); + if (__s1) + __y1 = __s1 * (__r / __s1); + + if (__r - __y0 <= __y0 / __n) + break; + } + else + break; + } + + result_type __sum = 0; + for (size_t __k = 0; __k < __n0; ++__k) + { + __ctype __u; + do + __u = _M_b() - _M_b.min(); + while (__y0 && __u >= __y0); + __sum = __s0 * __sum + (__s0 ? __u % __s0 : __u); + } + for (size_t __k = __n0; __k < __n; ++__k) + { + __ctype __u; + do + __u = _M_b() - _M_b.min(); + while (__y1 && __u >= __y1); + __sum = __s1 * __sum + (__s1 ? __u % __s1 : __u); + } + return __sum; + } + + + template + constexpr size_t + shuffle_order_engine<_RandomNumberEngine, __k>::table_size; + + template + typename shuffle_order_engine<_RandomNumberEngine, __k>::result_type + shuffle_order_engine<_RandomNumberEngine, __k>:: + operator()() + { + size_t __j = __k * ((_M_y - _M_b.min()) + / (_M_b.max() - _M_b.min() + 1.0L)); + _M_y = _M_v[__j]; + _M_v[__j] = _M_b(); + + return _M_y; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const shuffle_order_engine<_RandomNumberEngine, __k>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + __os << __x.base(); + for (size_t __i = 0; __i < __k; ++__i) + __os << __space << __x._M_v[__i]; + __os << __space << __x._M_y; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + shuffle_order_engine<_RandomNumberEngine, __k>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + __is >> __x._M_b; + for (size_t __i = 0; __i < __k; ++__i) + __is >> __x._M_v[__i]; + __is >> __x._M_y; + + __is.flags(__flags); + return __is; + } + + + template + 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) + { + // downscaling + const __uctype __uerange = __urange + 1; // __urange can be zero + const __uctype __scaling = __urngrange / __uerange; + const __uctype __past = __uerange * __scaling; + do + __ret = __uctype(__urng()) - __urngmin; + while (__ret >= __past); + __ret /= __scaling; + } + else if (__urngrange < __urange) + { + // upscaling + /* + Note that every value in [0, urange] + can be written uniquely as + + (urngrange + 1) * high + low + + where + + high in [0, urange / (urngrange + 1)] + + and + + low in [0, urngrange]. + */ + __uctype __tmp; // wraparound control + 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) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + 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 + { + // downscaling + const __uctype __uerange = __urange + 1; // __urange can be zero + 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) + { + // upscaling + /* + Note that every value in [0, urange] + can be written uniquely as + + (urngrange + 1) * high + low + + where + + high in [0, urange / (urngrange + 1)] + + and + + low in [0, urngrange]. + */ + __uctype __tmp; // wraparound control + 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) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + auto __range = __p.b() - __p.a(); + while (__f != __t) + *__f++ = __aurng() * __range + __p.a(); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const uniform_real_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + uniform_real_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __x.param(typename uniform_real_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + void + std::bernoulli_distribution:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + auto __limit = __p.p() * (__aurng.max() - __aurng.min()); + + while (__f != __t) + *__f++ = (__aurng() - __aurng.min()) < __limit; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const bernoulli_distribution& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.p(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + + template + template + typename geometric_distribution<_IntType>::result_type + geometric_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + // About the epsilon thing see this thread: + // http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html + const double __naf = + (1 - std::numeric_limits::epsilon()) / 2; + // The largest _RealType convertible to _IntType. + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + double __cand; + do + __cand = std::floor(std::log(1.0 - __aurng()) / __param._M_log_1_p); + while (__cand >= __thr); + + return result_type(__cand + __naf); + } + + template + template + void + geometric_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + // About the epsilon thing see this thread: + // http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html + const double __naf = + (1 - std::numeric_limits::epsilon()) / 2; + // The largest _RealType convertible to _IntType. + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + while (__f != __t) + { + double __cand; + do + __cand = std::floor(std::log(1.0 - __aurng()) + / __param._M_log_1_p); + while (__cand >= __thr); + + *__f++ = __cand + __naf; + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const geometric_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.p(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + geometric_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + double __p; + __is >> __p; + __x.param(typename geometric_distribution<_IntType>::param_type(__p)); + + __is.flags(__flags); + return __is; + } + + // This is Leger's algorithm, also in Devroye, Ch. X, Example 1.5. + template + template + typename negative_binomial_distribution<_IntType>::result_type + negative_binomial_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { + const double __y = _M_gd(__urng); + + // XXX Is the constructor too slow? + std::poisson_distribution __poisson(__y); + return __poisson(__urng); + } + + template + template + typename negative_binomial_distribution<_IntType>::result_type + negative_binomial_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution::param_type + param_type; + + const double __y = + _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); + + std::poisson_distribution __poisson(__y); + return __poisson(__urng); + } + + template + template + void + negative_binomial_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + { + const double __y = _M_gd(__urng); + + // XXX Is the constructor too slow? + std::poisson_distribution __poisson(__y); + *__f++ = __poisson(__urng); + } + } + + template + template + void + negative_binomial_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + typename std::gamma_distribution::param_type + __p2(__p.k(), (1.0 - __p.p()) / __p.p()); + + while (__f != __t) + { + const double __y = _M_gd(__urng, __p2); + + std::poisson_distribution __poisson(__y); + *__f++ = __poisson(__urng); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const negative_binomial_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.k() << __space << __x.p() + << __space << __x._M_gd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + negative_binomial_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + _IntType __k; + double __p; + __is >> __k >> __p >> __x._M_gd; + __x.param(typename negative_binomial_distribution<_IntType>:: + param_type(__k, __p)); + + __is.flags(__flags); + return __is; + } + + + template + void + poisson_distribution<_IntType>::param_type:: + _M_initialize() + { +#if _GLIBCXX_USE_C99_MATH_TR1 + if (_M_mean >= 12) + { + const double __m = std::floor(_M_mean); + _M_lm_thr = std::log(_M_mean); + _M_lfm = std::lgamma(__m + 1); + _M_sm = std::sqrt(__m); + + const double __pi_4 = 0.7853981633974483096156608458198757L; + const double __dx = std::sqrt(2 * __m * std::log(32 * __m + / __pi_4)); + _M_d = std::round(std::max(6.0, std::min(__m, __dx))); + const double __cx = 2 * __m + _M_d; + _M_scx = std::sqrt(__cx / 2); + _M_1cx = 1 / __cx; + + _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx); + _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2)) + / _M_d; + } + else +#endif + _M_lm_thr = std::exp(-_M_mean); + } + + /** + * A rejection algorithm when mean >= 12 and a simple method based + * upon the multiplication of uniform random variates otherwise. + * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 + * is defined. + * + * Reference: + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. X, Sects. 3.3 & 3.4 (+ Errata!). + */ + template + template + typename poisson_distribution<_IntType>::result_type + poisson_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); +#if _GLIBCXX_USE_C99_MATH_TR1 + if (__param.mean() >= 12) + { + double __x; + + // See comments above... + const double __naf = + (1 - std::numeric_limits::epsilon()) / 2; + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + + const double __m = std::floor(__param.mean()); + // sqrt(pi / 2) + const double __spi_2 = 1.2533141373155002512078826424055226L; + const double __c1 = __param._M_sm * __spi_2; + const double __c2 = __param._M_c2b + __c1; + const double __c3 = __c2 + 1; + const double __c4 = __c3 + 1; + // e^(1 / 78) + const double __e178 = 1.0129030479320018583185514777512983L; + const double __c5 = __c4 + __e178; + const double __c = __param._M_cb + __c5; + const double __2cx = 2 * (2 * __m + __param._M_d); + + bool __reject = true; + do + { + const double __u = __c * __aurng(); + const double __e = -std::log(1.0 - __aurng()); + + double __w = 0.0; + + if (__u <= __c1) + { + const double __n = _M_nd(__urng); + const double __y = -std::abs(__n) * __param._M_sm - 1; + __x = std::floor(__y); + __w = -__n * __n / 2; + if (__x < -__m) + continue; + } + else if (__u <= __c2) + { + const double __n = _M_nd(__urng); + const double __y = 1 + std::abs(__n) * __param._M_scx; + __x = std::ceil(__y); + __w = __y * (2 - __y) * __param._M_1cx; + if (__x > __param._M_d) + continue; + } + else if (__u <= __c3) + // NB: This case not in the book, nor in the Errata, + // but should be ok... + __x = -1; + else if (__u <= __c4) + __x = 0; + else if (__u <= __c5) + __x = 1; + else + { + const double __v = -std::log(1.0 - __aurng()); + const double __y = __param._M_d + + __v * __2cx / __param._M_d; + __x = std::ceil(__y); + __w = -__param._M_d * __param._M_1cx * (1 + __y / 2); + } + + __reject = (__w - __e - __x * __param._M_lm_thr + > __param._M_lfm - std::lgamma(__x + __m + 1)); + + __reject |= __x + __m >= __thr; + + } while (__reject); + + return result_type(__x + __m + __naf); + } + else +#endif + { + _IntType __x = 0; + double __prod = 1.0; + + do + { + __prod *= __aurng(); + __x += 1; + } + while (__prod > __param._M_lm_thr); + + return __x - 1; + } + } + + template + template + void + poisson_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + // We could duplicate everything from operator()... + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const poisson_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.mean() << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + poisson_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + double __mean; + __is >> __mean >> __x._M_nd; + __x.param(typename poisson_distribution<_IntType>::param_type(__mean)); + + __is.flags(__flags); + return __is; + } + + + template + void + binomial_distribution<_IntType>::param_type:: + _M_initialize() + { + const double __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; + + _M_easy = true; + +#if _GLIBCXX_USE_C99_MATH_TR1 + if (_M_t * __p12 >= 8) + { + _M_easy = false; + const double __np = std::floor(_M_t * __p12); + const double __pa = __np / _M_t; + const double __1p = 1 - __pa; + + const double __pi_4 = 0.7853981633974483096156608458198757L; + const double __d1x = + std::sqrt(__np * __1p * std::log(32 * __np + / (81 * __pi_4 * __1p))); + _M_d1 = std::round(std::max(1.0, __d1x)); + const double __d2x = + std::sqrt(__np * __1p * std::log(32 * _M_t * __1p + / (__pi_4 * __pa))); + _M_d2 = std::round(std::max(1.0, __d2x)); + + // sqrt(pi / 2) + const double __spi_2 = 1.2533141373155002512078826424055226L; + _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np)); + _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * _M_t * __1p)); + _M_c = 2 * _M_d1 / __np; + _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2; + const double __a12 = _M_a1 + _M_s2 * __spi_2; + const double __s1s = _M_s1 * _M_s1; + _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p)) + * 2 * __s1s / _M_d1 + * std::exp(-_M_d1 * _M_d1 / (2 * __s1s))); + const double __s2s = _M_s2 * _M_s2; + _M_s = (_M_a123 + 2 * __s2s / _M_d2 + * std::exp(-_M_d2 * _M_d2 / (2 * __s2s))); + _M_lf = (std::lgamma(__np + 1) + + std::lgamma(_M_t - __np + 1)); + _M_lp1p = std::log(__pa / __1p); + + _M_q = -std::log(1 - (__p12 - __pa) / __1p); + } + else +#endif + _M_q = -std::log(1 - __p12); + } + + template + template + typename binomial_distribution<_IntType>::result_type + binomial_distribution<_IntType>:: + _M_waiting(_UniformRandomNumberGenerator& __urng, + _IntType __t, double __q) + { + _IntType __x = 0; + double __sum = 0.0; + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + do + { + if (__t == __x) + return __x; + const double __e = -std::log(1.0 - __aurng()); + __sum += __e / (__t - __x); + __x += 1; + } + while (__sum <= __q); + + return __x - 1; + } + + /** + * A rejection algorithm when t * p >= 8 and a simple waiting time + * method - the second in the referenced book - otherwise. + * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 + * is defined. + * + * Reference: + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. X, Sect. 4 (+ Errata!). + */ + template + template + typename binomial_distribution<_IntType>::result_type + binomial_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + result_type __ret; + const _IntType __t = __param.t(); + const double __p = __param.p(); + const double __p12 = __p <= 0.5 ? __p : 1.0 - __p; + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + +#if _GLIBCXX_USE_C99_MATH_TR1 + if (!__param._M_easy) + { + double __x; + + // See comments above... + const double __naf = + (1 - std::numeric_limits::epsilon()) / 2; + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + + const double __np = std::floor(__t * __p12); + + // sqrt(pi / 2) + const double __spi_2 = 1.2533141373155002512078826424055226L; + const double __a1 = __param._M_a1; + const double __a12 = __a1 + __param._M_s2 * __spi_2; + const double __a123 = __param._M_a123; + const double __s1s = __param._M_s1 * __param._M_s1; + const double __s2s = __param._M_s2 * __param._M_s2; + + bool __reject; + do + { + const double __u = __param._M_s * __aurng(); + + double __v; + + if (__u <= __a1) + { + const double __n = _M_nd(__urng); + const double __y = __param._M_s1 * std::abs(__n); + __reject = __y >= __param._M_d1; + if (!__reject) + { + const double __e = -std::log(1.0 - __aurng()); + __x = std::floor(__y); + __v = -__e - __n * __n / 2 + __param._M_c; + } + } + else if (__u <= __a12) + { + const double __n = _M_nd(__urng); + const double __y = __param._M_s2 * std::abs(__n); + __reject = __y >= __param._M_d2; + if (!__reject) + { + const double __e = -std::log(1.0 - __aurng()); + __x = std::floor(-__y); + __v = -__e - __n * __n / 2; + } + } + else if (__u <= __a123) + { + const double __e1 = -std::log(1.0 - __aurng()); + const double __e2 = -std::log(1.0 - __aurng()); + + const double __y = __param._M_d1 + + 2 * __s1s * __e1 / __param._M_d1; + __x = std::floor(__y); + __v = (-__e2 + __param._M_d1 * (1 / (__t - __np) + -__y / (2 * __s1s))); + __reject = false; + } + else + { + const double __e1 = -std::log(1.0 - __aurng()); + const double __e2 = -std::log(1.0 - __aurng()); + + const double __y = __param._M_d2 + + 2 * __s2s * __e1 / __param._M_d2; + __x = std::floor(-__y); + __v = -__e2 - __param._M_d2 * __y / (2 * __s2s); + __reject = false; + } + + __reject = __reject || __x < -__np || __x > __t - __np; + if (!__reject) + { + const double __lfx = + std::lgamma(__np + __x + 1) + + std::lgamma(__t - (__np + __x) + 1); + __reject = __v > __param._M_lf - __lfx + + __x * __param._M_lp1p; + } + + __reject |= __x + __np >= __thr; + } + while (__reject); + + __x += __np + __naf; + + const _IntType __z = _M_waiting(__urng, __t - _IntType(__x), + __param._M_q); + __ret = _IntType(__x) + __z; + } + else +#endif + __ret = _M_waiting(__urng, __t, __param._M_q); + + if (__p12 != __p) + __ret = __t - __ret; + return __ret; + } + + template + template + void + binomial_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + // We could duplicate everything from operator()... + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const binomial_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.t() << __space << __x.p() + << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + binomial_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _IntType __t; + double __p; + __is >> __t >> __p >> __x._M_nd; + __x.param(typename binomial_distribution<_IntType>:: + param_type(__t, __p)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + std::exponential_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + while (__f != __t) + *__f++ = -std::log(result_type(1) - __aurng()) / __p.lambda(); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const exponential_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.lambda(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + exponential_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __lambda; + __is >> __lambda; + __x.param(typename exponential_distribution<_RealType>:: + param_type(__lambda)); + + __is.flags(__flags); + return __is; + } + + + /** + * Polar method due to Marsaglia. + * + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. V, Sect. 4.4. + */ + template + template + typename normal_distribution<_RealType>::result_type + normal_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + result_type __ret; + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + if (_M_saved_available) + { + _M_saved_available = false; + __ret = _M_saved; + } + else + { + result_type __x, __y, __r2; + do + { + __x = result_type(2.0) * __aurng() - 1.0; + __y = result_type(2.0) * __aurng() - 1.0; + __r2 = __x * __x + __y * __y; + } + while (__r2 > 1.0 || __r2 == 0.0); + + const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); + _M_saved = __x * __mult; + _M_saved_available = true; + __ret = __y * __mult; + } + + __ret = __ret * __param.stddev() + __param.mean(); + return __ret; + } + + template + template + void + normal_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + + if (__f == __t) + return; + + if (_M_saved_available) + { + _M_saved_available = false; + *__f++ = _M_saved * __param.stddev() + __param.mean(); + + if (__f == __t) + return; + } + + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + while (__f + 1 < __t) + { + result_type __x, __y, __r2; + do + { + __x = result_type(2.0) * __aurng() - 1.0; + __y = result_type(2.0) * __aurng() - 1.0; + __r2 = __x * __x + __y * __y; + } + while (__r2 > 1.0 || __r2 == 0.0); + + const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); + *__f++ = __y * __mult * __param.stddev() + __param.mean(); + *__f++ = __x * __mult * __param.stddev() + __param.mean(); + } + + if (__f != __t) + { + result_type __x, __y, __r2; + do + { + __x = result_type(2.0) * __aurng() - 1.0; + __y = result_type(2.0) * __aurng() - 1.0; + __r2 = __x * __x + __y * __y; + } + while (__r2 > 1.0 || __r2 == 0.0); + + const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); + _M_saved = __x * __mult; + _M_saved_available = true; + *__f = __y * __mult * __param.stddev() + __param.mean(); + } + } + + template + bool + operator==(const std::normal_distribution<_RealType>& __d1, + const std::normal_distribution<_RealType>& __d2) + { + if (__d1._M_param == __d2._M_param + && __d1._M_saved_available == __d2._M_saved_available) + { + if (__d1._M_saved_available + && __d1._M_saved == __d2._M_saved) + return true; + else if(!__d1._M_saved_available) + return true; + else + return false; + } + else + return false; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const normal_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.mean() << __space << __x.stddev() + << __space << __x._M_saved_available; + if (__x._M_saved_available) + __os << __space << __x._M_saved; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + normal_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + double __mean, __stddev; + __is >> __mean >> __stddev + >> __x._M_saved_available; + if (__x._M_saved_available) + __is >> __x._M_saved; + __x.param(typename normal_distribution<_RealType>:: + param_type(__mean, __stddev)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + lognormal_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = std::exp(__p.s() * _M_nd(__urng) + __p.m()); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const lognormal_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.m() << __space << __x.s() + << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + lognormal_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __m, __s; + __is >> __m >> __s >> __x._M_nd; + __x.param(typename lognormal_distribution<_RealType>:: + param_type(__m, __s)); + + __is.flags(__flags); + return __is; + } + + template + template + void + std::chi_squared_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = 2 * _M_gd(__urng); + } + + template + template + void + std::chi_squared_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const typename + std::gamma_distribution::param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = 2 * _M_gd(__urng, __p); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const chi_squared_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.n() << __space << __x._M_gd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + chi_squared_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __n; + __is >> __n >> __x._M_gd; + __x.param(typename chi_squared_distribution<_RealType>:: + param_type(__n)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename cauchy_distribution<_RealType>::result_type + cauchy_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + _RealType __u; + do + __u = __aurng(); + while (__u == 0.5); + + const _RealType __pi = 3.1415926535897932384626433832795029L; + return __p.a() + __p.b() * std::tan(__pi * __u); + } + + template + template + void + cauchy_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + const _RealType __pi = 3.1415926535897932384626433832795029L; + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + while (__f != __t) + { + _RealType __u; + do + __u = __aurng(); + while (__u == 0.5); + + *__f++ = __p.a() + __p.b() * std::tan(__pi * __u); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const cauchy_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + cauchy_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __x.param(typename cauchy_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + std::fisher_f_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = ((_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m())); + } + + template + template + void + std::fisher_f_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + typedef typename std::gamma_distribution::param_type + param_type; + param_type __p1(__p.m() / 2); + param_type __p2(__p.n() / 2); + while (__f != __t) + *__f++ = ((_M_gd_x(__urng, __p1) * n()) + / (_M_gd_y(__urng, __p2) * m())); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const fisher_f_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.m() << __space << __x.n() + << __space << __x._M_gd_x << __space << __x._M_gd_y; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + fisher_f_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __m, __n; + __is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y; + __x.param(typename fisher_f_distribution<_RealType>:: + param_type(__m, __n)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + std::student_t_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); + } + + template + template + void + std::student_t_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + typename std::gamma_distribution::param_type + __p2(__p.n() / 2, 2); + while (__f != __t) + *__f++ = _M_nd(__urng) * std::sqrt(__p.n() / _M_gd(__urng, __p2)); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const student_t_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.n() << __space << __x._M_nd << __space << __x._M_gd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + student_t_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __n; + __is >> __n >> __x._M_nd >> __x._M_gd; + __x.param(typename student_t_distribution<_RealType>::param_type(__n)); + + __is.flags(__flags); + return __is; + } + + + template + void + gamma_distribution<_RealType>::param_type:: + _M_initialize() + { + _M_malpha = _M_alpha < 1.0 ? _M_alpha + _RealType(1.0) : _M_alpha; + + const _RealType __a1 = _M_malpha - _RealType(1.0) / _RealType(3.0); + _M_a2 = _RealType(1.0) / std::sqrt(_RealType(9.0) * __a1); + } + + /** + * Marsaglia, G. and Tsang, W. W. + * "A Simple Method for Generating Gamma Variables" + * ACM Transactions on Mathematical Software, 26, 3, 363-372, 2000. + */ + template + template + typename gamma_distribution<_RealType>::result_type + gamma_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + result_type __u, __v, __n; + const result_type __a1 = (__param._M_malpha + - _RealType(1.0) / _RealType(3.0)); + + do + { + do + { + __n = _M_nd(__urng); + __v = result_type(1.0) + __param._M_a2 * __n; + } + while (__v <= 0.0); + + __v = __v * __v * __v; + __u = __aurng(); + } + while (__u > result_type(1.0) - 0.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) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + result_type __u, __v, __n; + const result_type __a1 = (__param._M_malpha + - _RealType(1.0) / _RealType(3.0)); + + if (__param.alpha() == __param._M_malpha) + while (__f != __t) + { + do + { + do + { + __n = _M_nd(__urng); + __v = result_type(1.0) + __param._M_a2 * __n; + } + while (__v <= 0.0); + + __v = __v * __v * __v; + __u = __aurng(); + } + while (__u > result_type(1.0) - 0.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) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + auto __inv_a = result_type(1) / __p.a(); + + while (__f != __t) + *__f++ = __p.b() * std::pow(-std::log(result_type(1) - __aurng()), + __inv_a); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const weibull_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + weibull_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __x.param(typename weibull_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename extreme_value_distribution<_RealType>::result_type + extreme_value_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + return __p.a() - __p.b() * std::log(-std::log(result_type(1) + - __aurng())); + } + + template + template + void + extreme_value_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + while (__f != __t) + *__f++ = __p.a() - __p.b() * std::log(-std::log(result_type(1) + - __aurng())); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const extreme_value_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + extreme_value_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __x.param(typename extreme_value_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + void + discrete_distribution<_IntType>::param_type:: + _M_initialize() + { + if (_M_prob.size() < 2) + { + _M_prob.clear(); + return; + } + + const double __sum = std::accumulate(_M_prob.begin(), + _M_prob.end(), 0.0); + // Now normalize the probabilites. + __detail::__normalize(_M_prob.begin(), _M_prob.end(), _M_prob.begin(), + __sum); + // Accumulate partial sums. + _M_cp.reserve(_M_prob.size()); + std::partial_sum(_M_prob.begin(), _M_prob.end(), + std::back_inserter(_M_cp)); + // Make sure the last cumulative probability is one. + _M_cp[_M_cp.size() - 1] = 1.0; + } + + template + template + discrete_distribution<_IntType>::param_type:: + param_type(size_t __nw, double __xmin, double __xmax, _Func __fw) + : _M_prob(), _M_cp() + { + const size_t __n = __nw == 0 ? 1 : __nw; + const double __delta = (__xmax - __xmin) / __n; + + _M_prob.reserve(__n); + for (size_t __k = 0; __k < __nw; ++__k) + _M_prob.push_back(__fw(__xmin + __k * __delta + 0.5 * __delta)); + + _M_initialize(); + } + + template + template + typename discrete_distribution<_IntType>::result_type + discrete_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + if (__param._M_cp.empty()) + return result_type(0); + + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + const double __p = __aurng(); + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + + return __pos - __param._M_cp.begin(); + } + + template + template + void + discrete_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + + if (__param._M_cp.empty()) + { + while (__f != __t) + *__f++ = result_type(0); + return; + } + + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + while (__f != __t) + { + const double __p = __aurng(); + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + + *__f++ = __pos - __param._M_cp.begin(); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const discrete_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits::max_digits10); + + std::vector __prob = __x.probabilities(); + __os << __prob.size(); + for (auto __dit = __prob.begin(); __dit != __prob.end(); ++__dit) + __os << __space << *__dit; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + discrete_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + size_t __n; + __is >> __n; + + std::vector __prob_vec; + __prob_vec.reserve(__n); + for (; __n != 0; --__n) + { + double __prob; + __is >> __prob; + __prob_vec.push_back(__prob); + } + + __x.param(typename discrete_distribution<_IntType>:: + param_type(__prob_vec.begin(), __prob_vec.end())); + + __is.flags(__flags); + return __is; + } + + + template + void + piecewise_constant_distribution<_RealType>::param_type:: + _M_initialize() + { + if (_M_int.size() < 2 + || (_M_int.size() == 2 + && _M_int[0] == _RealType(0) + && _M_int[1] == _RealType(1))) + { + _M_int.clear(); + _M_den.clear(); + return; + } + + const double __sum = std::accumulate(_M_den.begin(), + _M_den.end(), 0.0); + + __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), + __sum); + + _M_cp.reserve(_M_den.size()); + std::partial_sum(_M_den.begin(), _M_den.end(), + std::back_inserter(_M_cp)); + + // Make sure the last cumulative probability is one. + _M_cp[_M_cp.size() - 1] = 1.0; + + for (size_t __k = 0; __k < _M_den.size(); ++__k) + _M_den[__k] /= _M_int[__k + 1] - _M_int[__k]; + } + + template + template + piecewise_constant_distribution<_RealType>::param_type:: + param_type(_InputIteratorB __bbegin, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_int(), _M_den(), _M_cp() + { + if (__bbegin != __bend) + { + for (;;) + { + _M_int.push_back(*__bbegin); + ++__bbegin; + if (__bbegin == __bend) + break; + + _M_den.push_back(*__wbegin); + ++__wbegin; + } + } + + _M_initialize(); + } + + template + template + piecewise_constant_distribution<_RealType>::param_type:: + param_type(initializer_list<_RealType> __bl, _Func __fw) + : _M_int(), _M_den(), _M_cp() + { + _M_int.reserve(__bl.size()); + for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) + _M_int.push_back(*__biter); + + _M_den.reserve(_M_int.size() - 1); + for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) + _M_den.push_back(__fw(0.5 * (_M_int[__k + 1] + _M_int[__k]))); + + _M_initialize(); + } + + template + template + piecewise_constant_distribution<_RealType>::param_type:: + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) + : _M_int(), _M_den(), _M_cp() + { + const size_t __n = __nw == 0 ? 1 : __nw; + const _RealType __delta = (__xmax - __xmin) / __n; + + _M_int.reserve(__n + 1); + for (size_t __k = 0; __k <= __nw; ++__k) + _M_int.push_back(__xmin + __k * __delta); + + _M_den.reserve(__n); + for (size_t __k = 0; __k < __nw; ++__k) + _M_den.push_back(__fw(_M_int[__k] + 0.5 * __delta)); + + _M_initialize(); + } + + template + template + typename piecewise_constant_distribution<_RealType>::result_type + piecewise_constant_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + const double __p = __aurng(); + if (__param._M_cp.empty()) + return __p; + + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + const size_t __i = __pos - __param._M_cp.begin(); + + const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; + + return __param._M_int[__i] + (__p - __pref) / __param._M_den[__i]; + } + + template + template + void + piecewise_constant_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + if (__param._M_cp.empty()) + { + while (__f != __t) + *__f++ = __aurng(); + return; + } + + while (__f != __t) + { + const double __p = __aurng(); + + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + const size_t __i = __pos - __param._M_cp.begin(); + + const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; + + *__f++ = (__param._M_int[__i] + + (__p - __pref) / __param._M_den[__i]); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const piecewise_constant_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + std::vector<_RealType> __int = __x.intervals(); + __os << __int.size() - 1; + + for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) + __os << __space << *__xit; + + std::vector __den = __x.densities(); + for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) + __os << __space << *__dit; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + piecewise_constant_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + size_t __n; + __is >> __n; + + std::vector<_RealType> __int_vec; + __int_vec.reserve(__n + 1); + for (size_t __i = 0; __i <= __n; ++__i) + { + _RealType __int; + __is >> __int; + __int_vec.push_back(__int); + } + + std::vector __den_vec; + __den_vec.reserve(__n); + for (size_t __i = 0; __i < __n; ++__i) + { + double __den; + __is >> __den; + __den_vec.push_back(__den); + } + + __x.param(typename piecewise_constant_distribution<_RealType>:: + param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); + + __is.flags(__flags); + return __is; + } + + + template + void + piecewise_linear_distribution<_RealType>::param_type:: + _M_initialize() + { + if (_M_int.size() < 2 + || (_M_int.size() == 2 + && _M_int[0] == _RealType(0) + && _M_int[1] == _RealType(1) + && _M_den[0] == _M_den[1])) + { + _M_int.clear(); + _M_den.clear(); + return; + } + + double __sum = 0.0; + _M_cp.reserve(_M_int.size() - 1); + _M_m.reserve(_M_int.size() - 1); + for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) + { + const _RealType __delta = _M_int[__k + 1] - _M_int[__k]; + __sum += 0.5 * (_M_den[__k + 1] + _M_den[__k]) * __delta; + _M_cp.push_back(__sum); + _M_m.push_back((_M_den[__k + 1] - _M_den[__k]) / __delta); + } + + // Now normalize the densities... + __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), + __sum); + // ... and partial sums... + __detail::__normalize(_M_cp.begin(), _M_cp.end(), _M_cp.begin(), __sum); + // ... and slopes. + __detail::__normalize(_M_m.begin(), _M_m.end(), _M_m.begin(), __sum); + + // Make sure the last cumulative probablility is one. + _M_cp[_M_cp.size() - 1] = 1.0; + } + + template + template + piecewise_linear_distribution<_RealType>::param_type:: + param_type(_InputIteratorB __bbegin, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_int(), _M_den(), _M_cp(), _M_m() + { + for (; __bbegin != __bend; ++__bbegin, ++__wbegin) + { + _M_int.push_back(*__bbegin); + _M_den.push_back(*__wbegin); + } + + _M_initialize(); + } + + template + template + piecewise_linear_distribution<_RealType>::param_type:: + param_type(initializer_list<_RealType> __bl, _Func __fw) + : _M_int(), _M_den(), _M_cp(), _M_m() + { + _M_int.reserve(__bl.size()); + _M_den.reserve(__bl.size()); + for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) + { + _M_int.push_back(*__biter); + _M_den.push_back(__fw(*__biter)); + } + + _M_initialize(); + } + + template + template + piecewise_linear_distribution<_RealType>::param_type:: + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) + : _M_int(), _M_den(), _M_cp(), _M_m() + { + const size_t __n = __nw == 0 ? 1 : __nw; + const _RealType __delta = (__xmax - __xmin) / __n; + + _M_int.reserve(__n + 1); + _M_den.reserve(__n + 1); + for (size_t __k = 0; __k <= __nw; ++__k) + { + _M_int.push_back(__xmin + __k * __delta); + _M_den.push_back(__fw(_M_int[__k] + __delta)); + } + + _M_initialize(); + } + + template + template + typename piecewise_linear_distribution<_RealType>::result_type + piecewise_linear_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + const double __p = __aurng(); + if (__param._M_cp.empty()) + return __p; + + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + const size_t __i = __pos - __param._M_cp.begin(); + + const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; + + const double __a = 0.5 * __param._M_m[__i]; + const double __b = __param._M_den[__i]; + const double __cm = __p - __pref; + + _RealType __x = __param._M_int[__i]; + if (__a == 0) + __x += __cm / __b; + else + { + const double __d = __b * __b + 4.0 * __a * __cm; + __x += 0.5 * (std::sqrt(__d) - __b) / __a; + } + + return __x; + } + + template + template + void + piecewise_linear_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + // We could duplicate everything from operator()... + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const piecewise_linear_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + std::vector<_RealType> __int = __x.intervals(); + __os << __int.size() - 1; + + for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) + __os << __space << *__xit; + + std::vector __den = __x.densities(); + for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) + __os << __space << *__dit; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + piecewise_linear_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + size_t __n; + __is >> __n; + + std::vector<_RealType> __int_vec; + __int_vec.reserve(__n + 1); + for (size_t __i = 0; __i <= __n; ++__i) + { + _RealType __int; + __is >> __int; + __int_vec.push_back(__int); + } + + std::vector __den_vec; + __den_vec.reserve(__n + 1); + for (size_t __i = 0; __i <= __n; ++__i) + { + double __den; + __is >> __den; + __den_vec.push_back(__den); + } + + __x.param(typename piecewise_linear_distribution<_RealType>:: + param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); + + __is.flags(__flags); + return __is; + } + + + template + seed_seq::seed_seq(std::initializer_list<_IntType> __il) + { + for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter) + _M_v.push_back(__detail::__mod::__value>(*__iter)); + } + + template + seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end) + { + for (_InputIterator __iter = __begin; __iter != __end; ++__iter) + _M_v.push_back(__detail::__mod::__value>(*__iter)); + } + + template + void + seed_seq::generate(_RandomAccessIterator __begin, + _RandomAccessIterator __end) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _Type; + + if (__begin == __end) + return; + + std::fill(__begin, __end, _Type(0x8b8b8b8bu)); + + const size_t __n = __end - __begin; + const size_t __s = _M_v.size(); + const size_t __t = (__n >= 623) ? 11 + : (__n >= 68) ? 7 + : (__n >= 39) ? 5 + : (__n >= 7) ? 3 + : (__n - 1) / 2; + const size_t __p = (__n - __t) / 2; + const size_t __q = __p + __t; + const size_t __m = std::max(size_t(__s + 1), __n); + + for (size_t __k = 0; __k < __m; ++__k) + { + _Type __arg = (__begin[__k % __n] + ^ __begin[(__k + __p) % __n] + ^ __begin[(__k - 1) % __n]); + _Type __r1 = __arg ^ (__arg >> 27); + __r1 = __detail::__mod<_Type, + __detail::_Shift<_Type, 32>::__value>(1664525u * __r1); + _Type __r2 = __r1; + if (__k == 0) + __r2 += __s; + else if (__k <= __s) + __r2 += __k % __n + _M_v[__k - 1]; + else + __r2 += __k % __n; + __r2 = __detail::__mod<_Type, + __detail::_Shift<_Type, 32>::__value>(__r2); + __begin[(__k + __p) % __n] += __r1; + __begin[(__k + __q) % __n] += __r2; + __begin[__k % __n] = __r2; + } + + for (size_t __k = __m; __k < __m + __n; ++__k) + { + _Type __arg = (__begin[__k % __n] + + __begin[(__k + __p) % __n] + + __begin[(__k - 1) % __n]); + _Type __r3 = __arg ^ (__arg >> 27); + __r3 = __detail::__mod<_Type, + __detail::_Shift<_Type, 32>::__value>(1566083941u * __r3); + _Type __r4 = __r3 - __k % __n; + __r4 = __detail::__mod<_Type, + __detail::_Shift<_Type, 32>::__value>(__r4); + __begin[(__k + __p) % __n] ^= __r3; + __begin[(__k + __q) % __n] ^= __r4; + __begin[__k % __n] = __r4; + } + } + + template + _RealType + generate_canonical(_UniformRandomNumberGenerator& __urng) + { + 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; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/range_access.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/range_access.h new file mode 100644 index 0000000..18a7958 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/range_access.h @@ -0,0 +1,105 @@ +// -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/range_access.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iterator} + */ + +#ifndef _GLIBCXX_RANGE_ACCESS_H +#define _GLIBCXX_RANGE_ACCESS_H 1 + +#pragma GCC system_header + +#if __cplusplus >= 201103L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief Return an iterator pointing to the first element of + * the container. + * @param __cont Container. + */ + template + inline auto + begin(_Container& __cont) -> decltype(__cont.begin()) + { return __cont.begin(); } + + /** + * @brief Return an iterator pointing to the first element of + * the const container. + * @param __cont Container. + */ + template + inline auto + begin(const _Container& __cont) -> decltype(__cont.begin()) + { return __cont.begin(); } + + /** + * @brief Return an iterator pointing to one past the last element of + * the container. + * @param __cont Container. + */ + template + inline auto + end(_Container& __cont) -> decltype(__cont.end()) + { return __cont.end(); } + + /** + * @brief Return an iterator pointing to one past the last element of + * the const container. + * @param __cont Container. + */ + template + inline auto + end(const _Container& __cont) -> decltype(__cont.end()) + { return __cont.end(); } + + /** + * @brief Return an iterator pointing to the first element of the array. + * @param __arr Array. + */ + template + inline _Tp* + begin(_Tp (&__arr)[_Nm]) + { return __arr; } + + /** + * @brief Return an iterator pointing to one past the last element + * of the array. + * @param __arr Array. + */ + template + inline _Tp* + end(_Tp (&__arr)[_Nm]) + { return __arr + _Nm; } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // C++11 + +#endif // _GLIBCXX_RANGE_ACCESS_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex.h new file mode 100644 index 0000000..101925a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex.h @@ -0,0 +1,2485 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/regex.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{regex} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup regex + * @{ + */ + + /** + * @brief Class regex_traits. Describes aspects of a regular expression. + * + * A regular expression traits class that satisfies the requirements of + * section [28.7]. + * + * The class %regex is parameterized around a set of related types and + * functions used to complete the definition of its semantics. This class + * satisfies the requirements of such a traits class. + */ + template + struct regex_traits + { + public: + typedef _Ch_type char_type; + typedef std::basic_string string_type; + typedef std::locale locale_type; + typedef std::ctype_base::mask char_class_type; + + public: + /** + * @brief Constructs a default traits object. + */ + regex_traits() { } + + /** + * @brief Gives the length of a C-style string starting at @p __p. + * + * @param __p a pointer to the start of a character sequence. + * + * @returns the number of characters between @p *__p and the first + * default-initialized value of type @p char_type. In other words, uses + * the C-string algorithm for determining the length of a sequence of + * characters. + */ + static std::size_t + length(const char_type* __p) + { return string_type::traits_type::length(__p); } + + /** + * @brief Performs the identity translation. + * + * @param __c A character to the locale-specific character set. + * + * @returns __c. + */ + char_type + translate(char_type __c) const + { return __c; } + + /** + * @brief Translates a character into a case-insensitive equivalent. + * + * @param __c A character to the locale-specific character set. + * + * @returns the locale-specific lower-case equivalent of __c. + * @throws std::bad_cast if the imbued locale does not support the ctype + * facet. + */ + char_type + translate_nocase(char_type __c) const + { + typedef std::ctype __ctype_type; + const __ctype_type& __fctyp(use_facet<__ctype_type>(_M_locale)); + return __fctyp.tolower(__c); + } + + /** + * @brief Gets a sort key for a character sequence. + * + * @param __first beginning of the character sequence. + * @param __last one-past-the-end of the character sequence. + * + * Returns a sort key for the character sequence designated by the + * iterator range [F1, F2) such that if the character sequence [G1, G2) + * sorts before the character sequence [H1, H2) then + * v.transform(G1, G2) < v.transform(H1, H2). + * + * What this really does is provide a more efficient way to compare a + * string to multiple other strings in locales with fancy collation + * rules and equivalence classes. + * + * @returns a locale-specific sort key equivalent to the input range. + * + * @throws std::bad_cast if the current locale does not have a collate + * facet. + */ + template + string_type + transform(_Fwd_iter __first, _Fwd_iter __last) const + { + typedef std::collate __collate_type; + const __collate_type& __fclt(use_facet<__collate_type>(_M_locale)); + string_type __s(__first, __last); + return __fclt.transform(__s.data(), __s.data() + __s.size()); + } + + /** + * @brief Gets a sort key for a character sequence, independent of case. + * + * @param __first beginning of the character sequence. + * @param __last one-past-the-end of the character sequence. + * + * Effects: if typeid(use_facet >) == + * typeid(collate_byname<_Ch_type>) and the form of the sort key + * returned by collate_byname<_Ch_type>::transform(__first, __last) + * is known and can be converted into a primary sort key + * then returns that key, otherwise returns an empty string. + * + * @todo Implement this function. + */ + template + string_type + transform_primary(_Fwd_iter __first, _Fwd_iter __last) const + { return string_type(); } + + /** + * @brief Gets a collation element by name. + * + * @param __first beginning of the collation element name. + * @param __last one-past-the-end of the collation element name. + * + * @returns a sequence of one or more characters that represents the + * collating element consisting of the character sequence designated by + * the iterator range [__first, __last). Returns an empty string if the + * character sequence is not a valid collating element. + * + * @todo Implement this function. + */ + template + string_type + lookup_collatename(_Fwd_iter __first, _Fwd_iter __last) const + { return string_type(); } + + /** + * @brief Maps one or more characters to a named character + * classification. + * + * @param __first beginning of the character sequence. + * @param __last one-past-the-end of the character sequence. + * @param __icase ignores the case of the classification name. + * + * @returns an unspecified value that represents the character + * classification named by the character sequence designated by + * the iterator range [__first, __last). If @p icase is true, + * the returned mask identifies the classification regardless of + * the case of the characters to be matched (for example, + * [[:lower:]] is the same as [[:alpha:]]), otherwise a + * case-dependent classification is returned. The value + * returned shall be independent of the case of the characters + * in the character sequence. If the name is not recognized then + * returns a value that compares equal to 0. + * + * At least the following names (or their wide-character equivalent) are + * supported. + * - d + * - w + * - s + * - alnum + * - alpha + * - blank + * - cntrl + * - digit + * - graph + * - lower + * - print + * - punct + * - space + * - upper + * - xdigit + * + * @todo Implement this function. + */ + template + char_class_type + lookup_classname(_Fwd_iter __first, _Fwd_iter __last, + bool __icase = false) const + { return 0; } + + /** + * @brief Determines if @p c is a member of an identified class. + * + * @param __c a character. + * @param __f a class type (as returned from lookup_classname). + * + * @returns true if the character @p __c is a member of the classification + * represented by @p __f, false otherwise. + * + * @throws std::bad_cast if the current locale does not have a ctype + * facet. + */ + bool + isctype(_Ch_type __c, char_class_type __f) const; + + /** + * @brief Converts a digit to an int. + * + * @param __ch a character representing a digit. + * @param __radix the radix if the numeric conversion (limited to 8, 10, + * or 16). + * + * @returns the value represented by the digit __ch in base radix if the + * character __ch is a valid digit in base radix; otherwise returns -1. + */ + int + value(_Ch_type __ch, int __radix) const; + + /** + * @brief Imbues the regex_traits object with a copy of a new locale. + * + * @param __loc A locale. + * + * @returns a copy of the previous locale in use by the regex_traits + * object. + * + * @note Calling imbue with a different locale than the one currently in + * use invalidates all cached data held by *this. + */ + locale_type + imbue(locale_type __loc) + { + std::swap(_M_locale, __loc); + return __loc; + } + + /** + * @brief Gets a copy of the current locale in use by the regex_traits + * object. + */ + locale_type + getloc() const + { return _M_locale; } + + protected: + locale_type _M_locale; + }; + + template + bool + regex_traits<_Ch_type>:: + isctype(_Ch_type __c, char_class_type __f) const + { + typedef std::ctype __ctype_type; + const __ctype_type& __fctyp(use_facet<__ctype_type>(_M_locale)); + + if (__fctyp.is(__f, __c)) + return true; + + // special case of underscore in [[:w:]] + if (__c == __fctyp.widen('_')) + { + const char __wb[] = "w"; + char_class_type __wt = this->lookup_classname(__wb, + __wb + sizeof(__wb)); + if (__f | __wt) + return true; + } + + // special case of [[:space:]] in [[:blank:]] + if (__fctyp.is(std::ctype_base::space, __c)) + { + const char __bb[] = "blank"; + char_class_type __bt = this->lookup_classname(__bb, + __bb + sizeof(__bb)); + if (__f | __bt) + return true; + } + + return false; + } + + template + int + regex_traits<_Ch_type>:: + value(_Ch_type __ch, int __radix) const + { + std::basic_istringstream __is(string_type(1, __ch)); + int __v; + if (__radix == 8) + __is >> std::oct; + else if (__radix == 16) + __is >> std::hex; + __is >> __v; + return __is.fail() ? -1 : __v; + } + + // [7.8] Class basic_regex + /** + * Objects of specializations of this class represent regular expressions + * constructed from sequences of character type @p _Ch_type. + * + * Storage for the regular expression is allocated and deallocated as + * necessary by the member functions of this class. + */ + template > + class basic_regex + { + public: + // types: + typedef _Ch_type value_type; + typedef _Rx_traits traits_type; + typedef typename traits_type::string_type string_type; + typedef regex_constants::syntax_option_type flag_type; + typedef typename traits_type::locale_type locale_type; + + /** + * @name Constants + * std [28.8.1](1) + */ + //@{ + static constexpr flag_type icase = regex_constants::icase; + static constexpr flag_type nosubs = regex_constants::nosubs; + static constexpr flag_type optimize = regex_constants::optimize; + static constexpr flag_type collate = regex_constants::collate; + static constexpr flag_type ECMAScript = regex_constants::ECMAScript; + static constexpr flag_type basic = regex_constants::basic; + static constexpr flag_type extended = regex_constants::extended; + static constexpr flag_type awk = regex_constants::awk; + static constexpr flag_type grep = regex_constants::grep; + static constexpr flag_type egrep = regex_constants::egrep; + //@} + + // [7.8.2] construct/copy/destroy + /** + * Constructs a basic regular expression that does not match any + * character sequence. + */ + basic_regex() + : _M_flags(ECMAScript), + _M_automaton(__detail::__compile(0, 0, + _M_traits, _M_flags)) + { } + + /** + * @brief Constructs a basic regular expression from the + * sequence [__p, __p + char_traits<_Ch_type>::length(__p)) + * interpreted according to the flags in @p __f. + * + * @param __p A pointer to the start of a C-style null-terminated string + * containing a regular expression. + * @param __f Flags indicating the syntax rules and options. + * + * @throws regex_error if @p __p is not a valid regular expression. + */ + explicit + basic_regex(const _Ch_type* __p, flag_type __f = ECMAScript) + : _M_flags(__f), + _M_automaton(__detail::__compile(__p, __p + _Rx_traits::length(__p), + _M_traits, _M_flags)) + { } + + /** + * @brief Constructs a basic regular expression from the sequence + * [p, p + len) interpreted according to the flags in @p f. + * + * @param __p A pointer to the start of a string containing a regular + * expression. + * @param __len The length of the string containing the regular + * expression. + * @param __f Flags indicating the syntax rules and options. + * + * @throws regex_error if @p __p is not a valid regular expression. + */ + basic_regex(const _Ch_type* __p, std::size_t __len, flag_type __f) + : _M_flags(__f), + _M_automaton(__detail::__compile(__p, __p + __len, _M_traits, _M_flags)) + { } + + /** + * @brief Copy-constructs a basic regular expression. + * + * @param __rhs A @p regex object. + */ + basic_regex(const basic_regex& __rhs) + : _M_flags(__rhs._M_flags), _M_traits(__rhs._M_traits), + _M_automaton(__rhs._M_automaton) + { } + + /** + * @brief Move-constructs a basic regular expression. + * + * @param __rhs A @p regex object. + */ + basic_regex(const basic_regex&& __rhs) noexcept + : _M_flags(__rhs._M_flags), _M_traits(__rhs._M_traits), + _M_automaton(std::move(__rhs._M_automaton)) + { } + + /** + * @brief Constructs a basic regular expression from the string + * @p s interpreted according to the flags in @p f. + * + * @param __s A string containing a regular expression. + * @param __f Flags indicating the syntax rules and options. + * + * @throws regex_error if @p __s is not a valid regular expression. + */ + template + explicit + basic_regex(const std::basic_string<_Ch_type, _Ch_traits, + _Ch_alloc>& __s, + flag_type __f = ECMAScript) + : _M_flags(__f), + _M_automaton(__detail::__compile(__s.begin(), __s.end(), + _M_traits, _M_flags)) + { } + + /** + * @brief Constructs a basic regular expression from the range + * [first, last) interpreted according to the flags in @p f. + * + * @param __first The start of a range containing a valid regular + * expression. + * @param __last The end of a range containing a valid regular + * expression. + * @param __f The format flags of the regular expression. + * + * @throws regex_error if @p [__first, __last) is not a valid regular + * expression. + */ + template + basic_regex(_InputIterator __first, _InputIterator __last, + flag_type __f = ECMAScript) + : _M_flags(__f), + _M_automaton(__detail::__compile(__first, __last, _M_traits, _M_flags)) + { } + + /** + * @brief Constructs a basic regular expression from an initializer list. + * + * @param __l The initializer list. + * @param __f The format flags of the regular expression. + * + * @throws regex_error if @p __l is not a valid regular expression. + */ + basic_regex(initializer_list<_Ch_type> __l, + flag_type __f = ECMAScript) + : _M_flags(__f), + _M_automaton(__detail::__compile(__l.begin(), __l.end(), + _M_traits, _M_flags)) + { } + + /** + * @brief Destroys a basic regular expression. + */ + ~basic_regex() + { } + + /** + * @brief Assigns one regular expression to another. + */ + basic_regex& + operator=(const basic_regex& __rhs) + { return this->assign(__rhs); } + + /** + * @brief Move-assigns one regular expression to another. + */ + basic_regex& + operator=(basic_regex&& __rhs) noexcept + { return this->assign(std::move(__rhs)); } + + /** + * @brief Replaces a regular expression with a new one constructed from + * a C-style null-terminated string. + * + * @param __p A pointer to the start of a null-terminated C-style string + * containing a regular expression. + */ + basic_regex& + operator=(const _Ch_type* __p) + { return this->assign(__p, flags()); } + + /** + * @brief Replaces a regular expression with a new one constructed from + * a string. + * + * @param __s A pointer to a string containing a regular expression. + */ + template + basic_regex& + operator=(const basic_string<_Ch_type, _Ch_typeraits, _Alloc>& __s) + { return this->assign(__s, flags()); } + + // [7.8.3] assign + /** + * @brief the real assignment operator. + * + * @param __rhs Another regular expression object. + */ + basic_regex& + assign(const basic_regex& __rhs) + { + basic_regex __tmp(__rhs); + this->swap(__tmp); + return *this; + } + + /** + * @brief The move-assignment operator. + * + * @param __rhs Another regular expression object. + */ + basic_regex& + assign(basic_regex&& __rhs) noexcept + { + basic_regex __tmp(std::move(__rhs)); + this->swap(__tmp); + return *this; + } + + /** + * @brief Assigns a new regular expression to a regex object from a + * C-style null-terminated string containing a regular expression + * pattern. + * + * @param __p A pointer to a C-style null-terminated string containing + * a regular expression pattern. + * @param __flags Syntax option flags. + * + * @throws regex_error if __p does not contain a valid regular + * expression pattern interpreted according to @p __flags. If + * regex_error is thrown, *this remains unchanged. + */ + basic_regex& + assign(const _Ch_type* __p, flag_type __flags = ECMAScript) + { return this->assign(string_type(__p), __flags); } + + /** + * @brief Assigns a new regular expression to a regex object from a + * C-style string containing a regular expression pattern. + * + * @param __p A pointer to a C-style string containing a + * regular expression pattern. + * @param __len The length of the regular expression pattern string. + * @param __flags Syntax option flags. + * + * @throws regex_error if p does not contain a valid regular + * expression pattern interpreted according to @p __flags. If + * regex_error is thrown, *this remains unchanged. + */ + basic_regex& + assign(const _Ch_type* __p, std::size_t __len, flag_type __flags) + { return this->assign(string_type(__p, __len), __flags); } + + /** + * @brief Assigns a new regular expression to a regex object from a + * string containing a regular expression pattern. + * + * @param __s A string containing a regular expression pattern. + * @param __flags Syntax option flags. + * + * @throws regex_error if __s does not contain a valid regular + * expression pattern interpreted according to @p __flags. If + * regex_error is thrown, *this remains unchanged. + */ + template + basic_regex& + assign(const basic_string<_Ch_type, _Ch_typeraits, _Alloc>& __s, + flag_type __flags = ECMAScript) + { + basic_regex __tmp(__s, __flags); + this->swap(__tmp); + return *this; + } + + /** + * @brief Assigns a new regular expression to a regex object. + * + * @param __first The start of a range containing a valid regular + * expression. + * @param __last The end of a range containing a valid regular + * expression. + * @param __flags Syntax option flags. + * + * @throws regex_error if p does not contain a valid regular + * expression pattern interpreted according to @p __flags. If + * regex_error is thrown, the object remains unchanged. + */ + template + basic_regex& + assign(_InputIterator __first, _InputIterator __last, + flag_type __flags = ECMAScript) + { return this->assign(string_type(__first, __last), __flags); } + + /** + * @brief Assigns a new regular expression to a regex object. + * + * @param __l An initializer list representing a regular expression. + * @param __flags Syntax option flags. + * + * @throws regex_error if @p __l does not contain a valid + * regular expression pattern interpreted according to @p + * __flags. If regex_error is thrown, the object remains + * unchanged. + */ + basic_regex& + assign(initializer_list<_Ch_type> __l, flag_type __flags = ECMAScript) + { return this->assign(__l.begin(), __l.end(), __flags); } + + // [7.8.4] const operations + /** + * @brief Gets the number of marked subexpressions within the regular + * expression. + */ + unsigned int + mark_count() const + { return _M_automaton->_M_sub_count() - 1; } + + /** + * @brief Gets the flags used to construct the regular expression + * or in the last call to assign(). + */ + flag_type + flags() const + { return _M_flags; } + + // [7.8.5] locale + /** + * @brief Imbues the regular expression object with the given locale. + * + * @param __loc A locale. + */ + locale_type + imbue(locale_type __loc) + { return _M_traits.imbue(__loc); } + + /** + * @brief Gets the locale currently imbued in the regular expression + * object. + */ + locale_type + getloc() const + { return _M_traits.getloc(); } + + // [7.8.6] swap + /** + * @brief Swaps the contents of two regular expression objects. + * + * @param __rhs Another regular expression object. + */ + void + swap(basic_regex& __rhs) + { + std::swap(_M_flags, __rhs._M_flags); + std::swap(_M_traits, __rhs._M_traits); + std::swap(_M_automaton, __rhs._M_automaton); + } + +#ifdef _GLIBCXX_DEBUG + void + _M_dot(std::ostream& __ostr) + { _M_automaton->_M_dot(__ostr); } +#endif + + const __detail::_AutomatonPtr& + _M_get_automaton() const + { return _M_automaton; } + + protected: + flag_type _M_flags; + _Rx_traits _M_traits; + __detail::_AutomatonPtr _M_automaton; + }; + + /** @brief Standard regular expressions. */ + typedef basic_regex regex; + +#ifdef _GLIBCXX_USE_WCHAR_T + /** @brief Standard wide-character regular expressions. */ + typedef basic_regex wregex; +#endif + + + // [7.8.6] basic_regex swap + /** + * @brief Swaps the contents of two regular expression objects. + * @param __lhs First regular expression. + * @param __rhs Second regular expression. + */ + template + inline void + swap(basic_regex<_Ch_type, _Rx_traits>& __lhs, + basic_regex<_Ch_type, _Rx_traits>& __rhs) + { __lhs.swap(__rhs); } + + + // [7.9] Class template sub_match + /** + * A sequence of characters matched by a particular marked sub-expression. + * + * An object of this class is essentially a pair of iterators marking a + * matched subexpression within a regular expression pattern match. Such + * objects can be converted to and compared with std::basic_string objects + * of a similar base character type as the pattern matched by the regular + * expression. + * + * The iterators that make up the pair are the usual half-open interval + * referencing the actual original pattern matched. + */ + template + class sub_match : public std::pair<_BiIter, _BiIter> + { + typedef iterator_traits<_BiIter> __iter_traits; + + public: + typedef typename __iter_traits::value_type value_type; + typedef typename __iter_traits::difference_type difference_type; + typedef _BiIter iterator; + typedef std::basic_string string_type; + + bool matched; + + constexpr sub_match() : matched() { } + + /** + * Gets the length of the matching sequence. + */ + difference_type + length() const + { return this->matched ? std::distance(this->first, this->second) : 0; } + + /** + * @brief Gets the matching sequence as a string. + * + * @returns the matching sequence as a string. + * + * This is the implicit conversion operator. It is identical to the + * str() member function except that it will want to pop up in + * unexpected places and cause a great deal of confusion and cursing + * from the unwary. + */ + operator string_type() const + { + return this->matched + ? string_type(this->first, this->second) + : string_type(); + } + + /** + * @brief Gets the matching sequence as a string. + * + * @returns the matching sequence as a string. + */ + string_type + str() const + { + return this->matched + ? string_type(this->first, this->second) + : string_type(); + } + + /** + * @brief Compares this and another matched sequence. + * + * @param __s Another matched sequence to compare to this one. + * + * @retval <0 this matched sequence will collate before @p __s. + * @retval =0 this matched sequence is equivalent to @p __s. + * @retval <0 this matched sequence will collate after @p __s. + */ + int + compare(const sub_match& __s) const + { return this->str().compare(__s.str()); } + + /** + * @brief Compares this sub_match to a string. + * + * @param __s A string to compare to this sub_match. + * + * @retval <0 this matched sequence will collate before @p __s. + * @retval =0 this matched sequence is equivalent to @p __s. + * @retval <0 this matched sequence will collate after @p __s. + */ + int + compare(const string_type& __s) const + { return this->str().compare(__s); } + + /** + * @brief Compares this sub_match to a C-style string. + * + * @param __s A C-style string to compare to this sub_match. + * + * @retval <0 this matched sequence will collate before @p __s. + * @retval =0 this matched sequence is equivalent to @p __s. + * @retval <0 this matched sequence will collate after @p __s. + */ + int + compare(const value_type* __s) const + { return this->str().compare(__s); } + }; + + + /** @brief Standard regex submatch over a C-style null-terminated string. */ + typedef sub_match csub_match; + + /** @brief Standard regex submatch over a standard string. */ + typedef sub_match ssub_match; + +#ifdef _GLIBCXX_USE_WCHAR_T + /** @brief Regex submatch over a C-style null-terminated wide string. */ + typedef sub_match wcsub_match; + + /** @brief Regex submatch over a standard wide string. */ + typedef sub_match wssub_match; +#endif + + // [7.9.2] sub_match non-member operators + + /** + * @brief Tests the equivalence of two regular expression submatches. + * @param __lhs First regular expression submatch. + * @param __rhs Second regular expression submatch. + * @returns true if @a __lhs is equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator==(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) == 0; } + + /** + * @brief Tests the inequivalence of two regular expression submatches. + * @param __lhs First regular expression submatch. + * @param __rhs Second regular expression submatch. + * @returns true if @a __lhs is not equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator!=(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) != 0; } + + /** + * @brief Tests the ordering of two regular expression submatches. + * @param __lhs First regular expression submatch. + * @param __rhs Second regular expression submatch. + * @returns true if @a __lhs precedes @a __rhs, false otherwise. + */ + template + inline bool + operator<(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) < 0; } + + /** + * @brief Tests the ordering of two regular expression submatches. + * @param __lhs First regular expression submatch. + * @param __rhs Second regular expression submatch. + * @returns true if @a __lhs does not succeed @a __rhs, false otherwise. + */ + template + inline bool + operator<=(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) <= 0; } + + /** + * @brief Tests the ordering of two regular expression submatches. + * @param __lhs First regular expression submatch. + * @param __rhs Second regular expression submatch. + * @returns true if @a __lhs does not precede @a __rhs, false otherwise. + */ + template + inline bool + operator>=(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) >= 0; } + + /** + * @brief Tests the ordering of two regular expression submatches. + * @param __lhs First regular expression submatch. + * @param __rhs Second regular expression submatch. + * @returns true if @a __lhs succeeds @a __rhs, false otherwise. + */ + template + inline bool + operator>(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) > 0; } + + // Alias for sub_match'd string. + template + using __sub_match_string = basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>; + + /** + * @brief Tests the equivalence of a string and a regular expression + * submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs is equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator==(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __rhs.compare(__lhs.c_str()) == 0; } + + /** + * @brief Tests the inequivalence of a string and a regular expression + * submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs is not equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator!=(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs precedes @a __rhs, false otherwise. + */ + template + inline bool + operator<(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __rhs.compare(__lhs.c_str()) > 0; } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs succeeds @a __rhs, false otherwise. + */ + template + inline bool + operator>(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __rhs < __lhs; } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs does not precede @a __rhs, false otherwise. + */ + template + inline bool + operator>=(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return !(__lhs < __rhs); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs does not succeed @a __rhs, false otherwise. + */ + template + inline bool + operator<=(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return !(__rhs < __lhs); } + + /** + * @brief Tests the equivalence of a regular expression submatch and a + * string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs is equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator==(const sub_match<_Bi_iter>& __lhs, + const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs) + { return __lhs.compare(__rhs.c_str()) == 0; } + + /** + * @brief Tests the inequivalence of a regular expression submatch and a + * string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs is not equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator!=(const sub_match<_Bi_iter>& __lhs, + const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs precedes @a __rhs, false otherwise. + */ + template + inline bool + operator<(const sub_match<_Bi_iter>& __lhs, + const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs) + { return __lhs.compare(__rhs.c_str()) < 0; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs succeeds @a __rhs, false otherwise. + */ + template + inline bool + operator>(const sub_match<_Bi_iter>& __lhs, + const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs) + { return __rhs < __lhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs does not precede @a __rhs, false otherwise. + */ + template + inline bool + operator>=(const sub_match<_Bi_iter>& __lhs, + const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs) + { return !(__lhs < __rhs); } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs does not succeed @a __rhs, false otherwise. + */ + template + inline bool + operator<=(const sub_match<_Bi_iter>& __lhs, + const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __rhs) + { return !(__rhs < __lhs); } + + /** + * @brief Tests the equivalence of a C string and a regular expression + * submatch. + * @param __lhs A C string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs is equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator==(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __rhs.compare(__lhs) == 0; } + + /** + * @brief Tests the inequivalence of an iterator value and a regular + * expression submatch. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs is not equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator!=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs precedes @a __rhs, false otherwise. + */ + template + inline bool + operator<(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __rhs.compare(__lhs) > 0; } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs succeeds @a __rhs, false otherwise. + */ + template + inline bool + operator>(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __rhs < __lhs; } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs does not precede @a __rhs, false otherwise. + */ + template + inline bool + operator>=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return !(__lhs < __rhs); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs does not succeed @a __rhs, false otherwise. + */ + template + inline bool + operator<=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return !(__rhs < __lhs); } + + /** + * @brief Tests the equivalence of a regular expression submatch and a + * string. + * @param __lhs A regular expression submatch. + * @param __rhs A pointer to a string? + * @returns true if @a __lhs is equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator==(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return __lhs.compare(__rhs) == 0; } + + /** + * @brief Tests the inequivalence of a regular expression submatch and a + * string. + * @param __lhs A regular expression submatch. + * @param __rhs A pointer to a string. + * @returns true if @a __lhs is not equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator!=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs precedes @a __rhs, false otherwise. + */ + template + inline bool + operator<(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return __lhs.compare(__rhs) < 0; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs succeeds @a __rhs, false otherwise. + */ + template + inline bool + operator>(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return __rhs < __lhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs does not precede @a __rhs, false otherwise. + */ + template + inline bool + operator>=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return !(__lhs < __rhs); } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A string. + * @returns true if @a __lhs does not succeed @a __rhs, false otherwise. + */ + template + inline bool + operator<=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return !(__rhs < __lhs); } + + /** + * @brief Tests the equivalence of a string and a regular expression + * submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs is equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator==(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { + typedef typename sub_match<_Bi_iter>::string_type string_type; + return __rhs.compare(string_type(1, __lhs)) == 0; + } + + /** + * @brief Tests the inequivalence of a string and a regular expression + * submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs is not equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator!=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs precedes @a __rhs, false otherwise. + */ + template + inline bool + operator<(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { + typedef typename sub_match<_Bi_iter>::string_type string_type; + return __rhs.compare(string_type(1, __lhs)) > 0; + } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs succeeds @a __rhs, false otherwise. + */ + template + inline bool + operator>(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __rhs < __lhs; } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs does not precede @a __rhs, false otherwise. + */ + template + inline bool + operator>=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return !(__lhs < __rhs); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param __lhs A string. + * @param __rhs A regular expression submatch. + * @returns true if @a __lhs does not succeed @a __rhs, false otherwise. + */ + template + inline bool + operator<=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return !(__rhs < __lhs); } + + /** + * @brief Tests the equivalence of a regular expression submatch and a + * string. + * @param __lhs A regular expression submatch. + * @param __rhs A const string reference. + * @returns true if @a __lhs is equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator==(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { + typedef typename sub_match<_Bi_iter>::string_type string_type; + return __lhs.compare(string_type(1, __rhs)) == 0; + } + + /** + * @brief Tests the inequivalence of a regular expression submatch and a + * string. + * @param __lhs A regular expression submatch. + * @param __rhs A const string reference. + * @returns true if @a __lhs is not equivalent to @a __rhs, false otherwise. + */ + template + inline bool + operator!=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A const string reference. + * @returns true if @a __lhs precedes @a __rhs, false otherwise. + */ + template + inline bool + operator<(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { + typedef typename sub_match<_Bi_iter>::string_type string_type; + return __lhs.compare(string_type(1, __rhs)) < 0; + } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A const string reference. + * @returns true if @a __lhs succeeds @a __rhs, false otherwise. + */ + template + inline bool + operator>(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return __rhs < __lhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A const string reference. + * @returns true if @a __lhs does not precede @a __rhs, false otherwise. + */ + template + inline bool + operator>=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return !(__lhs < __rhs); } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param __lhs A regular expression submatch. + * @param __rhs A const string reference. + * @returns true if @a __lhs does not succeed @a __rhs, false otherwise. + */ + template + inline bool + operator<=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return !(__rhs < __lhs); } + + /** + * @brief Inserts a matched string into an output stream. + * + * @param __os The output stream. + * @param __m A submatch string. + * + * @returns the output stream with the submatch string inserted. + */ + template + inline + basic_ostream<_Ch_type, _Ch_traits>& + operator<<(basic_ostream<_Ch_type, _Ch_traits>& __os, + const sub_match<_Bi_iter>& __m) + { return __os << __m.str(); } + + // [7.10] Class template match_results + + /* + * Special sub_match object representing an unmatched sub-expression. + */ + template + inline const sub_match<_Bi_iter>& + __unmatched_sub() + { + static const sub_match<_Bi_iter> __unmatched = sub_match<_Bi_iter>(); + return __unmatched; + } + + /** + * @brief The results of a match or search operation. + * + * A collection of character sequences representing the result of a regular + * expression match. Storage for the collection is allocated and freed as + * necessary by the member functions of class template match_results. + * + * This class satisfies the Sequence requirements, with the exception that + * only the operations defined for a const-qualified Sequence are supported. + * + * The sub_match object stored at index 0 represents sub-expression 0, i.e. + * the whole match. In this case the %sub_match member matched is always true. + * The sub_match object stored at index n denotes what matched the marked + * sub-expression n within the matched expression. If the sub-expression n + * participated in a regular expression match then the %sub_match member + * matched evaluates to true, and members first and second denote the range + * of characters [first, second) which formed that match. Otherwise matched + * is false, and members first and second point to the end of the sequence + * that was searched. + * + * @nosubgrouping + */ + template > > + class match_results + : private std::vector, _Alloc> + { + private: + /* + * The vector base is empty if this does not represent a successful match. + * Otherwise it contains n+3 elements where n is the number of marked + * sub-expressions: + * [0] entire match + * [1] 1st marked subexpression + * ... + * [n] nth marked subexpression + * [n+1] prefix + * [n+2] suffix + */ + typedef std::vector, _Alloc> _Base_type; + typedef std::iterator_traits<_Bi_iter> __iter_traits; + typedef regex_constants::match_flag_type match_flag_type; + + public: + /** + * @name 10.? Public Types + */ + //@{ + typedef _Alloc allocator_type; + typedef sub_match<_Bi_iter> value_type; + typedef const value_type& const_reference; + typedef const_reference reference; + typedef typename _Base_type::const_iterator const_iterator; + typedef const_iterator iterator; + typedef typename __iter_traits::difference_type difference_type; + typedef typename __iter_traits::value_type char_type; + typedef typename allocator_traits<_Alloc>::size_type size_type; + + + typedef std::basic_string string_type; + //@} + + public: + /** + * @name 28.10.1 Construction, Copying, and Destruction + */ + //@{ + + /** + * @brief Constructs a default %match_results container. + * @post size() returns 0 and str() returns an empty string. + */ + explicit + match_results(const _Alloc& __a = _Alloc()) + : _Base_type(__a) + { } + + /** + * @brief Copy constructs a %match_results. + */ + match_results(const match_results& __rhs) + : _Base_type(__rhs) + { } + + /** + * @brief Move constructs a %match_results. + */ + match_results(match_results&& __rhs) noexcept + : _Base_type(std::move(__rhs)) + { } + + /** + * @brief Assigns rhs to *this. + */ + match_results& + operator=(const match_results& __rhs) + { + match_results(__rhs).swap(*this); + return *this; + } + + /** + * @brief Move-assigns rhs to *this. + */ + match_results& + operator=(match_results&& __rhs) + { + match_results(std::move(__rhs)).swap(*this); + return *this; + } + + /** + * @brief Destroys a %match_results object. + */ + ~match_results() + { } + + //@} + + // 28.10.2, state: + /** + * @brief Indicates if the %match_results is ready. + * @retval true The object has a fully-established result state. + * @retval false The object is not ready. + */ + bool ready() const { return !_Base_type::empty(); } + + /** + * @name 28.10.2 Size + */ + //@{ + + /** + * @brief Gets the number of matches and submatches. + * + * The number of matches for a given regular expression will be either 0 + * if there was no match or mark_count() + 1 if a match was successful. + * Some matches may be empty. + * + * @returns the number of matches found. + */ + size_type + size() const + { + size_type __size = _Base_type::size(); + return (__size && _Base_type::operator[](0).matched) ? __size - 2 : 0; + } + + size_type + max_size() const + { return _Base_type::max_size(); } + + /** + * @brief Indicates if the %match_results contains no results. + * @retval true The %match_results object is empty. + * @retval false The %match_results object is not empty. + */ + bool + empty() const + { return size() == 0; } + + //@} + + /** + * @name 10.3 Element Access + */ + //@{ + + /** + * @brief Gets the length of the indicated submatch. + * @param __sub indicates the submatch. + * @pre ready() == true + * + * This function returns the length of the indicated submatch, or the + * length of the entire match if @p __sub is zero (the default). + */ + difference_type + length(size_type __sub = 0) const + { return (*this)[__sub].length(); } + + /** + * @brief Gets the offset of the beginning of the indicated submatch. + * @param __sub indicates the submatch. + * @pre ready() == true + * + * This function returns the offset from the beginning of the target + * sequence to the beginning of the submatch, unless the value of @p __sub + * is zero (the default), in which case this function returns the offset + * from the beginning of the target sequence to the beginning of the + * match. + * + * Returns -1 if @p __sub is out of range. + */ + difference_type + position(size_type __sub = 0) const + { + return __sub < size() ? std::distance(this->prefix().first, + (*this)[__sub].first) : -1; + } + + /** + * @brief Gets the match or submatch converted to a string type. + * @param __sub indicates the submatch. + * @pre ready() == true + * + * This function gets the submatch (or match, if @p __sub is + * zero) extracted from the target range and converted to the + * associated string type. + */ + string_type + str(size_type __sub = 0) const + { return (*this)[__sub].str(); } + + /** + * @brief Gets a %sub_match reference for the match or submatch. + * @param __sub indicates the submatch. + * @pre ready() == true + * + * This function gets a reference to the indicated submatch, or + * the entire match if @p __sub is zero. + * + * If @p __sub >= size() then this function returns a %sub_match with a + * special value indicating no submatch. + */ + const_reference + operator[](size_type __sub) const + { + _GLIBCXX_DEBUG_ASSERT( ready() ); + return __sub < size() + ? _Base_type::operator[](__sub) + : __unmatched_sub<_Bi_iter>(); + } + + /** + * @brief Gets a %sub_match representing the match prefix. + * @pre ready() == true + * + * This function gets a reference to a %sub_match object representing the + * part of the target range between the start of the target range and the + * start of the match. + */ + const_reference + prefix() const + { + _GLIBCXX_DEBUG_ASSERT( ready() ); + return !empty() + ? _Base_type::operator[](_Base_type::size() - 2) + : __unmatched_sub<_Bi_iter>(); + } + + /** + * @brief Gets a %sub_match representing the match suffix. + * @pre ready() == true + * + * This function gets a reference to a %sub_match object representing the + * part of the target range between the end of the match and the end of + * the target range. + */ + const_reference + suffix() const + { + _GLIBCXX_DEBUG_ASSERT( ready() ); + return !empty() + ? _Base_type::operator[](_Base_type::size() - 1) + : __unmatched_sub<_Bi_iter>(); + } + + /** + * @brief Gets an iterator to the start of the %sub_match collection. + */ + const_iterator + begin() const + { return _Base_type::begin(); } + + /** + * @brief Gets an iterator to the start of the %sub_match collection. + */ + const_iterator + cbegin() const + { return _Base_type::cbegin(); } + + /** + * @brief Gets an iterator to one-past-the-end of the collection. + */ + const_iterator + end() const + { return !empty() ? _Base_type::end() - 2 : _Base_type::end(); } + + /** + * @brief Gets an iterator to one-past-the-end of the collection. + */ + const_iterator + cend() const + { return end(); } + + //@} + + /** + * @name 10.4 Formatting + * + * These functions perform formatted substitution of the matched + * character sequences into their target. The format specifiers and + * escape sequences accepted by these functions are determined by + * their @p flags parameter as documented above. + */ + //@{ + + /** + * @pre ready() == true + * @todo Implement this function. + */ + template + _Out_iter + format(_Out_iter __out, const char_type* __fmt_first, + const char_type* __fmt_last, + match_flag_type __flags = regex_constants::format_default) const + { return __out; } + + /** + * @pre ready() == true + */ + template + _Out_iter + format(_Out_iter __out, const basic_string& __fmt, + match_flag_type __flags = regex_constants::format_default) const + { + return format(__out, __fmt.data(), __fmt.data() + __fmt.size(), + __flags); + } + + /** + * @pre ready() == true + */ + template + basic_string + format(const basic_string& __fmt, + match_flag_type __flags = regex_constants::format_default) const + { + basic_string __result; + format(std::back_inserter(__result), __fmt, __flags); + return __result; + } + + /** + * @pre ready() == true + */ + string_type + format(const char_type* __fmt, + match_flag_type __flags = regex_constants::format_default) const + { + string_type __result; + format(std::back_inserter(__result), + __fmt + char_traits::length(__fmt), + __flags); + return __result; + } + + //@} + + /** + * @name 10.5 Allocator + */ + //@{ + + /** + * @brief Gets a copy of the allocator. + */ + allocator_type + get_allocator() const + { return _Base_type::get_allocator(); } + + //@} + + /** + * @name 10.6 Swap + */ + //@{ + + /** + * @brief Swaps the contents of two match_results. + */ + void + swap(match_results& __that) + { _Base_type::swap(__that); } + //@} + + private: + friend class __detail::_SpecializedResults<_Bi_iter, _Alloc>; + }; + + typedef match_results cmatch; + typedef match_results smatch; +#ifdef _GLIBCXX_USE_WCHAR_T + typedef match_results wcmatch; + typedef match_results wsmatch; +#endif + + // match_results comparisons + /** + * @brief Compares two match_results for equality. + * @returns true if the two objects refer to the same match, + * false otherwise. + */ + template + inline bool + operator==(const match_results<_Bi_iter, _Alloc>& __m1, + const match_results<_Bi_iter, _Alloc>& __m2) + { + if (__m1.ready() != __m2.ready()) + return false; + if (!__m1.ready()) // both are not ready + return true; + if (__m1.empty() != __m2.empty()) + return false; + if (__m1.empty()) // both are empty + return true; + return __m1.prefix() == __m2.prefix() + && __m1.size() == __m2.size() + && std::equal(__m1.begin(), __m1.end(), __m2.begin()) + && __m1.suffix() == __m2.suffix(); + } + + /** + * @brief Compares two match_results for inequality. + * @returns true if the two objects do not refer to the same match, + * false otherwise. + */ + template + inline bool + operator!=(const match_results<_Bi_iter, _Alloc>& __m1, + const match_results<_Bi_iter, _Alloc>& __m2) + { return !(__m1 == __m2); } + + // [7.10.6] match_results swap + /** + * @brief Swaps two match results. + * @param __lhs A match result. + * @param __rhs A match result. + * + * The contents of the two match_results objects are swapped. + */ + template + inline void + swap(match_results<_Bi_iter, _Alloc>& __lhs, + match_results<_Bi_iter, _Alloc>& __rhs) + { __lhs.swap(__rhs); } + + // [7.11.2] Function template regex_match + /** + * @name Matching, Searching, and Replacing + */ + //@{ + + /** + * @brief Determines if there is a match between the regular expression @p e + * and all of the character sequence [first, last). + * + * @param __s Start of the character sequence to match. + * @param __e One-past-the-end of the character sequence to match. + * @param __m The match results. + * @param __re The regular expression. + * @param __flags Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + * + * @todo Implement this function. + */ + template + bool + regex_match(_Bi_iter __s, + _Bi_iter __e, + match_results<_Bi_iter, _Alloc>& __m, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { + __detail::_AutomatonPtr __a = __re._M_get_automaton(); + __detail::_Automaton::_SizeT __sz = __a->_M_sub_count(); + __detail::_SpecializedCursor<_Bi_iter> __cs(__s, __e); + __detail::_SpecializedResults<_Bi_iter, _Alloc> __r(__sz, __cs, __m); + __detail::_Grep_matcher __matcher(__cs, __r, __a, __flags); + return __m[0].matched; + } + + /** + * @brief Indicates if there is a match between the regular expression @p e + * and all of the character sequence [first, last). + * + * @param __first Beginning of the character sequence to match. + * @param __last One-past-the-end of the character sequence to match. + * @param __re The regular expression. + * @param __flags Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + bool + regex_match(_Bi_iter __first, _Bi_iter __last, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { + match_results<_Bi_iter> __what; + return regex_match(__first, __last, __what, __re, __flags); + } + + /** + * @brief Determines if there is a match between the regular expression @p e + * and a C-style null-terminated string. + * + * @param __s The C-style null-terminated string to match. + * @param __m The match results. + * @param __re The regular expression. + * @param __f Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_match(const _Ch_type* __s, + match_results& __m, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_match(__s, __s + _Rx_traits::length(__s), __m, __re, __f); } + + /** + * @brief Determines if there is a match between the regular expression @p e + * and a string. + * + * @param __s The string to match. + * @param __m The match results. + * @param __re The regular expression. + * @param __flags Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_match(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s, + match_results::const_iterator, _Alloc>& __m, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { return regex_match(__s.begin(), __s.end(), __m, __re, __flags); } + + /** + * @brief Indicates if there is a match between the regular expression @p e + * and a C-style null-terminated string. + * + * @param __s The C-style null-terminated string to match. + * @param __re The regular expression. + * @param __f Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_match(const _Ch_type* __s, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_match(__s, __s + _Rx_traits::length(__s), __re, __f); } + + /** + * @brief Indicates if there is a match between the regular expression @p e + * and a string. + * + * @param __s [IN] The string to match. + * @param __re [IN] The regular expression. + * @param __flags [IN] Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_match(const basic_string<_Ch_type, _Ch_traits, _Str_allocator>& __s, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { return regex_match(__s.begin(), __s.end(), __re, __flags); } + + // [7.11.3] Function template regex_search + /** + * Searches for a regular expression within a range. + * @param __first [IN] The start of the string to search. + * @param __last [IN] One-past-the-end of the string to search. + * @param __m [OUT] The match results. + * @param __re [IN] The regular expression to search for. + * @param __flags [IN] Search policy flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string, the content of %m is + * undefined. + * + * @throws an exception of type regex_error. + * + * @todo Implement this function. + */ + template + inline bool + regex_search(_Bi_iter __first, _Bi_iter __last, + match_results<_Bi_iter, _Alloc>& __m, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { return false; } + + /** + * Searches for a regular expression within a range. + * @param __first [IN] The start of the string to search. + * @param __last [IN] One-past-the-end of the string to search. + * @param __re [IN] The regular expression to search for. + * @param __flags [IN] Search policy flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string. + * @doctodo + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(_Bi_iter __first, _Bi_iter __last, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { + match_results<_Bi_iter> __what; + return regex_search(__first, __last, __what, __re, __flags); + } + + /** + * @brief Searches for a regular expression within a C-string. + * @param __s [IN] A C-string to search for the regex. + * @param __m [OUT] The set of regex matches. + * @param __e [IN] The regex to search for in @p s. + * @param __f [IN] The search flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string, the content of %m is + * undefined. + * @doctodo + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(const _Ch_type* __s, + match_results& __m, + const basic_regex<_Ch_type, _Rx_traits>& __e, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_search(__s, __s + _Rx_traits::length(__s), __m, __e, __f); } + + /** + * @brief Searches for a regular expression within a C-string. + * @param __s [IN] The C-string to search. + * @param __e [IN] The regular expression to search for. + * @param __f [IN] Search policy flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string. + * @doctodo + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(const _Ch_type* __s, + const basic_regex<_Ch_type, _Rx_traits>& __e, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_search(__s, __s + _Rx_traits::length(__s), __e, __f); } + + /** + * @brief Searches for a regular expression within a string. + * @param __s [IN] The string to search. + * @param __e [IN] The regular expression to search for. + * @param __flags [IN] Search policy flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string. + * @doctodo + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(const basic_string<_Ch_type, _Ch_traits, + _String_allocator>& __s, + const basic_regex<_Ch_type, _Rx_traits>& __e, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { return regex_search(__s.begin(), __s.end(), __e, __flags); } + + /** + * @brief Searches for a regular expression within a string. + * @param __s [IN] A C++ string to search for the regex. + * @param __m [OUT] The set of regex matches. + * @param __e [IN] The regex to search for in @p s. + * @param __f [IN] The search flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string, the content of %m is + * undefined. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s, + match_results::const_iterator, _Alloc>& __m, + const basic_regex<_Ch_type, _Rx_traits>& __e, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_search(__s.begin(), __s.end(), __m, __e, __f); } + + // std [28.11.4] Function template regex_replace + /** + * @doctodo + * @param __out + * @param __first + * @param __last + * @param __e + * @param __fmt + * @param __flags + * + * @returns out + * @throws an exception of type regex_error. + * + * @todo Implement this function. + */ + template + inline _Out_iter + regex_replace(_Out_iter __out, _Bi_iter __first, _Bi_iter __last, + const basic_regex<_Ch_type, _Rx_traits>& __e, + const basic_string<_Ch_type>& __fmt, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { return __out; } + + /** + * @doctodo + * @param __s + * @param __e + * @param __fmt + * @param __flags + * + * @returns a copy of string @p s with replacements. + * + * @throws an exception of type regex_error. + */ + template + inline basic_string<_Ch_type> + regex_replace(const basic_string<_Ch_type>& __s, + const basic_regex<_Ch_type, _Rx_traits>& __e, + const basic_string<_Ch_type>& __fmt, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { + basic_string<_Ch_type> __result; + regex_replace(std::back_inserter(__result), + __s.begin(), __s.end(), __e, __fmt, __flags); + return __result; + } + + //@} + + // std [28.12] Class template regex_iterator + /** + * An iterator adaptor that will provide repeated calls of regex_search over + * a range until no more matches remain. + */ + template::value_type, + typename _Rx_traits = regex_traits<_Ch_type> > + class regex_iterator + { + public: + typedef basic_regex<_Ch_type, _Rx_traits> regex_type; + typedef match_results<_Bi_iter> value_type; + typedef std::ptrdiff_t difference_type; + typedef const value_type* pointer; + typedef const value_type& reference; + typedef std::forward_iterator_tag iterator_category; + + /** + * @brief Provides a singular iterator, useful for indicating + * one-past-the-end of a range. + * @todo Implement this function. + * @doctodo + */ + regex_iterator(); + + /** + * Constructs a %regex_iterator... + * @param __a [IN] The start of a text range to search. + * @param __b [IN] One-past-the-end of the text range to search. + * @param __re [IN] The regular expression to match. + * @param __m [IN] Policy flags for match rules. + * @todo Implement this function. + * @doctodo + */ + regex_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re, + regex_constants::match_flag_type __m + = regex_constants::match_default); + + /** + * Copy constructs a %regex_iterator. + * @todo Implement this function. + * @doctodo + */ + regex_iterator(const regex_iterator& __rhs); + + /** + * @todo Implement this function. + * @doctodo + */ + regex_iterator& + operator=(const regex_iterator& __rhs); + + /** + * @todo Implement this function. + * @doctodo + */ + bool + operator==(const regex_iterator& __rhs); + + /** + * @todo Implement this function. + * @doctodo + */ + bool + operator!=(const regex_iterator& __rhs); + + /** + * @todo Implement this function. + * @doctodo + */ + const value_type& + operator*(); + + /** + * @todo Implement this function. + * @doctodo + */ + const value_type* + operator->(); + + /** + * @todo Implement this function. + * @doctodo + */ + regex_iterator& + operator++(); + + /** + * @todo Implement this function. + * @doctodo + */ + regex_iterator + operator++(int); + + private: + // these members are shown for exposition only: + _Bi_iter begin; + _Bi_iter end; + const regex_type* pregex; + regex_constants::match_flag_type flags; + match_results<_Bi_iter> match; + }; + + typedef regex_iterator cregex_iterator; + typedef regex_iterator sregex_iterator; +#ifdef _GLIBCXX_USE_WCHAR_T + typedef regex_iterator wcregex_iterator; + typedef regex_iterator wsregex_iterator; +#endif + + // [7.12.2] Class template regex_token_iterator + /** + * Iterates over submatches in a range (or @a splits a text string). + * + * The purpose of this iterator is to enumerate all, or all specified, + * matches of a regular expression within a text range. The dereferenced + * value of an iterator of this class is a std::sub_match object. + */ + template::value_type, + typename _Rx_traits = regex_traits<_Ch_type> > + class regex_token_iterator + { + public: + typedef basic_regex<_Ch_type, _Rx_traits> regex_type; + typedef sub_match<_Bi_iter> value_type; + typedef std::ptrdiff_t difference_type; + typedef const value_type* pointer; + typedef const value_type& reference; + typedef std::forward_iterator_tag iterator_category; + + public: + /** + * @brief Default constructs a %regex_token_iterator. + * @todo Implement this function. + * + * A default-constructed %regex_token_iterator is a singular iterator + * that will compare equal to the one-past-the-end value for any + * iterator of the same type. + */ + regex_token_iterator(); + + /** + * Constructs a %regex_token_iterator... + * @param __a [IN] The start of the text to search. + * @param __b [IN] One-past-the-end of the text to search. + * @param __re [IN] The regular expression to search for. + * @param __submatch [IN] Which submatch to return. There are some + * special values for this parameter: + * - -1 each enumerated subexpression does NOT + * match the regular expression (aka field + * splitting) + * - 0 the entire string matching the + * subexpression is returned for each match + * within the text. + * - >0 enumerates only the indicated + * subexpression from a match within the text. + * @param __m [IN] Policy flags for match rules. + * + * @todo Implement this function. + * @doctodo + */ + regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re, + int __submatch = 0, + regex_constants::match_flag_type __m + = regex_constants::match_default); + + /** + * Constructs a %regex_token_iterator... + * @param __a [IN] The start of the text to search. + * @param __b [IN] One-past-the-end of the text to search. + * @param __re [IN] The regular expression to search for. + * @param __submatches [IN] A list of subexpressions to return for each + * regular expression match within the text. + * @param __m [IN] Policy flags for match rules. + * + * @todo Implement this function. + * @doctodo + */ + regex_token_iterator(_Bi_iter __a, _Bi_iter __b, + const regex_type& __re, + const std::vector& __submatches, + regex_constants::match_flag_type __m + = regex_constants::match_default); + + /** + * Constructs a %regex_token_iterator... + * @param __a [IN] The start of the text to search. + * @param __b [IN] One-past-the-end of the text to search. + * @param __re [IN] The regular expression to search for. + * @param __submatches [IN] A list of subexpressions to return for each + * regular expression match within the text. + * @param __m [IN] Policy flags for match rules. + + * @todo Implement this function. + * @doctodo + */ + template + regex_token_iterator(_Bi_iter __a, _Bi_iter __b, + const regex_type& __re, + const int (&__submatches)[_Nm], + regex_constants::match_flag_type __m + = regex_constants::match_default); + + /** + * @brief Copy constructs a %regex_token_iterator. + * @param __rhs [IN] A %regex_token_iterator to copy. + * @todo Implement this function. + */ + regex_token_iterator(const regex_token_iterator& __rhs); + + /** + * @brief Assigns a %regex_token_iterator to another. + * @param __rhs [IN] A %regex_token_iterator to copy. + * @todo Implement this function. + */ + regex_token_iterator& + operator=(const regex_token_iterator& __rhs); + + /** + * @brief Compares a %regex_token_iterator to another for equality. + * @todo Implement this function. + */ + bool + operator==(const regex_token_iterator& __rhs); + + /** + * @brief Compares a %regex_token_iterator to another for inequality. + * @todo Implement this function. + */ + bool + operator!=(const regex_token_iterator& __rhs); + + /** + * @brief Dereferences a %regex_token_iterator. + * @todo Implement this function. + */ + const value_type& + operator*(); + + /** + * @brief Selects a %regex_token_iterator member. + * @todo Implement this function. + */ + const value_type* + operator->(); + + /** + * @brief Increments a %regex_token_iterator. + * @todo Implement this function. + */ + regex_token_iterator& + operator++(); + + /** + * @brief Postincrements a %regex_token_iterator. + * @todo Implement this function. + */ + regex_token_iterator + operator++(int); + + private: // data members for exposition only: + typedef regex_iterator<_Bi_iter, _Ch_type, _Rx_traits> position_iterator; + + position_iterator __position; + const value_type* __result; + value_type __suffix; + std::size_t __n; + std::vector __subs; + }; + + /** @brief Token iterator for C-style NULL-terminated strings. */ + typedef regex_token_iterator cregex_token_iterator; + + /** @brief Token iterator for standard strings. */ + typedef regex_token_iterator sregex_token_iterator; + +#ifdef _GLIBCXX_USE_WCHAR_T + /** @brief Token iterator for C-style NULL-terminated wide strings. */ + typedef regex_token_iterator wcregex_token_iterator; + + /** @brief Token iterator for standard wide-character strings. */ + typedef regex_token_iterator wsregex_token_iterator; +#endif + + //@} // group regex +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_compiler.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_compiler.h new file mode 100644 index 0000000..dae0948 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_compiler.h @@ -0,0 +1,1110 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/regex_compiler.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{regex} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __detail +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup regex-detail + * @{ + */ + + /// Base class for scanner. + struct _Scanner_base + { + typedef unsigned int _StateT; + + static constexpr _StateT _S_state_at_start = 1 << 0; + static constexpr _StateT _S_state_in_brace = 1 << 2; + static constexpr _StateT _S_state_in_bracket = 1 << 3; + + virtual ~_Scanner_base() { }; + }; + + /** + * @brief struct _Scanner. Scans an input range for regex tokens. + * + * The %_Scanner class interprets the regular expression pattern in + * the input range passed to its constructor as a sequence of parse + * tokens passed to the regular expression compiler. The sequence + * of tokens provided depends on the flag settings passed to the + * constructor: different regular expression grammars will interpret + * the same input pattern in syntactically different ways. + */ + template + class _Scanner: public _Scanner_base + { + public: + typedef _InputIterator _IteratorT; + typedef typename std::iterator_traits<_IteratorT>::value_type _CharT; + typedef std::basic_string<_CharT> _StringT; + typedef regex_constants::syntax_option_type _FlagT; + typedef const std::ctype<_CharT> _CtypeT; + + /// Token types returned from the scanner. + enum _TokenT + { + _S_token_anychar, + _S_token_backref, + _S_token_bracket_begin, + _S_token_bracket_end, + _S_token_inverse_class, + _S_token_char_class_name, + _S_token_closure0, + _S_token_closure1, + _S_token_collelem_multi, + _S_token_collelem_single, + _S_token_collsymbol, + _S_token_comma, + _S_token_dash, + _S_token_dup_count, + _S_token_eof, + _S_token_equiv_class_name, + _S_token_interval_begin, + _S_token_interval_end, + _S_token_line_begin, + _S_token_line_end, + _S_token_opt, + _S_token_or, + _S_token_ord_char, + _S_token_quoted_char, + _S_token_subexpr_begin, + _S_token_subexpr_end, + _S_token_word_begin, + _S_token_word_end, + _S_token_unknown + }; + + _Scanner(_IteratorT __begin, _IteratorT __end, _FlagT __flags, + std::locale __loc) + : _M_current(__begin) , _M_end(__end) , _M_flags(__flags), + _M_ctype(std::use_facet<_CtypeT>(__loc)), _M_state(_S_state_at_start) + { _M_advance(); } + + void + _M_advance(); + + _TokenT + _M_token() const + { return _M_curToken; } + + const _StringT& + _M_value() const + { return _M_curValue; } + +#ifdef _GLIBCXX_DEBUG + std::ostream& + _M_print(std::ostream&); +#endif + + private: + void + _M_eat_escape(); + + void + _M_scan_in_brace(); + + void + _M_scan_in_bracket(); + + void + _M_eat_charclass(); + + void + _M_eat_equivclass(); + + void + _M_eat_collsymbol(); + + _IteratorT _M_current; + _IteratorT _M_end; + _FlagT _M_flags; + _CtypeT& _M_ctype; + _TokenT _M_curToken; + _StringT _M_curValue; + _StateT _M_state; + }; + + template + void + _Scanner<_InputIterator>:: + _M_advance() + { + if (_M_current == _M_end) + { + _M_curToken = _S_token_eof; + return; + } + + _CharT __c = *_M_current; + if (_M_state & _S_state_in_bracket) + { + _M_scan_in_bracket(); + return; + } + if (_M_state & _S_state_in_brace) + { + _M_scan_in_brace(); + return; + } +#if 0 + // TODO: re-enable line anchors when _M_assertion is implemented. + // See PR libstdc++/47724 + else if (_M_state & _S_state_at_start && __c == _M_ctype.widen('^')) + { + _M_curToken = _S_token_line_begin; + ++_M_current; + return; + } + else if (__c == _M_ctype.widen('$')) + { + _M_curToken = _S_token_line_end; + ++_M_current; + return; + } +#endif + else if (__c == _M_ctype.widen('.')) + { + _M_curToken = _S_token_anychar; + ++_M_current; + return; + } + else if (__c == _M_ctype.widen('*')) + { + _M_curToken = _S_token_closure0; + ++_M_current; + return; + } + else if (__c == _M_ctype.widen('+')) + { + _M_curToken = _S_token_closure1; + ++_M_current; + return; + } + else if (__c == _M_ctype.widen('|')) + { + _M_curToken = _S_token_or; + ++_M_current; + return; + } + else if (__c == _M_ctype.widen('[')) + { + _M_curToken = _S_token_bracket_begin; + _M_state |= (_S_state_in_bracket | _S_state_at_start); + ++_M_current; + return; + } + else if (__c == _M_ctype.widen('\\')) + { + _M_eat_escape(); + return; + } + else if (!(_M_flags & (regex_constants::basic | regex_constants::grep))) + { + if (__c == _M_ctype.widen('(')) + { + _M_curToken = _S_token_subexpr_begin; + ++_M_current; + return; + } + else if (__c == _M_ctype.widen(')')) + { + _M_curToken = _S_token_subexpr_end; + ++_M_current; + return; + } + else if (__c == _M_ctype.widen('{')) + { + _M_curToken = _S_token_interval_begin; + _M_state |= _S_state_in_brace; + ++_M_current; + return; + } + } + + _M_curToken = _S_token_ord_char; + _M_curValue.assign(1, __c); + ++_M_current; + } + + + template + void + _Scanner<_InputIterator>:: + _M_scan_in_brace() + { + if (_M_ctype.is(_CtypeT::digit, *_M_current)) + { + _M_curToken = _S_token_dup_count; + _M_curValue.assign(1, *_M_current); + ++_M_current; + while (_M_current != _M_end + && _M_ctype.is(_CtypeT::digit, *_M_current)) + { + _M_curValue += *_M_current; + ++_M_current; + } + return; + } + else if (*_M_current == _M_ctype.widen(',')) + { + _M_curToken = _S_token_comma; + ++_M_current; + return; + } + if (_M_flags & (regex_constants::basic | regex_constants::grep)) + { + if (*_M_current == _M_ctype.widen('\\')) + _M_eat_escape(); + } + else + { + if (*_M_current == _M_ctype.widen('}')) + { + _M_curToken = _S_token_interval_end; + _M_state &= ~_S_state_in_brace; + ++_M_current; + return; + } + } + } + + template + void + _Scanner<_InputIterator>:: + _M_scan_in_bracket() + { + if (_M_state & _S_state_at_start && *_M_current == _M_ctype.widen('^')) + { + _M_curToken = _S_token_inverse_class; + _M_state &= ~_S_state_at_start; + ++_M_current; + return; + } + else if (*_M_current == _M_ctype.widen('[')) + { + ++_M_current; + if (_M_current == _M_end) + { + _M_curToken = _S_token_eof; + return; + } + + if (*_M_current == _M_ctype.widen('.')) + { + _M_curToken = _S_token_collsymbol; + _M_eat_collsymbol(); + return; + } + else if (*_M_current == _M_ctype.widen(':')) + { + _M_curToken = _S_token_char_class_name; + _M_eat_charclass(); + return; + } + else if (*_M_current == _M_ctype.widen('=')) + { + _M_curToken = _S_token_equiv_class_name; + _M_eat_equivclass(); + return; + } + } + else if (*_M_current == _M_ctype.widen('-')) + { + _M_curToken = _S_token_dash; + ++_M_current; + return; + } + else if (*_M_current == _M_ctype.widen(']')) + { + if (!(_M_flags & regex_constants::ECMAScript) + || !(_M_state & _S_state_at_start)) + { + // special case: only if _not_ chr first after + // '[' or '[^' and if not ECMAscript + _M_curToken = _S_token_bracket_end; + ++_M_current; + return; + } + } + _M_curToken = _S_token_collelem_single; + _M_curValue.assign(1, *_M_current); + ++_M_current; + } + + template + void + _Scanner<_InputIterator>:: + _M_eat_escape() + { + ++_M_current; + if (_M_current == _M_end) + { + _M_curToken = _S_token_eof; + return; + } + _CharT __c = *_M_current; + ++_M_current; + + if (__c == _M_ctype.widen('(')) + { + if (!(_M_flags & (regex_constants::basic | regex_constants::grep))) + { + _M_curToken = _S_token_ord_char; + _M_curValue.assign(1, __c); + } + else + _M_curToken = _S_token_subexpr_begin; + } + else if (__c == _M_ctype.widen(')')) + { + if (!(_M_flags & (regex_constants::basic | regex_constants::grep))) + { + _M_curToken = _S_token_ord_char; + _M_curValue.assign(1, __c); + } + else + _M_curToken = _S_token_subexpr_end; + } + else if (__c == _M_ctype.widen('{')) + { + if (!(_M_flags & (regex_constants::basic | regex_constants::grep))) + { + _M_curToken = _S_token_ord_char; + _M_curValue.assign(1, __c); + } + else + { + _M_curToken = _S_token_interval_begin; + _M_state |= _S_state_in_brace; + } + } + else if (__c == _M_ctype.widen('}')) + { + if (!(_M_flags & (regex_constants::basic | regex_constants::grep))) + { + _M_curToken = _S_token_ord_char; + _M_curValue.assign(1, __c); + } + else + { + if (!(_M_state && _S_state_in_brace)) + __throw_regex_error(regex_constants::error_badbrace); + _M_state &= ~_S_state_in_brace; + _M_curToken = _S_token_interval_end; + } + } + else if (__c == _M_ctype.widen('x')) + { + ++_M_current; + if (_M_current == _M_end) + { + _M_curToken = _S_token_eof; + return; + } + if (_M_ctype.is(_CtypeT::digit, *_M_current)) + { + _M_curValue.assign(1, *_M_current); + ++_M_current; + if (_M_current == _M_end) + { + _M_curToken = _S_token_eof; + return; + } + if (_M_ctype.is(_CtypeT::digit, *_M_current)) + { + _M_curValue += *_M_current; + ++_M_current; + return; + } + } + } + else if (__c == _M_ctype.widen('^') + || __c == _M_ctype.widen('.') + || __c == _M_ctype.widen('*') + || __c == _M_ctype.widen('$') + || __c == _M_ctype.widen('\\')) + { + _M_curToken = _S_token_ord_char; + _M_curValue.assign(1, __c); + } + else if (_M_ctype.is(_CtypeT::digit, __c)) + { + _M_curToken = _S_token_backref; + _M_curValue.assign(1, __c); + } + else + __throw_regex_error(regex_constants::error_escape); + } + + + // Eats a character class or throwns an exception. + // current point to ':' delimiter on entry, char after ']' on return + template + void + _Scanner<_InputIterator>:: + _M_eat_charclass() + { + ++_M_current; // skip ':' + if (_M_current == _M_end) + __throw_regex_error(regex_constants::error_ctype); + for (_M_curValue.clear(); + _M_current != _M_end && *_M_current != _M_ctype.widen(':'); + ++_M_current) + _M_curValue += *_M_current; + if (_M_current == _M_end) + __throw_regex_error(regex_constants::error_ctype); + ++_M_current; // skip ':' + if (*_M_current != _M_ctype.widen(']')) + __throw_regex_error(regex_constants::error_ctype); + ++_M_current; // skip ']' + } + + + template + void + _Scanner<_InputIterator>:: + _M_eat_equivclass() + { + ++_M_current; // skip '=' + if (_M_current == _M_end) + __throw_regex_error(regex_constants::error_collate); + for (_M_curValue.clear(); + _M_current != _M_end && *_M_current != _M_ctype.widen('='); + ++_M_current) + _M_curValue += *_M_current; + if (_M_current == _M_end) + __throw_regex_error(regex_constants::error_collate); + ++_M_current; // skip '=' + if (*_M_current != _M_ctype.widen(']')) + __throw_regex_error(regex_constants::error_collate); + ++_M_current; // skip ']' + } + + + template + void + _Scanner<_InputIterator>:: + _M_eat_collsymbol() + { + ++_M_current; // skip '.' + if (_M_current == _M_end) + __throw_regex_error(regex_constants::error_collate); + for (_M_curValue.clear(); + _M_current != _M_end && *_M_current != _M_ctype.widen('.'); + ++_M_current) + _M_curValue += *_M_current; + if (_M_current == _M_end) + __throw_regex_error(regex_constants::error_collate); + ++_M_current; // skip '.' + if (*_M_current != _M_ctype.widen(']')) + __throw_regex_error(regex_constants::error_collate); + ++_M_current; // skip ']' + } + +#ifdef _GLIBCXX_DEBUG + template + std::ostream& + _Scanner<_InputIterator>:: + _M_print(std::ostream& ostr) + { + switch (_M_curToken) + { + case _S_token_anychar: + ostr << "any-character\n"; + break; + case _S_token_backref: + ostr << "backref\n"; + break; + case _S_token_bracket_begin: + ostr << "bracket-begin\n"; + break; + case _S_token_bracket_end: + ostr << "bracket-end\n"; + break; + case _S_token_char_class_name: + ostr << "char-class-name \"" << _M_curValue << "\"\n"; + break; + case _S_token_closure0: + ostr << "closure0\n"; + break; + case _S_token_closure1: + ostr << "closure1\n"; + break; + case _S_token_collelem_multi: + ostr << "coll-elem-multi \"" << _M_curValue << "\"\n"; + break; + case _S_token_collelem_single: + ostr << "coll-elem-single \"" << _M_curValue << "\"\n"; + break; + case _S_token_collsymbol: + ostr << "collsymbol \"" << _M_curValue << "\"\n"; + break; + case _S_token_comma: + ostr << "comma\n"; + break; + case _S_token_dash: + ostr << "dash\n"; + break; + case _S_token_dup_count: + ostr << "dup count: " << _M_curValue << "\n"; + break; + case _S_token_eof: + ostr << "EOF\n"; + break; + case _S_token_equiv_class_name: + ostr << "equiv-class-name \"" << _M_curValue << "\"\n"; + break; + case _S_token_interval_begin: + ostr << "interval begin\n"; + break; + case _S_token_interval_end: + ostr << "interval end\n"; + break; + case _S_token_line_begin: + ostr << "line begin\n"; + break; + case _S_token_line_end: + ostr << "line end\n"; + break; + case _S_token_opt: + ostr << "opt\n"; + break; + case _S_token_or: + ostr << "or\n"; + break; + case _S_token_ord_char: + ostr << "ordinary character: \"" << _M_value() << "\"\n"; + break; + case _S_token_quoted_char: + ostr << "quoted char\n"; + break; + case _S_token_subexpr_begin: + ostr << "subexpr begin\n"; + break; + case _S_token_subexpr_end: + ostr << "subexpr end\n"; + break; + case _S_token_word_begin: + ostr << "word begin\n"; + break; + case _S_token_word_end: + ostr << "word end\n"; + break; + case _S_token_unknown: + ostr << "-- unknown token --\n"; + break; + } + return ostr; + } +#endif + + /// Builds an NFA from an input iterator interval. + template + class _Compiler + { + public: + typedef _InIter _IterT; + typedef typename std::iterator_traits<_InIter>::value_type _CharT; + typedef std::basic_string<_CharT> _StringT; + typedef regex_constants::syntax_option_type _FlagT; + + _Compiler(const _InIter& __b, const _InIter& __e, + _TraitsT& __traits, _FlagT __flags); + + const _Nfa& + _M_nfa() const + { return _M_state_store; } + + private: + typedef _Scanner<_InIter> _ScannerT; + typedef typename _ScannerT::_TokenT _TokenT; + typedef std::stack<_StateSeq, std::vector<_StateSeq> > _StackT; + typedef _RangeMatcher<_InIter, _TraitsT> _RMatcherT; + + // accepts a specific token or returns false. + bool + _M_match_token(_TokenT __token); + + void + _M_disjunction(); + + bool + _M_alternative(); + + bool + _M_term(); + + bool + _M_assertion(); + + bool + _M_quantifier(); + + bool + _M_atom(); + + bool + _M_bracket_expression(); + + bool + _M_bracket_list(_RMatcherT& __matcher); + + bool + _M_follow_list(_RMatcherT& __matcher); + + bool + _M_follow_list2(_RMatcherT& __matcher); + + bool + _M_expression_term(_RMatcherT& __matcher); + + bool + _M_range_expression(_RMatcherT& __matcher); + + bool + _M_start_range(_RMatcherT& __matcher); + + bool + _M_collating_symbol(_RMatcherT& __matcher); + + bool + _M_equivalence_class(_RMatcherT& __matcher); + + bool + _M_character_class(_RMatcherT& __matcher); + + int + _M_cur_int_value(int __radix); + + _TraitsT& _M_traits; + _ScannerT _M_scanner; + _StringT _M_cur_value; + _Nfa _M_state_store; + _StackT _M_stack; + }; + + template + _Compiler<_InIter, _TraitsT>:: + _Compiler(const _InIter& __b, const _InIter& __e, _TraitsT& __traits, + _Compiler<_InIter, _TraitsT>::_FlagT __flags) + : _M_traits(__traits), _M_scanner(__b, __e, __flags, _M_traits.getloc()), + _M_state_store(__flags) + { + typedef _StartTagger<_InIter, _TraitsT> _Start; + typedef _EndTagger<_InIter, _TraitsT> _End; + + _StateSeq __r(_M_state_store, + _M_state_store._M_insert_subexpr_begin(_Start(0))); + _M_disjunction(); + if (!_M_stack.empty()) + { + __r._M_append(_M_stack.top()); + _M_stack.pop(); + } + __r._M_append(_M_state_store._M_insert_subexpr_end(0, _End(0))); + __r._M_append(_M_state_store._M_insert_accept()); + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_match_token(_Compiler<_InIter, _TraitsT>::_TokenT token) + { + if (token == _M_scanner._M_token()) + { + _M_cur_value = _M_scanner._M_value(); + _M_scanner._M_advance(); + return true; + } + return false; + } + + template + void + _Compiler<_InIter, _TraitsT>:: + _M_disjunction() + { + this->_M_alternative(); + if (_M_match_token(_ScannerT::_S_token_or)) + { + _StateSeq __alt1 = _M_stack.top(); _M_stack.pop(); + this->_M_disjunction(); + _StateSeq __alt2 = _M_stack.top(); _M_stack.pop(); + _M_stack.push(_StateSeq(__alt1, __alt2)); + } + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_alternative() + { + if (this->_M_term()) + { + _StateSeq __re = _M_stack.top(); _M_stack.pop(); + this->_M_alternative(); + if (!_M_stack.empty()) + { + __re._M_append(_M_stack.top()); + _M_stack.pop(); + } + _M_stack.push(__re); + return true; + } + return false; + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_term() + { + if (this->_M_assertion()) + return true; + if (this->_M_atom()) + { + this->_M_quantifier(); + return true; + } + return false; + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_assertion() + { + if (_M_match_token(_ScannerT::_S_token_line_begin)) + { + // __m.push(_Matcher::_S_opcode_line_begin); + return true; + } + if (_M_match_token(_ScannerT::_S_token_line_end)) + { + // __m.push(_Matcher::_S_opcode_line_end); + return true; + } + if (_M_match_token(_ScannerT::_S_token_word_begin)) + { + // __m.push(_Matcher::_S_opcode_word_begin); + return true; + } + if (_M_match_token(_ScannerT::_S_token_word_end)) + { + // __m.push(_Matcher::_S_opcode_word_end); + return true; + } + return false; + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_quantifier() + { + if (_M_match_token(_ScannerT::_S_token_closure0)) + { + if (_M_stack.empty()) + __throw_regex_error(regex_constants::error_badrepeat); + _StateSeq __r(_M_stack.top(), -1); + __r._M_append(__r._M_front()); + _M_stack.pop(); + _M_stack.push(__r); + return true; + } + if (_M_match_token(_ScannerT::_S_token_closure1)) + { + if (_M_stack.empty()) + __throw_regex_error(regex_constants::error_badrepeat); + _StateSeq __r(_M_state_store, + _M_state_store. + _M_insert_alt(_S_invalid_state_id, + _M_stack.top()._M_front())); + _M_stack.top()._M_append(__r); + return true; + } + if (_M_match_token(_ScannerT::_S_token_opt)) + { + if (_M_stack.empty()) + __throw_regex_error(regex_constants::error_badrepeat); + _StateSeq __r(_M_stack.top(), -1); + _M_stack.pop(); + _M_stack.push(__r); + return true; + } + if (_M_match_token(_ScannerT::_S_token_interval_begin)) + { + if (_M_stack.empty()) + __throw_regex_error(regex_constants::error_badrepeat); + if (!_M_match_token(_ScannerT::_S_token_dup_count)) + __throw_regex_error(regex_constants::error_badbrace); + _StateSeq __r(_M_stack.top()); + int __min_rep = _M_cur_int_value(10); + for (int __i = 1; __i < __min_rep; ++__i) + _M_stack.top()._M_append(__r._M_clone()); + if (_M_match_token(_ScannerT::_S_token_comma)) + if (_M_match_token(_ScannerT::_S_token_dup_count)) + { + int __n = _M_cur_int_value(10) - __min_rep; + if (__n < 0) + __throw_regex_error(regex_constants::error_badbrace); + for (int __i = 0; __i < __n; ++__i) + { + _StateSeq __r(_M_state_store, + _M_state_store. + _M_insert_alt(_S_invalid_state_id, + _M_stack.top()._M_front())); + _M_stack.top()._M_append(__r); + } + } + else + { + _StateSeq __r(_M_stack.top(), -1); + __r._M_push_back(__r._M_front()); + _M_stack.pop(); + _M_stack.push(__r); + } + if (!_M_match_token(_ScannerT::_S_token_interval_end)) + __throw_regex_error(regex_constants::error_brace); + return true; + } + return false; + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_atom() + { + typedef _CharMatcher<_InIter, _TraitsT> _CMatcher; + typedef _StartTagger<_InIter, _TraitsT> _Start; + typedef _EndTagger<_InIter, _TraitsT> _End; + + if (_M_match_token(_ScannerT::_S_token_anychar)) + { + _M_stack.push(_StateSeq(_M_state_store, + _M_state_store._M_insert_matcher + (_AnyMatcher))); + return true; + } + if (_M_match_token(_ScannerT::_S_token_ord_char)) + { + _M_stack.push(_StateSeq(_M_state_store, + _M_state_store._M_insert_matcher + (_CMatcher(_M_cur_value[0], _M_traits)))); + return true; + } + if (_M_match_token(_ScannerT::_S_token_quoted_char)) + { + // note that in the ECMA grammar, this case covers backrefs. + _M_stack.push(_StateSeq(_M_state_store, + _M_state_store._M_insert_matcher + (_CMatcher(_M_cur_value[0], _M_traits)))); + return true; + } + if (_M_match_token(_ScannerT::_S_token_backref)) + { + // __m.push(_Matcher::_S_opcode_ordchar, _M_cur_value); + return true; + } + if (_M_match_token(_ScannerT::_S_token_subexpr_begin)) + { + int __mark = _M_state_store._M_sub_count(); + _StateSeq __r(_M_state_store, + _M_state_store. + _M_insert_subexpr_begin(_Start(__mark))); + this->_M_disjunction(); + if (!_M_match_token(_ScannerT::_S_token_subexpr_end)) + __throw_regex_error(regex_constants::error_paren); + if (!_M_stack.empty()) + { + __r._M_append(_M_stack.top()); + _M_stack.pop(); + } + __r._M_append(_M_state_store._M_insert_subexpr_end + (__mark, _End(__mark))); + _M_stack.push(__r); + return true; + } + return _M_bracket_expression(); + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_bracket_expression() + { + if (_M_match_token(_ScannerT::_S_token_bracket_begin)) + { + _RMatcherT __matcher(_M_match_token(_ScannerT::_S_token_line_begin), + _M_traits); + if (!_M_bracket_list(__matcher) + || !_M_match_token(_ScannerT::_S_token_bracket_end)) + __throw_regex_error(regex_constants::error_brack); + _M_stack.push(_StateSeq(_M_state_store, + _M_state_store._M_insert_matcher(__matcher))); + return true; + } + return false; + } + + // If the dash is the last character in the bracket expression, it is not + // special. + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_bracket_list(_RMatcherT& __matcher) + { + if (_M_follow_list(__matcher)) + { + if (_M_match_token(_ScannerT::_S_token_dash)) + __matcher._M_add_char(_M_cur_value[0]); + return true; + } + return false; + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_follow_list(_RMatcherT& __matcher) + { return _M_expression_term(__matcher) && _M_follow_list2(__matcher); } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_follow_list2(_RMatcherT& __matcher) + { + if (_M_expression_term(__matcher)) + return _M_follow_list2(__matcher); + return true; + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_expression_term(_RMatcherT& __matcher) + { + return (_M_collating_symbol(__matcher) + || _M_character_class(__matcher) + || _M_equivalence_class(__matcher) + || (_M_start_range(__matcher) + && _M_range_expression(__matcher))); + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_range_expression(_RMatcherT& __matcher) + { + if (!_M_collating_symbol(__matcher)) + if (!_M_match_token(_ScannerT::_S_token_dash)) + __throw_regex_error(regex_constants::error_range); + __matcher._M_make_range(); + return true; + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_start_range(_RMatcherT& __matcher) + { return _M_match_token(_ScannerT::_S_token_dash); } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_collating_symbol(_RMatcherT& __matcher) + { + if (_M_match_token(_ScannerT::_S_token_collelem_single)) + { + __matcher._M_add_char(_M_cur_value[0]); + return true; + } + if (_M_match_token(_ScannerT::_S_token_collsymbol)) + { + __matcher._M_add_collating_element(_M_cur_value); + return true; + } + return false; + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_equivalence_class(_RMatcherT& __matcher) + { + if (_M_match_token(_ScannerT::_S_token_equiv_class_name)) + { + __matcher._M_add_equivalence_class(_M_cur_value); + return true; + } + return false; + } + + template + bool + _Compiler<_InIter, _TraitsT>:: + _M_character_class(_RMatcherT& __matcher) + { + if (_M_match_token(_ScannerT::_S_token_char_class_name)) + { + __matcher._M_add_character_class(_M_cur_value); + return true; + } + return false; + } + + template + int + _Compiler<_InIter, _TraitsT>:: + _M_cur_int_value(int __radix) + { + int __v = 0; + for (typename _StringT::size_type __i = 0; + __i < _M_cur_value.length(); ++__i) + __v =__v * __radix + _M_traits.value(_M_cur_value[__i], __radix); + return __v; + } + + template + _AutomatonPtr + __compile(const _InIter& __b, const _InIter& __e, _TraitsT& __t, + regex_constants::syntax_option_type __f) + { return _AutomatonPtr(new _Nfa(_Compiler<_InIter, _TraitsT>(__b, __e, __t, + __f)._M_nfa())); } + + //@} regex-detail +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __detail +} // namespace std diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_constants.h new file mode 100644 index 0000000..aea2a5b --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_constants.h @@ -0,0 +1,310 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/regex_constants.h + * @brief Constant definitions for the std regex library. + * + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{regex} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +/** + * @defgroup regex Regular Expressions + * + * A facility for performing regular expression pattern matching. + * @{ + */ + +/** + * @namespace std::regex_constants + * @brief ISO C++-0x entities sub namespace for regex. + */ +namespace regex_constants +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @name 5.1 Regular Expression Syntax Options + */ + //@{ + enum __syntax_option + { + _S_icase, + _S_nosubs, + _S_optimize, + _S_collate, + _S_ECMAScript, + _S_basic, + _S_extended, + _S_awk, + _S_grep, + _S_egrep, + _S_syntax_last + }; + + /** + * @brief This is a bitmask type indicating how to interpret the regex. + * + * The @c syntax_option_type is implementation defined but it is valid to + * perform bitwise operations on these values and expect the right thing to + * happen. + * + * A valid value of type syntax_option_type shall have exactly one of the + * elements @c ECMAScript, @c basic, @c extended, @c awk, @c grep, @c egrep + * %set. + */ + typedef unsigned int syntax_option_type; + + /** + * Specifies that the matching of regular expressions against a character + * sequence shall be performed without regard to case. + */ + constexpr syntax_option_type icase = 1 << _S_icase; + + /** + * Specifies that when a regular expression is matched against a character + * container sequence, no sub-expression matches are to be stored in the + * supplied match_results structure. + */ + constexpr syntax_option_type nosubs = 1 << _S_nosubs; + + /** + * Specifies that the regular expression engine should pay more attention to + * the speed with which regular expressions are matched, and less to the + * speed with which regular expression objects are constructed. Otherwise + * it has no detectable effect on the program output. + */ + constexpr syntax_option_type optimize = 1 << _S_optimize; + + /** + * Specifies that character ranges of the form [a-b] should be locale + * sensitive. + */ + constexpr syntax_option_type collate = 1 << _S_collate; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by ECMAScript in ECMA-262 [Ecma International, ECMAScript + * Language Specification, Standard Ecma-262, third edition, 1999], as + * modified in section [28.13]. This grammar is similar to that defined + * in the PERL scripting language but extended with elements found in the + * POSIX regular expression grammar. + */ + constexpr syntax_option_type ECMAScript = 1 << _S_ECMAScript; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX basic regular expressions in IEEE Std 1003.1-2001, + * Portable Operating System Interface (POSIX), Base Definitions and + * Headers, Section 9, Regular Expressions [IEEE, Information Technology -- + * Portable Operating System Interface (POSIX), IEEE Standard 1003.1-2001]. + */ + constexpr syntax_option_type basic = 1 << _S_basic; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX extended regular expressions in IEEE Std 1003.1-2001, + * Portable Operating System Interface (POSIX), Base Definitions and Headers, + * Section 9, Regular Expressions. + */ + constexpr syntax_option_type extended = 1 << _S_extended; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX utility awk in IEEE Std 1003.1-2001. This option is + * identical to syntax_option_type extended, except that C-style escape + * sequences are supported. These sequences are: + * \\\\, \\a, \\b, \\f, \\n, \\r, \\t , \\v, \\', ', + * and \\ddd (where ddd is one, two, or three octal digits). + */ + constexpr syntax_option_type awk = 1 << _S_awk; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX utility grep in IEEE Std 1003.1-2001. This option is + * identical to syntax_option_type basic, except that newlines are treated + * as whitespace. + */ + constexpr syntax_option_type grep = 1 << _S_grep; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX utility grep when given the -E option in + * IEEE Std 1003.1-2001. This option is identical to syntax_option_type + * extended, except that newlines are treated as whitespace. + */ + constexpr syntax_option_type egrep = 1 << _S_egrep; + + //@} + + /** + * @name 5.2 Matching Rules + * + * Matching a regular expression against a sequence of characters [first, + * last) proceeds according to the rules of the grammar specified for the + * regular expression object, modified according to the effects listed + * below for any bitmask elements set. + * + */ + //@{ + + enum __match_flag + { + _S_not_bol, + _S_not_eol, + _S_not_bow, + _S_not_eow, + _S_any, + _S_not_null, + _S_continuous, + _S_prev_avail, + _S_sed, + _S_no_copy, + _S_first_only, + _S_match_flag_last + }; + + /** + * @brief This is a bitmask type indicating regex matching rules. + * + * The @c match_flag_type is implementation defined but it is valid to + * perform bitwise operations on these values and expect the right thing to + * happen. + */ + typedef std::bitset<_S_match_flag_last> match_flag_type; + + /** + * The default matching rules. + */ + constexpr match_flag_type match_default = 0; + + /** + * The first character in the sequence [first, last) is treated as though it + * is not at the beginning of a line, so the character (^) in the regular + * expression shall not match [first, first). + */ + constexpr match_flag_type match_not_bol = 1 << _S_not_bol; + + /** + * The last character in the sequence [first, last) is treated as though it + * is not at the end of a line, so the character ($) in the regular + * expression shall not match [last, last). + */ + constexpr match_flag_type match_not_eol = 1 << _S_not_eol; + + /** + * The expression \\b is not matched against the sub-sequence + * [first,first). + */ + constexpr match_flag_type match_not_bow = 1 << _S_not_bow; + + /** + * The expression \\b should not be matched against the sub-sequence + * [last,last). + */ + constexpr match_flag_type match_not_eow = 1 << _S_not_eow; + + /** + * If more than one match is possible then any match is an acceptable + * result. + */ + constexpr match_flag_type match_any = 1 << _S_any; + + /** + * The expression does not match an empty sequence. + */ + constexpr match_flag_type match_not_null = 1 << _S_not_null; + + /** + * The expression only matches a sub-sequence that begins at first . + */ + constexpr match_flag_type match_continuous = 1 << _S_continuous; + + /** + * --first is a valid iterator position. When this flag is set then the + * flags match_not_bol and match_not_bow are ignored by the regular + * expression algorithms 28.11 and iterators 28.12. + */ + constexpr match_flag_type match_prev_avail = 1 << _S_prev_avail; + + /** + * When a regular expression match is to be replaced by a new string, the + * new string is constructed using the rules used by the ECMAScript replace + * function in ECMA- 262 [Ecma International, ECMAScript Language + * Specification, Standard Ecma-262, third edition, 1999], part 15.5.4.11 + * String.prototype.replace. In addition, during search and replace + * operations all non-overlapping occurrences of the regular expression + * are located and replaced, and sections of the input that did not match + * the expression are copied unchanged to the output string. + * + * Format strings (from ECMA-262 [15.5.4.11]): + * @li $$ The dollar-sign itself ($) + * @li $& The matched substring. + * @li $` The portion of @a string that precedes the matched substring. + * This would be match_results::prefix(). + * @li $' The portion of @a string that follows the matched substring. + * This would be match_results::suffix(). + * @li $n The nth capture, where n is in [1,9] and $n is not followed by a + * decimal digit. If n <= match_results::size() and the nth capture + * is undefined, use the empty string instead. If n > + * match_results::size(), the result is implementation-defined. + * @li $nn The nnth capture, where nn is a two-digit decimal number on + * [01, 99]. If nn <= match_results::size() and the nth capture is + * undefined, use the empty string instead. If + * nn > match_results::size(), the result is implementation-defined. + */ + constexpr match_flag_type format_default = 0; + + /** + * When a regular expression match is to be replaced by a new string, the + * new string is constructed using the rules used by the POSIX sed utility + * in IEEE Std 1003.1- 2001 [IEEE, Information Technology -- Portable + * Operating System Interface (POSIX), IEEE Standard 1003.1-2001]. + */ + constexpr match_flag_type format_sed = 1 << _S_sed; + + /** + * During a search and replace operation, sections of the character + * container sequence being searched that do not match the regular + * expression shall not be copied to the output string. + */ + constexpr match_flag_type format_no_copy = 1 << _S_no_copy; + + /** + * When specified during a search and replace operation, only the first + * occurrence of the regular expression shall be replaced. + */ + constexpr match_flag_type format_first_only = 1 << _S_first_only; + + //@} + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace regex_constants + +/* @} */ // group regex +} // namespace std + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_cursor.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_cursor.h new file mode 100644 index 0000000..44e9d1d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_cursor.h @@ -0,0 +1,100 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/regex_cursor.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{regex} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __detail +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup regex-detail Base and Implementation Classes + * @ingroup regex + * @{ + */ + + /// ABC for pattern matching + struct _PatternCursor + { + virtual ~_PatternCursor() { }; + virtual void _M_next() = 0; + virtual bool _M_at_end() const = 0; + }; + + /// Provides a cursor into the specific target string. + template + class _SpecializedCursor + : public _PatternCursor + { + public: + _SpecializedCursor(const _FwdIterT& __b, const _FwdIterT __e) + : _M_b(__b), _M_c(__b), _M_e(__e) + { } + + typename std::iterator_traits<_FwdIterT>::value_type + _M_current() const + { return *_M_c; } + + void + _M_next() + { ++_M_c; } + + _FwdIterT + _M_pos() const + { return _M_c; } + + const _FwdIterT& + _M_begin() const + { return _M_b; } + + const _FwdIterT& + _M_end() const + { return _M_e; } + + bool + _M_at_end() const + { return _M_c == _M_e; } + + private: + _FwdIterT _M_b; + _FwdIterT _M_c; + _FwdIterT _M_e; + }; + + // Helper function to create a cursor specialized for an iterator class. + template + inline _SpecializedCursor<_FwdIterT> + __cursor(const _FwdIterT& __b, const _FwdIterT __e) + { return _SpecializedCursor<_FwdIterT>(__b, __e); } + + //@} regex-detail +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __detail +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_error.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_error.h new file mode 100644 index 0000000..310b202 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_error.h @@ -0,0 +1,167 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/regex_error.h + * @brief Error and exception objects for the std regex library. + * + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{regex} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +/** + * @addtogroup regex + * @{ + */ + +namespace regex_constants +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @name 5.3 Error Types + */ + //@{ + + enum error_type + { + _S_error_collate, + _S_error_ctype, + _S_error_escape, + _S_error_backref, + _S_error_brack, + _S_error_paren, + _S_error_brace, + _S_error_badbrace, + _S_error_range, + _S_error_space, + _S_error_badrepeat, + _S_error_complexity, + _S_error_stack, + _S_error_last + }; + + /** The expression contained an invalid collating element name. */ + constexpr error_type error_collate(_S_error_collate); + + /** The expression contained an invalid character class name. */ + constexpr error_type error_ctype(_S_error_ctype); + + /** + * The expression contained an invalid escaped character, or a trailing + * escape. + */ + constexpr error_type error_escape(_S_error_escape); + + /** The expression contained an invalid back reference. */ + constexpr error_type error_backref(_S_error_backref); + + /** The expression contained mismatched [ and ]. */ + constexpr error_type error_brack(_S_error_brack); + + /** The expression contained mismatched ( and ). */ + constexpr error_type error_paren(_S_error_paren); + + /** The expression contained mismatched { and } */ + constexpr error_type error_brace(_S_error_brace); + + /** The expression contained an invalid range in a {} expression. */ + constexpr error_type error_badbrace(_S_error_badbrace); + + /** + * The expression contained an invalid character range, + * such as [b-a] in most encodings. + */ + constexpr error_type error_range(_S_error_range); + + /** + * There was insufficient memory to convert the expression into a + * finite state machine. + */ + constexpr error_type error_space(_S_error_space); + + /** + * One of *?+{ was not preceded by a valid regular expression. + */ + constexpr error_type error_badrepeat(_S_error_badrepeat); + + /** + * The complexity of an attempted match against a regular expression + * exceeded a pre-set level. + */ + constexpr error_type error_complexity(_S_error_complexity); + + /** + * There was insufficient memory to determine whether the + * regular expression could match the specified character sequence. + */ + constexpr error_type error_stack(_S_error_stack); + + //@} +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace regex_constants + +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // [7.8] Class regex_error + /** + * @brief A regular expression exception class. + * @ingroup exceptions + * + * The regular expression library throws objects of this class on error. + */ + class regex_error : public std::runtime_error + { + regex_constants::error_type _M_code; + + public: + /** + * @brief Constructs a regex_error object. + * + * @param __ecode the regex error code. + */ + explicit + regex_error(regex_constants::error_type __ecode); + + virtual ~regex_error() throw(); + + /** + * @brief Gets the regex error code. + * + * @returns the regex error code. + */ + regex_constants::error_type + code() const + { return _M_code; } + }; + + //@} // group regex + + void + __throw_regex_error(regex_constants::error_type __ecode); + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_grep_matcher.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_grep_matcher.h new file mode 100644 index 0000000..8397fc3 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_grep_matcher.h @@ -0,0 +1,138 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/regex_grep_matcher.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{regex} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + class sub_match; + + template + class match_results; + +_GLIBCXX_END_NAMESPACE_VERSION + +namespace __detail +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup regex-detail Base and Implementation Classes + * @ingroup regex + * @{ + */ + + /// A _Results facade specialized for wrapping a templated match_results. + template + class _SpecializedResults + : public _Results + { + public: + _SpecializedResults(const _Automaton::_SizeT __size, + const _SpecializedCursor<_FwdIterT>& __cursor, + match_results<_FwdIterT, _Alloc>& __m); + + void + _M_set_pos(int __i, int __j, const _PatternCursor& __pc); + + void + _M_set_matched(int __i, bool __is_matched) + { _M_results.at(__i).matched = __is_matched; } + + private: + match_results<_FwdIterT, _Alloc>& _M_results; + }; + + template + _SpecializedResults<_FwdIterT, _Alloc>:: + _SpecializedResults(const _Automaton::_SizeT __size, + const _SpecializedCursor<_FwdIterT>& __cursor, + match_results<_FwdIterT, _Alloc>& __m) + : _M_results(__m) + { + _M_results.clear(); + _M_results.reserve(__size + 2); + _M_results.resize(__size); + typename match_results<_FwdIterT, _Alloc>::value_type __sm; + __sm.first = __sm.second = __cursor._M_begin(); + _M_results.push_back(__sm); + __sm.first = __sm.second = __cursor._M_end(); + _M_results.push_back(__sm); + } + + template + void + _SpecializedResults<_FwdIterT, _Alloc>:: + _M_set_pos(int __i, int __j, const _PatternCursor& __pc) + { + typedef const _SpecializedCursor<_FwdIterT>& _CursorT; + _CursorT __c = static_cast<_CursorT>(__pc); + if (__j == 0) + _M_results.at(__i).first = __c._M_pos(); + else + _M_results.at(__i).second = __c._M_pos()+1; + } + + /// A stack of states used in evaluating the NFA. + typedef std::stack<_StateIdT, std::vector<_StateIdT> > _StateStack; + + /// Executes a regular expression NFA/DFA over a range using a + /// variant of the parallel execution algorithm featured in the grep + /// utility, modified to use Laurikari tags. + class _Grep_matcher + { + public: + _Grep_matcher(_PatternCursor& __p, + _Results& __r, + const _AutomatonPtr& __automaton, + regex_constants::match_flag_type __flags); + + private: + _StateSet + _M_e_closure(_StateIdT __i); + + _StateSet + _M_e_closure(const _StateSet& __s); + + _StateSet + _M_e_closure(_StateStack& __stack, const _StateSet& __s); + + const std::shared_ptr<_Nfa> _M_nfa; + _PatternCursor& _M_pattern; + _Results& _M_results; + }; + + //@} regex-detail +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __detail +} // namespace std + +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_grep_matcher.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_grep_matcher.tcc new file mode 100644 index 0000000..11382d5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_grep_matcher.tcc @@ -0,0 +1,179 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/regex_grep_matcher.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{regex} + */ + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace +{ + // A stack of states used in evaluating the NFA. + typedef std::stack + > _StateStack; + + // Obtains the next state set given the current state set __s and the current + // input character. + inline std::__detail::_StateSet + __move(const std::__detail::_PatternCursor& __p, + const std::__detail::_Nfa& __nfa, + const std::__detail::_StateSet& __s) + { + std::__detail::_StateSet __m; + for (std::__detail::_StateSet::const_iterator __i = __s.begin(); + __i != __s.end(); ++__i) + { + if (*__i == std::__detail::_S_invalid_state_id) + continue; + + const std::__detail::_State& __state = __nfa[*__i]; + if (__state._M_opcode == std::__detail::_S_opcode_match + && __state._M_matches(__p)) + __m.insert(__state._M_next); + } + return __m; + } + + // returns true if (__s intersect __t) is not empty + inline bool + __includes_some(const std::__detail::_StateSet& __s, + const std::__detail::_StateSet& __t) + { + if (__s.size() > 0 && __t.size() > 0) + { + std::__detail::_StateSet::const_iterator __first = __s.begin(); + std::__detail::_StateSet::const_iterator __second = __t.begin(); + while (__first != __s.end() && __second != __t.end()) + { + if (*__first < *__second) + ++__first; + else if (*__second < *__first) + ++__second; + else + return true; + } + } + return false; + } + + // If an identified state __u is not already in the current state set __e, + // insert it and push it on the current state stack __s. + inline void + __add_visited_state(const std::__detail::_StateIdT __u, + _StateStack& __s, + std::__detail::_StateSet& __e) + { + if (__e.count(__u) == 0) + { + __e.insert(__u); + __s.push(__u); + } + } + +} // anonymous namespace + +namespace __detail +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + inline _Grep_matcher:: + _Grep_matcher(_PatternCursor& __p, _Results& __r, + const _AutomatonPtr& __nfa, + regex_constants::match_flag_type __flags) + : _M_nfa(static_pointer_cast<_Nfa>(__nfa)), _M_pattern(__p), _M_results(__r) + { + __detail::_StateSet __t = this->_M_e_closure(_M_nfa->_M_start()); + for (; !_M_pattern._M_at_end(); _M_pattern._M_next()) + __t = this->_M_e_closure(__move(_M_pattern, *_M_nfa, __t)); + + _M_results._M_set_matched(0, + __includes_some(_M_nfa->_M_final_states(), __t)); + } + + // Creates the e-closure set for the initial state __i. + inline _StateSet _Grep_matcher:: + _M_e_closure(_StateIdT __i) + { + _StateSet __s; + __s.insert(__i); + _StateStack __stack; + __stack.push(__i); + return this->_M_e_closure(__stack, __s); + } + + // Creates the e-closure set for an arbitrary state set __s. + inline _StateSet _Grep_matcher:: + _M_e_closure(const _StateSet& __s) + { + _StateStack __stack; + for (_StateSet::const_iterator __i = __s.begin(); __i != __s.end(); ++__i) + __stack.push(*__i); + return this->_M_e_closure(__stack, __s); + } + + inline _StateSet _Grep_matcher:: + _M_e_closure(_StateStack& __stack, const _StateSet& __s) + { + _StateSet __e = __s; + while (!__stack.empty()) + { + _StateIdT __t = __stack.top(); __stack.pop(); + if (__t == _S_invalid_state_id) + continue; + // for each __u with edge from __t to __u labeled e do ... + const _State& __state = _M_nfa->operator[](__t); + switch (__state._M_opcode) + { + case _S_opcode_alternative: + __add_visited_state(__state._M_next, __stack, __e); + __add_visited_state(__state._M_alt, __stack, __e); + break; + case _S_opcode_subexpr_begin: + __add_visited_state(__state._M_next, __stack, __e); + __state._M_tagger(_M_pattern, _M_results); + break; + case _S_opcode_subexpr_end: + __add_visited_state(__state._M_next, __stack, __e); + __state._M_tagger(_M_pattern, _M_results); + _M_results._M_set_matched(__state._M_subexpr, true); + break; + case _S_opcode_accept: + __add_visited_state(__state._M_next, __stack, __e); + break; + default: + break; + } + } + return __e; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __detail +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_nfa.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_nfa.h new file mode 100644 index 0000000..fc30237 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_nfa.h @@ -0,0 +1,415 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/regex_nfa.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{regex} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __detail +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup regex-detail + * @{ + */ + + /// Base class for, um, automata. Could be an NFA or a DFA. Your choice. + class _Automaton + { + public: + typedef unsigned int _SizeT; + + public: + virtual + ~_Automaton() { } + + virtual _SizeT + _M_sub_count() const = 0; + +#ifdef _GLIBCXX_DEBUG + virtual std::ostream& + _M_dot(std::ostream& __ostr) const = 0; +#endif + }; + + /// Generic shared pointer to an automaton. + typedef std::shared_ptr<_Automaton> _AutomatonPtr; + + /// Operation codes that define the type of transitions within the base NFA + /// that represents the regular expression. + enum _Opcode + { + _S_opcode_unknown = 0, + _S_opcode_alternative = 1, + _S_opcode_subexpr_begin = 4, + _S_opcode_subexpr_end = 5, + _S_opcode_match = 100, + _S_opcode_accept = 255 + }; + + /// Provides a generic facade for a templated match_results. + struct _Results + { + virtual void _M_set_pos(int __i, int __j, const _PatternCursor& __p) = 0; + virtual void _M_set_matched(int __i, bool __is_matched) = 0; + }; + + /// Tags current state (for subexpr begin/end). + typedef std::function _Tagger; + + /// Start state tag. + template + struct _StartTagger + { + explicit + _StartTagger(int __i) + : _M_index(__i) + { } + + void + operator()(const _PatternCursor& __pc, _Results& __r) + { __r._M_set_pos(_M_index, 0, __pc); } + + int _M_index; + }; + + /// End state tag. + template + struct _EndTagger + { + explicit + _EndTagger(int __i) + : _M_index(__i) + { } + + void + operator()(const _PatternCursor& __pc, _Results& __r) + { __r._M_set_pos(_M_index, 1, __pc); } + + int _M_index; + _FwdIterT _M_pos; + }; + + /// Indicates if current state matches cursor current. + typedef std::function _Matcher; + + /// Matches any character + inline bool + _AnyMatcher(const _PatternCursor&) + { return true; } + + /// Matches a single character + template + struct _CharMatcher + { + typedef typename _TraitsT::char_type char_type; + + explicit + _CharMatcher(char_type __c, const _TraitsT& __t = _TraitsT()) + : _M_traits(__t), _M_c(_M_traits.translate(__c)) + { } + + bool + operator()(const _PatternCursor& __pc) const + { + typedef const _SpecializedCursor<_InIterT>& _CursorT; + _CursorT __c = static_cast<_CursorT>(__pc); + return _M_traits.translate(__c._M_current()) == _M_c; + } + + const _TraitsT& _M_traits; + char_type _M_c; + }; + + /// Matches a character range (bracket expression) + template + struct _RangeMatcher + { + typedef typename _TraitsT::char_type _CharT; + typedef std::basic_string<_CharT> _StringT; + + explicit + _RangeMatcher(bool __is_non_matching, const _TraitsT& __t = _TraitsT()) + : _M_traits(__t), _M_is_non_matching(__is_non_matching) + { } + + bool + operator()(const _PatternCursor& __pc) const + { + typedef const _SpecializedCursor<_InIterT>& _CursorT; + _CursorT __c = static_cast<_CursorT>(__pc); + return true; + } + + void + _M_add_char(_CharT __c) + { } + + void + _M_add_collating_element(const _StringT& __s) + { } + + void + _M_add_equivalence_class(const _StringT& __s) + { } + + void + _M_add_character_class(const _StringT& __s) + { } + + void + _M_make_range() + { } + + const _TraitsT& _M_traits; + bool _M_is_non_matching; + }; + + /// Identifies a state in the NFA. + typedef int _StateIdT; + + /// The special case in which a state identifier is not an index. + static const _StateIdT _S_invalid_state_id = -1; + + + /** + * @brief struct _State + * + * An individual state in an NFA + * + * In this case a "state" is an entry in the NFA definition coupled + * with its outgoing transition(s). All states have a single outgoing + * transition, except for accepting states (which have no outgoing + * transitions) and alt states, which have two outgoing transitions. + */ + struct _State + { + typedef int _OpcodeT; + + _OpcodeT _M_opcode; // type of outgoing transition + _StateIdT _M_next; // outgoing transition + _StateIdT _M_alt; // for _S_opcode_alternative + unsigned int _M_subexpr; // for _S_opcode_subexpr_* + _Tagger _M_tagger; // for _S_opcode_subexpr_* + _Matcher _M_matches; // for _S_opcode_match + + explicit _State(_OpcodeT __opcode) + : _M_opcode(__opcode), _M_next(_S_invalid_state_id) + { } + + _State(const _Matcher& __m) + : _M_opcode(_S_opcode_match), _M_next(_S_invalid_state_id), _M_matches(__m) + { } + + _State(_OpcodeT __opcode, unsigned int __s, const _Tagger& __t) + : _M_opcode(__opcode), _M_next(_S_invalid_state_id), _M_subexpr(__s), + _M_tagger(__t) + { } + + _State(_StateIdT __next, _StateIdT __alt) + : _M_opcode(_S_opcode_alternative), _M_next(__next), _M_alt(__alt) + { } + +#ifdef _GLIBCXX_DEBUG + std::ostream& + _M_print(std::ostream& ostr) const; + + // Prints graphviz dot commands for state. + std::ostream& + _M_dot(std::ostream& __ostr, _StateIdT __id) const; +#endif + }; + + + /// The Grep Matcher works on sets of states. Here are sets of states. + typedef std::set<_StateIdT> _StateSet; + + /** + * @brief struct _Nfa + * + * A collection of all states making up an NFA. + * + * An NFA is a 4-tuple M = (K, S, s, F), where + * K is a finite set of states, + * S is the alphabet of the NFA, + * s is the initial state, + * F is a set of final (accepting) states. + * + * This NFA class is templated on S, a type that will hold values of the + * underlying alphabet (without regard to semantics of that alphabet). The + * other elements of the tuple are generated during construction of the NFA + * and are available through accessor member functions. + */ + class _Nfa + : public _Automaton, public std::vector<_State> + { + public: + typedef _State _StateT; + typedef unsigned int _SizeT; + typedef regex_constants::syntax_option_type _FlagT; + + _Nfa(_FlagT __f) + : _M_flags(__f), _M_start_state(0), _M_subexpr_count(0) + { } + + ~_Nfa() + { } + + _FlagT + _M_options() const + { return _M_flags; } + + _StateIdT + _M_start() const + { return _M_start_state; } + + const _StateSet& + _M_final_states() const + { return _M_accepting_states; } + + _SizeT + _M_sub_count() const + { return _M_subexpr_count; } + + _StateIdT + _M_insert_accept() + { + this->push_back(_StateT(_S_opcode_accept)); + _M_accepting_states.insert(this->size()-1); + return this->size()-1; + } + + _StateIdT + _M_insert_alt(_StateIdT __next, _StateIdT __alt) + { + this->push_back(_StateT(__next, __alt)); + return this->size()-1; + } + + _StateIdT + _M_insert_matcher(_Matcher __m) + { + this->push_back(_StateT(__m)); + return this->size()-1; + } + + _StateIdT + _M_insert_subexpr_begin(const _Tagger& __t) + { + this->push_back(_StateT(_S_opcode_subexpr_begin, _M_subexpr_count++, + __t)); + return this->size()-1; + } + + _StateIdT + _M_insert_subexpr_end(unsigned int __i, const _Tagger& __t) + { + this->push_back(_StateT(_S_opcode_subexpr_end, __i, __t)); + return this->size()-1; + } + +#ifdef _GLIBCXX_DEBUG + std::ostream& + _M_dot(std::ostream& __ostr) const; +#endif + + private: + _FlagT _M_flags; + _StateIdT _M_start_state; + _StateSet _M_accepting_states; + _SizeT _M_subexpr_count; + }; + + /// Describes a sequence of one or more %_State, its current start + /// and end(s). This structure contains fragments of an NFA during + /// construction. + class _StateSeq + { + public: + // Constructs a single-node sequence + _StateSeq(_Nfa& __ss, _StateIdT __s, _StateIdT __e = _S_invalid_state_id) + : _M_nfa(__ss), _M_start(__s), _M_end1(__s), _M_end2(__e) + { } + // Constructs a split sequence from two other sequencces + _StateSeq(const _StateSeq& __e1, const _StateSeq& __e2) + : _M_nfa(__e1._M_nfa), + _M_start(_M_nfa._M_insert_alt(__e1._M_start, __e2._M_start)), + _M_end1(__e1._M_end1), _M_end2(__e2._M_end1) + { } + + // Constructs a split sequence from a single sequence + _StateSeq(const _StateSeq& __e, _StateIdT __id) + : _M_nfa(__e._M_nfa), + _M_start(_M_nfa._M_insert_alt(__id, __e._M_start)), + _M_end1(__id), _M_end2(__e._M_end1) + { } + + // Constructs a copy of a %_StateSeq + _StateSeq(const _StateSeq& __rhs) + : _M_nfa(__rhs._M_nfa), _M_start(__rhs._M_start), + _M_end1(__rhs._M_end1), _M_end2(__rhs._M_end2) + { } + + + _StateSeq& operator=(const _StateSeq& __rhs); + + _StateIdT + _M_front() const + { return _M_start; } + + // Extends a sequence by one. + void + _M_push_back(_StateIdT __id); + + // Extends and maybe joins a sequence. + void + _M_append(_StateIdT __id); + + void + _M_append(_StateSeq& __rhs); + + // Clones an entire sequence. + _StateIdT + _M_clone(); + + private: + _Nfa& _M_nfa; + _StateIdT _M_start; + _StateIdT _M_end1; + _StateIdT _M_end2; + + }; + + //@} regex-detail +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __detail +} // namespace std + +#include + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_nfa.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_nfa.tcc new file mode 100644 index 0000000..e8277f8 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/regex_nfa.tcc @@ -0,0 +1,174 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file bits/regex_nfa.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{regex} + */ +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __detail +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#ifdef _GLIBCXX_DEBUG +inline std::ostream& _State:: +_M_print(std::ostream& ostr) const +{ + switch (_M_opcode) + { + case _S_opcode_alternative: + ostr << "alt next=" << _M_next << " alt=" << _M_alt; + break; + case _S_opcode_subexpr_begin: + ostr << "subexpr begin next=" << _M_next << " index=" << _M_subexpr; + break; + case _S_opcode_subexpr_end: + ostr << "subexpr end next=" << _M_next << " index=" << _M_subexpr; + break; + case _S_opcode_match: + ostr << "match next=" << _M_next; + break; + case _S_opcode_accept: + ostr << "accept next=" << _M_next; + break; + default: + ostr << "unknown next=" << _M_next; + break; + } + return ostr; +} + +// Prints graphviz dot commands for state. +inline std::ostream& _State:: +_M_dot(std::ostream& __ostr, _StateIdT __id) const +{ + switch (_M_opcode) + { + case _S_opcode_alternative: + __ostr << __id << " [label=\"" << __id << "\\nALT\"];\n" + << __id << " -> " << _M_next + << " [label=\"epsilon\", tailport=\"s\"];\n" + << __id << " -> " << _M_alt + << " [label=\"epsilon\", tailport=\"n\"];\n"; + break; + case _S_opcode_subexpr_begin: + __ostr << __id << " [label=\"" << __id << "\\nSBEGIN " + << _M_subexpr << "\"];\n" + << __id << " -> " << _M_next << " [label=\"epsilon\"];\n"; + break; + case _S_opcode_subexpr_end: + __ostr << __id << " [label=\"" << __id << "\\nSEND " + << _M_subexpr << "\"];\n" + << __id << " -> " << _M_next << " [label=\"epsilon\"];\n"; + break; + case _S_opcode_match: + __ostr << __id << " [label=\"" << __id << "\\nMATCH\"];\n" + << __id << " -> " << _M_next << " [label=\"\"];\n"; + break; + case _S_opcode_accept: + __ostr << __id << " [label=\"" << __id << "\\nACC\"];\n" ; + break; + default: + __ostr << __id << " [label=\"" << __id << "\\nUNK\"];\n" + << __id << " -> " << _M_next << " [label=\"?\"];\n"; + break; + } + return __ostr; +} + +inline std::ostream& _Nfa:: +_M_dot(std::ostream& __ostr) const +{ + __ostr << "digraph _Nfa {\n" + << " rankdir=LR;\n"; + for (unsigned int __i = 0; __i < this->size(); ++__i) + { this->at(__i)._M_dot(__ostr, __i); } + __ostr << "}\n"; + return __ostr; +} +#endif + +inline _StateSeq& _StateSeq:: +operator=(const _StateSeq& __rhs) +{ + _M_start = __rhs._M_start; + _M_end1 = __rhs._M_end1; + _M_end2 = __rhs._M_end2; + return *this; +} + +inline void _StateSeq:: +_M_push_back(_StateIdT __id) +{ + if (_M_end1 != _S_invalid_state_id) + _M_nfa[_M_end1]._M_next = __id; + _M_end1 = __id; +} + +inline void _StateSeq:: +_M_append(_StateIdT __id) +{ + if (_M_end2 != _S_invalid_state_id) + { + if (_M_end2 == _M_end1) + _M_nfa[_M_end2]._M_alt = __id; + else + _M_nfa[_M_end2]._M_next = __id; + _M_end2 = _S_invalid_state_id; + } + if (_M_end1 != _S_invalid_state_id) + _M_nfa[_M_end1]._M_next = __id; + _M_end1 = __id; +} + +inline void _StateSeq:: +_M_append(_StateSeq& __rhs) +{ + if (_M_end2 != _S_invalid_state_id) + { + if (_M_end2 == _M_end1) + _M_nfa[_M_end2]._M_alt = __rhs._M_start; + else + _M_nfa[_M_end2]._M_next = __rhs._M_start; + _M_end2 = _S_invalid_state_id; + } + if (__rhs._M_end2 != _S_invalid_state_id) + _M_end2 = __rhs._M_end2; + if (_M_end1 != _S_invalid_state_id) + _M_nfa[_M_end1]._M_next = __rhs._M_start; + _M_end1 = __rhs._M_end1; +} + +// @todo implement this function. +inline _StateIdT _StateSeq:: +_M_clone() +{ return 0; } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __detail +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/shared_ptr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/shared_ptr.h new file mode 100644 index 0000000..71f1b69 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/shared_ptr.h @@ -0,0 +1,632 @@ +// shared_ptr and weak_ptr implementation -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// GCC Note: Based on files from version 1.32.0 of the Boost library. + +// shared_count.hpp +// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. + +// shared_ptr.hpp +// Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes. +// Copyright (C) 2001, 2002, 2003 Peter Dimov + +// weak_ptr.hpp +// Copyright (C) 2001, 2002, 2003 Peter Dimov + +// enable_shared_from_this.hpp +// Copyright (C) 2002 Peter Dimov + +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +/** @file bits/shared_ptr.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _SHARED_PTR_H +#define _SHARED_PTR_H 1 + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup pointer_abstractions + * @{ + */ + + /// 2.2.3.7 shared_ptr I/O + template + inline std::basic_ostream<_Ch, _Tr>& + operator<<(std::basic_ostream<_Ch, _Tr>& __os, + const __shared_ptr<_Tp, _Lp>& __p) + { + __os << __p.get(); + return __os; + } + + /// 2.2.3.10 shared_ptr get_deleter (experimental) + template + inline _Del* + get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept + { +#ifdef __GXX_RTTI + return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); +#else + return 0; +#endif + } + + + /** + * @brief A smart pointer with reference-counted copy semantics. + * + * The object pointed to is deleted when the last shared_ptr pointing to + * it is destroyed or reset. + */ + template + class shared_ptr : public __shared_ptr<_Tp> + { + public: + /** + * @brief Construct an empty %shared_ptr. + * @post use_count()==0 && get()==0 + */ + constexpr shared_ptr() noexcept + : __shared_ptr<_Tp>() { } + + shared_ptr(const shared_ptr&) noexcept = default; + + /** + * @brief Construct a %shared_ptr that owns the pointer @a __p. + * @param __p A pointer that is convertible to element_type*. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @c delete @a __p is called. + */ + template + explicit shared_ptr(_Tp1* __p) + : __shared_ptr<_Tp>(__p) { } + + /** + * @brief Construct a %shared_ptr that owns the pointer @a __p + * and the deleter @a __d. + * @param __p A pointer. + * @param __d A deleter. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @a __d(__p) is called. + * + * Requirements: _Deleter's copy constructor and destructor must + * not throw + * + * __shared_ptr will release __p by calling __d(__p) + */ + template + shared_ptr(_Tp1* __p, _Deleter __d) + : __shared_ptr<_Tp>(__p, __d) { } + + /** + * @brief Construct a %shared_ptr that owns a null pointer + * and the deleter @a __d. + * @param __p A null pointer constant. + * @param __d A deleter. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @a __d(__p) is called. + * + * Requirements: _Deleter's copy constructor and destructor must + * not throw + * + * The last owner will call __d(__p) + */ + template + shared_ptr(nullptr_t __p, _Deleter __d) + : __shared_ptr<_Tp>(__p, __d) { } + + /** + * @brief Construct a %shared_ptr that owns the pointer @a __p + * and the deleter @a __d. + * @param __p A pointer. + * @param __d A deleter. + * @param __a An allocator. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @a __d(__p) is called. + * + * Requirements: _Deleter's copy constructor and destructor must + * not throw _Alloc's copy constructor and destructor must not + * throw. + * + * __shared_ptr will release __p by calling __d(__p) + */ + template + shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a) + : __shared_ptr<_Tp>(__p, __d, std::move(__a)) { } + + /** + * @brief Construct a %shared_ptr that owns a null pointer + * and the deleter @a __d. + * @param __p A null pointer constant. + * @param __d A deleter. + * @param __a An allocator. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @a __d(__p) is called. + * + * Requirements: _Deleter's copy constructor and destructor must + * not throw _Alloc's copy constructor and destructor must not + * throw. + * + * The last owner will call __d(__p) + */ + template + shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) + : __shared_ptr<_Tp>(__p, __d, std::move(__a)) { } + + // Aliasing constructor + + /** + * @brief Constructs a %shared_ptr instance that stores @a __p + * and shares ownership with @a __r. + * @param __r A %shared_ptr. + * @param __p A pointer that will remain valid while @a *__r is valid. + * @post get() == __p && use_count() == __r.use_count() + * + * This can be used to construct a @c shared_ptr to a sub-object + * of an object managed by an existing @c shared_ptr. + * + * @code + * shared_ptr< pair > pii(new pair()); + * shared_ptr pi(pii, &pii->first); + * assert(pii.use_count() == 2); + * @endcode + */ + template + shared_ptr(const shared_ptr<_Tp1>& __r, _Tp* __p) noexcept + : __shared_ptr<_Tp>(__r, __p) { } + + /** + * @brief If @a __r is empty, constructs an empty %shared_ptr; + * otherwise construct a %shared_ptr that shares ownership + * with @a __r. + * @param __r A %shared_ptr. + * @post get() == __r.get() && use_count() == __r.use_count() + */ + template::value>::type> + shared_ptr(const shared_ptr<_Tp1>& __r) noexcept + : __shared_ptr<_Tp>(__r) { } + + /** + * @brief Move-constructs a %shared_ptr instance from @a __r. + * @param __r A %shared_ptr rvalue. + * @post *this contains the old value of @a __r, @a __r is empty. + */ + shared_ptr(shared_ptr&& __r) noexcept + : __shared_ptr<_Tp>(std::move(__r)) { } + + /** + * @brief Move-constructs a %shared_ptr instance from @a __r. + * @param __r A %shared_ptr rvalue. + * @post *this contains the old value of @a __r, @a __r is empty. + */ + template::value>::type> + shared_ptr(shared_ptr<_Tp1>&& __r) noexcept + : __shared_ptr<_Tp>(std::move(__r)) { } + + /** + * @brief Constructs a %shared_ptr that shares ownership with @a __r + * and stores a copy of the pointer stored in @a __r. + * @param __r A weak_ptr. + * @post use_count() == __r.use_count() + * @throw bad_weak_ptr when __r.expired(), + * in which case the constructor has no effect. + */ + template + explicit shared_ptr(const weak_ptr<_Tp1>& __r) + : __shared_ptr<_Tp>(__r) { } + +#if _GLIBCXX_USE_DEPRECATED + template + shared_ptr(std::auto_ptr<_Tp1>&& __r); +#endif + + template + shared_ptr(std::unique_ptr<_Tp1, _Del>&& __r) + : __shared_ptr<_Tp>(std::move(__r)) { } + + /** + * @brief Construct an empty %shared_ptr. + * @param __p A null pointer constant. + * @post use_count() == 0 && get() == nullptr + */ + constexpr shared_ptr(nullptr_t __p) noexcept + : __shared_ptr<_Tp>(__p) { } + + shared_ptr& operator=(const shared_ptr&) noexcept = default; + + template + shared_ptr& + operator=(const shared_ptr<_Tp1>& __r) noexcept + { + this->__shared_ptr<_Tp>::operator=(__r); + return *this; + } + +#if _GLIBCXX_USE_DEPRECATED + template + shared_ptr& + operator=(std::auto_ptr<_Tp1>&& __r) + { + this->__shared_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } +#endif + + shared_ptr& + operator=(shared_ptr&& __r) noexcept + { + this->__shared_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } + + template + shared_ptr& + operator=(shared_ptr<_Tp1>&& __r) noexcept + { + this->__shared_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } + + template + shared_ptr& + operator=(std::unique_ptr<_Tp1, _Del>&& __r) + { + this->__shared_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } + + private: + // This constructor is non-standard, it is used by allocate_shared. + template + shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, + _Args&&... __args) + : __shared_ptr<_Tp>(__tag, __a, std::forward<_Args>(__args)...) + { } + + template + friend shared_ptr<_Tp1> + allocate_shared(const _Alloc& __a, _Args&&... __args); + }; + + // 20.7.2.2.7 shared_ptr comparisons + template + inline bool + operator==(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return __a.get() == __b.get(); } + + template + inline bool + operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return !__a; } + + template + inline bool + operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return !__a; } + + template + inline bool + operator!=(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return __a.get() != __b.get(); } + + template + inline bool + operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return (bool)__a; } + + template + inline bool + operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return (bool)__a; } + + template + inline bool + operator<(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { + typedef typename std::common_type<_Tp1*, _Tp2*>::type _CT; + return std::less<_CT>()(__a.get(), __b.get()); + } + + template + inline bool + operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return std::less<_Tp*>()(__a.get(), nullptr); } + + template + inline bool + operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return std::less<_Tp*>()(nullptr, __a.get()); } + + template + inline bool + operator<=(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return !(__b < __a); } + + template + inline bool + operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return !(nullptr < __a); } + + template + inline bool + operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return !(__a < nullptr); } + + template + inline bool + operator>(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return (__b < __a); } + + template + inline bool + operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return std::less<_Tp*>()(nullptr, __a.get()); } + + template + inline bool + operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return std::less<_Tp*>()(__a.get(), nullptr); } + + template + inline bool + operator>=(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return !(__a < __b); } + + template + inline bool + operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return !(__a < nullptr); } + + template + inline bool + operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return !(nullptr < __a); } + + template + struct less> : public _Sp_less> + { }; + + // 20.7.2.2.8 shared_ptr specialized algorithms. + template + inline void + swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept + { __a.swap(__b); } + + // 20.7.2.2.9 shared_ptr casts. + template + inline shared_ptr<_Tp> + static_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept + { return shared_ptr<_Tp>(__r, static_cast<_Tp*>(__r.get())); } + + template + inline shared_ptr<_Tp> + const_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept + { return shared_ptr<_Tp>(__r, const_cast<_Tp*>(__r.get())); } + + template + inline shared_ptr<_Tp> + dynamic_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept + { + if (_Tp* __p = dynamic_cast<_Tp*>(__r.get())) + return shared_ptr<_Tp>(__r, __p); + return shared_ptr<_Tp>(); + } + + + /** + * @brief A smart pointer with weak semantics. + * + * With forwarding constructors and assignment operators. + */ + template + class weak_ptr : public __weak_ptr<_Tp> + { + public: + constexpr weak_ptr() noexcept + : __weak_ptr<_Tp>() { } + + template::value>::type> + weak_ptr(const weak_ptr<_Tp1>& __r) noexcept + : __weak_ptr<_Tp>(__r) { } + + template::value>::type> + weak_ptr(const shared_ptr<_Tp1>& __r) noexcept + : __weak_ptr<_Tp>(__r) { } + + template + weak_ptr& + operator=(const weak_ptr<_Tp1>& __r) noexcept + { + this->__weak_ptr<_Tp>::operator=(__r); + return *this; + } + + template + weak_ptr& + operator=(const shared_ptr<_Tp1>& __r) noexcept + { + this->__weak_ptr<_Tp>::operator=(__r); + return *this; + } + + shared_ptr<_Tp> + lock() const noexcept + { +#ifdef __GTHREADS + if (this->expired()) + return shared_ptr<_Tp>(); + + __try + { + return shared_ptr<_Tp>(*this); + } + __catch(const bad_weak_ptr&) + { + return shared_ptr<_Tp>(); + } +#else + return this->expired() ? shared_ptr<_Tp>() : shared_ptr<_Tp>(*this); +#endif + } + }; + + // 20.7.2.3.6 weak_ptr specialized algorithms. + template + inline void + swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept + { __a.swap(__b); } + + + /// Primary template owner_less + template + struct owner_less; + + /// Partial specialization of owner_less for shared_ptr. + template + struct owner_less> + : public _Sp_owner_less, weak_ptr<_Tp>> + { }; + + /// Partial specialization of owner_less for weak_ptr. + template + struct owner_less> + : public _Sp_owner_less, shared_ptr<_Tp>> + { }; + + /** + * @brief Base class allowing use of member function shared_from_this. + */ + template + class enable_shared_from_this + { + protected: + constexpr enable_shared_from_this() noexcept { } + + enable_shared_from_this(const enable_shared_from_this&) noexcept { } + + enable_shared_from_this& + operator=(const enable_shared_from_this&) noexcept + { return *this; } + + ~enable_shared_from_this() { } + + public: + shared_ptr<_Tp> + shared_from_this() + { return shared_ptr<_Tp>(this->_M_weak_this); } + + shared_ptr + shared_from_this() const + { return shared_ptr(this->_M_weak_this); } + + private: + template + void + _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept + { _M_weak_this._M_assign(__p, __n); } + + template + friend void + __enable_shared_from_this_helper(const __shared_count<>& __pn, + const enable_shared_from_this* __pe, + const _Tp1* __px) noexcept + { + if (__pe != 0) + __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn); + } + + mutable weak_ptr<_Tp> _M_weak_this; + }; + + /** + * @brief Create an object that is owned by a shared_ptr. + * @param __a An allocator. + * @param __args Arguments for the @a _Tp object's constructor. + * @return A shared_ptr that owns the newly created object. + * @throw An exception thrown from @a _Alloc::allocate or from the + * constructor of @a _Tp. + * + * A copy of @a __a will be used to allocate memory for the shared_ptr + * and the new object. + */ + template + inline shared_ptr<_Tp> + allocate_shared(const _Alloc& __a, _Args&&... __args) + { + return shared_ptr<_Tp>(_Sp_make_shared_tag(), __a, + std::forward<_Args>(__args)...); + } + + /** + * @brief Create an object that is owned by a shared_ptr. + * @param __args Arguments for the @a _Tp object's constructor. + * @return A shared_ptr that owns the newly created object. + * @throw std::bad_alloc, or an exception thrown from the + * constructor of @a _Tp. + */ + template + inline shared_ptr<_Tp> + make_shared(_Args&&... __args) + { + typedef typename std::remove_const<_Tp>::type _Tp_nc; + return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(), + std::forward<_Args>(__args)...); + } + + /// std::hash specialization for shared_ptr. + template + struct hash> + : public __hash_base> + { + size_t + operator()(const shared_ptr<_Tp>& __s) const noexcept + { return std::hash<_Tp*>()(__s.get()); } + }; + + // @} group pointer_abstractions + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // _SHARED_PTR_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/shared_ptr_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/shared_ptr_base.h new file mode 100644 index 0000000..9dcefa2 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/shared_ptr_base.h @@ -0,0 +1,1424 @@ +// shared_ptr and weak_ptr implementation details -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// GCC Note: Based on files from version 1.32.0 of the Boost library. + +// shared_count.hpp +// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. + +// shared_ptr.hpp +// Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes. +// Copyright (C) 2001, 2002, 2003 Peter Dimov + +// weak_ptr.hpp +// Copyright (C) 2001, 2002, 2003 Peter Dimov + +// enable_shared_from_this.hpp +// Copyright (C) 2002 Peter Dimov + +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +/** @file bits/shared_ptr_base.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _SHARED_PTR_BASE_H +#define _SHARED_PTR_BASE_H 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#if _GLIBCXX_USE_DEPRECATED + template class auto_ptr; +#endif + + /** + * @brief Exception possibly thrown by @c shared_ptr. + * @ingroup exceptions + */ + class bad_weak_ptr : public std::exception + { + public: + virtual char const* + what() const noexcept; + + virtual ~bad_weak_ptr() noexcept; + }; + + // Substitute for bad_weak_ptr object in the case of -fno-exceptions. + inline void + __throw_bad_weak_ptr() + { _GLIBCXX_THROW_OR_ABORT(bad_weak_ptr()); } + + using __gnu_cxx::_Lock_policy; + using __gnu_cxx::__default_lock_policy; + using __gnu_cxx::_S_single; + using __gnu_cxx::_S_mutex; + using __gnu_cxx::_S_atomic; + + // Empty helper class except when the template argument is _S_mutex. + template<_Lock_policy _Lp> + class _Mutex_base + { + protected: + // The atomic policy uses fully-fenced builtins, single doesn't care. + enum { _S_need_barriers = 0 }; + }; + + template<> + class _Mutex_base<_S_mutex> + : public __gnu_cxx::__mutex + { + protected: + // This policy is used when atomic builtins are not available. + // The replacement atomic operations might not have the necessary + // memory barriers. + enum { _S_need_barriers = 1 }; + }; + + template<_Lock_policy _Lp = __default_lock_policy> + class _Sp_counted_base + : public _Mutex_base<_Lp> + { + public: + _Sp_counted_base() noexcept + : _M_use_count(1), _M_weak_count(1) { } + + virtual + ~_Sp_counted_base() noexcept + { } + + // Called when _M_use_count drops to zero, to release the resources + // managed by *this. + virtual void + _M_dispose() noexcept = 0; + + // Called when _M_weak_count drops to zero. + virtual void + _M_destroy() noexcept + { delete this; } + + virtual void* + _M_get_deleter(const std::type_info&) = 0; + + void + _M_add_ref_copy() + { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } + + void + _M_add_ref_lock(); + + void + _M_release() noexcept + { + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_use_count); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_use_count); + _M_dispose(); + // There must be a memory barrier between dispose() and destroy() + // to ensure that the effects of dispose() are observed in the + // thread that runs destroy(). + // See http://gcc.gnu.org/ml/libstdc++/2005-11/msg00136.html + if (_Mutex_base<_Lp>::_S_need_barriers) + { + _GLIBCXX_READ_MEM_BARRIER; + _GLIBCXX_WRITE_MEM_BARRIER; + } + + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, + -1) == 1) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count); + _M_destroy(); + } + } + } + + void + _M_weak_add_ref() noexcept + { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } + + void + _M_weak_release() noexcept + { + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count); + if (_Mutex_base<_Lp>::_S_need_barriers) + { + // See _M_release(), + // destroy() must observe results of dispose() + _GLIBCXX_READ_MEM_BARRIER; + _GLIBCXX_WRITE_MEM_BARRIER; + } + _M_destroy(); + } + } + + long + _M_get_use_count() const noexcept + { + // No memory barrier is used here so there is no synchronization + // with other threads. + return __atomic_load_n(&_M_use_count, __ATOMIC_RELAXED); + } + + private: + _Sp_counted_base(_Sp_counted_base const&) = delete; + _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; + + _Atomic_word _M_use_count; // #shared + _Atomic_word _M_weak_count; // #weak + (#shared != 0) + }; + + template<> + inline void + _Sp_counted_base<_S_single>:: + _M_add_ref_lock() + { + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) + { + _M_use_count = 0; + __throw_bad_weak_ptr(); + } + } + + template<> + inline void + _Sp_counted_base<_S_mutex>:: + _M_add_ref_lock() + { + __gnu_cxx::__scoped_lock sentry(*this); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) + { + _M_use_count = 0; + __throw_bad_weak_ptr(); + } + } + + template<> + inline void + _Sp_counted_base<_S_atomic>:: + _M_add_ref_lock() + { + // Perform lock-free add-if-not-zero operation. + _Atomic_word __count = _M_use_count; + do + { + if (__count == 0) + __throw_bad_weak_ptr(); + // Replace the current counter value with the old value + 1, as + // long as it's not changed meanwhile. + } + while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, + true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED)); + } + + + // Forward declarations. + template + class __shared_ptr; + + template + class __weak_ptr; + + template + class __enable_shared_from_this; + + template + class shared_ptr; + + template + class weak_ptr; + + template + struct owner_less; + + template + class enable_shared_from_this; + + template<_Lock_policy _Lp = __default_lock_policy> + class __weak_count; + + template<_Lock_policy _Lp = __default_lock_policy> + class __shared_count; + + + // Counted ptr with no deleter or allocator support + template + class _Sp_counted_ptr final : public _Sp_counted_base<_Lp> + { + public: + explicit + _Sp_counted_ptr(_Ptr __p) + : _M_ptr(__p) { } + + virtual void + _M_dispose() noexcept + { delete _M_ptr; } + + virtual void + _M_destroy() noexcept + { delete this; } + + virtual void* + _M_get_deleter(const std::type_info&) + { return 0; } + + _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; + _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; + + protected: + _Ptr _M_ptr; // copy constructor must not throw + }; + + template<> + inline void + _Sp_counted_ptr::_M_dispose() noexcept { } + + template<> + inline void + _Sp_counted_ptr::_M_dispose() noexcept { } + + template<> + inline void + _Sp_counted_ptr::_M_dispose() noexcept { } + + // Support for custom deleter and/or allocator + template + class _Sp_counted_deleter final : public _Sp_counted_base<_Lp> + { + // Helper class that stores the Deleter and also acts as an allocator. + // Used to dispose of the owned pointer and the internal refcount + // Requires that copies of _Alloc can free each other's memory. + struct _My_Deleter + : public _Alloc // copy constructor must not throw + { + _Deleter _M_del; // copy constructor must not throw + _My_Deleter(_Deleter __d, const _Alloc& __a) + : _Alloc(__a), _M_del(__d) { } + }; + + public: + // __d(__p) must not throw. + _Sp_counted_deleter(_Ptr __p, _Deleter __d) + : _M_ptr(__p), _M_del(__d, _Alloc()) { } + + // __d(__p) must not throw. + _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) + : _M_ptr(__p), _M_del(__d, __a) { } + + ~_Sp_counted_deleter() noexcept { } + + virtual void + _M_dispose() noexcept + { _M_del._M_del(_M_ptr); } + + virtual void + _M_destroy() noexcept + { + typedef typename allocator_traits<_Alloc>::template + rebind_traits<_Sp_counted_deleter> _Alloc_traits; + typename _Alloc_traits::allocator_type __a(_M_del); + _Alloc_traits::destroy(__a, this); + _Alloc_traits::deallocate(__a, this, 1); + } + + virtual void* + _M_get_deleter(const std::type_info& __ti) + { +#ifdef __GXX_RTTI + return __ti == typeid(_Deleter) ? &_M_del._M_del : 0; +#else + return 0; +#endif + } + + protected: + _Ptr _M_ptr; // copy constructor must not throw + _My_Deleter _M_del; // copy constructor must not throw + }; + + // helpers for make_shared / allocate_shared + + struct _Sp_make_shared_tag { }; + + template + class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> + { + // Helper class that stores the pointer and also acts as an allocator. + // Used to dispose of the owned pointer and the internal refcount + // Requires that copies of _Alloc can free each other's memory. + struct _Impl + : public _Alloc // copy constructor must not throw + { + _Impl(_Alloc __a) : _Alloc(__a), _M_ptr() { } + _Tp* _M_ptr; + }; + + public: + template + _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) + : _M_impl(__a) + { + _M_impl._M_ptr = static_cast<_Tp*>(static_cast(&_M_storage)); + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2070. allocate_shared should use allocator_traits::construct + allocator_traits<_Alloc>::construct(__a, _M_impl._M_ptr, + std::forward<_Args>(__args)...); // might throw + } + + ~_Sp_counted_ptr_inplace() noexcept { } + + virtual void + _M_dispose() noexcept + { allocator_traits<_Alloc>::destroy(_M_impl, _M_impl._M_ptr); } + + // Override because the allocator needs to know the dynamic type + virtual void + _M_destroy() noexcept + { + typedef typename allocator_traits<_Alloc>::template + rebind_traits<_Sp_counted_ptr_inplace> _Alloc_traits; + typename _Alloc_traits::allocator_type __a(_M_impl); + _Alloc_traits::destroy(__a, this); + _Alloc_traits::deallocate(__a, this, 1); + } + + // Sneaky trick so __shared_ptr can get the managed pointer + virtual void* + _M_get_deleter(const std::type_info& __ti) noexcept + { +#ifdef __GXX_RTTI + return __ti == typeid(_Sp_make_shared_tag) + ? static_cast(&_M_storage) + : 0; +#else + return 0; +#endif + } + + private: + _Impl _M_impl; + typename aligned_storage::value>::type + _M_storage; + }; + + template<_Lock_policy _Lp> + class __shared_count + { + public: + constexpr __shared_count() noexcept : _M_pi(0) + { } + + template + explicit + __shared_count(_Ptr __p) : _M_pi(0) + { + __try + { + _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p); + } + __catch(...) + { + delete __p; + __throw_exception_again; + } + } + + template + __shared_count(_Ptr __p, _Deleter __d) + : __shared_count(__p, std::move(__d), allocator()) + { } + + template + __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) + { + typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; + typedef typename allocator_traits<_Alloc>::template + rebind_traits<_Sp_cd_type> _Alloc_traits; + typename _Alloc_traits::allocator_type __a2(__a); + _Sp_cd_type* __mem = 0; + __try + { + __mem = _Alloc_traits::allocate(__a2, 1); + _Alloc_traits::construct(__a2, __mem, + __p, std::move(__d), std::move(__a)); + _M_pi = __mem; + } + __catch(...) + { + __d(__p); // Call _Deleter on __p. + if (__mem) + _Alloc_traits::deallocate(__a2, __mem, 1); + __throw_exception_again; + } + } + + template + __shared_count(_Sp_make_shared_tag, _Tp*, const _Alloc& __a, + _Args&&... __args) + : _M_pi(0) + { + typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; + typedef typename allocator_traits<_Alloc>::template + rebind_traits<_Sp_cp_type> _Alloc_traits; + typename _Alloc_traits::allocator_type __a2(__a); + _Sp_cp_type* __mem = _Alloc_traits::allocate(__a2, 1); + __try + { + _Alloc_traits::construct(__a2, __mem, std::move(__a), + std::forward<_Args>(__args)...); + _M_pi = __mem; + } + __catch(...) + { + _Alloc_traits::deallocate(__a2, __mem, 1); + __throw_exception_again; + } + } + +#if _GLIBCXX_USE_DEPRECATED + // Special case for auto_ptr<_Tp> to provide the strong guarantee. + template + explicit + __shared_count(std::auto_ptr<_Tp>&& __r); +#endif + + // Special case for unique_ptr<_Tp,_Del> to provide the strong guarantee. + template + explicit + __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0) + { + using _Ptr = typename unique_ptr<_Tp, _Del>::pointer; + using _Del2 = typename conditional::value, + reference_wrapper::type>, + _Del>::type; + using _Sp_cd_type + = _Sp_counted_deleter<_Ptr, _Del2, allocator, _Lp>; + using _Alloc = allocator<_Sp_cd_type>; + using _Alloc_traits = allocator_traits<_Alloc>; + _Alloc __a; + _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1); + _Alloc_traits::construct(__a, __mem, __r.release(), + __r.get_deleter()); // non-throwing + _M_pi = __mem; + } + + // Throw bad_weak_ptr when __r._M_get_use_count() == 0. + explicit __shared_count(const __weak_count<_Lp>& __r); + + ~__shared_count() noexcept + { + if (_M_pi != nullptr) + _M_pi->_M_release(); + } + + __shared_count(const __shared_count& __r) noexcept + : _M_pi(__r._M_pi) + { + if (_M_pi != 0) + _M_pi->_M_add_ref_copy(); + } + + __shared_count& + operator=(const __shared_count& __r) noexcept + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + if (__tmp != _M_pi) + { + if (__tmp != 0) + __tmp->_M_add_ref_copy(); + if (_M_pi != 0) + _M_pi->_M_release(); + _M_pi = __tmp; + } + return *this; + } + + void + _M_swap(__shared_count& __r) noexcept + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + __r._M_pi = _M_pi; + _M_pi = __tmp; + } + + long + _M_get_use_count() const noexcept + { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } + + bool + _M_unique() const noexcept + { return this->_M_get_use_count() == 1; } + + void* + _M_get_deleter(const std::type_info& __ti) const noexcept + { return _M_pi ? _M_pi->_M_get_deleter(__ti) : 0; } + + bool + _M_less(const __shared_count& __rhs) const noexcept + { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } + + bool + _M_less(const __weak_count<_Lp>& __rhs) const noexcept + { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } + + // Friend function injected into enclosing namespace and found by ADL + friend inline bool + operator==(const __shared_count& __a, const __shared_count& __b) noexcept + { return __a._M_pi == __b._M_pi; } + + private: + friend class __weak_count<_Lp>; + + _Sp_counted_base<_Lp>* _M_pi; + }; + + + template<_Lock_policy _Lp> + class __weak_count + { + public: + constexpr __weak_count() noexcept : _M_pi(0) + { } + + __weak_count(const __shared_count<_Lp>& __r) noexcept + : _M_pi(__r._M_pi) + { + if (_M_pi != 0) + _M_pi->_M_weak_add_ref(); + } + + __weak_count(const __weak_count<_Lp>& __r) noexcept + : _M_pi(__r._M_pi) + { + if (_M_pi != 0) + _M_pi->_M_weak_add_ref(); + } + + ~__weak_count() noexcept + { + if (_M_pi != 0) + _M_pi->_M_weak_release(); + } + + __weak_count<_Lp>& + operator=(const __shared_count<_Lp>& __r) noexcept + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + if (__tmp != 0) + __tmp->_M_weak_add_ref(); + if (_M_pi != 0) + _M_pi->_M_weak_release(); + _M_pi = __tmp; + return *this; + } + + __weak_count<_Lp>& + operator=(const __weak_count<_Lp>& __r) noexcept + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + if (__tmp != 0) + __tmp->_M_weak_add_ref(); + if (_M_pi != 0) + _M_pi->_M_weak_release(); + _M_pi = __tmp; + return *this; + } + + void + _M_swap(__weak_count<_Lp>& __r) noexcept + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + __r._M_pi = _M_pi; + _M_pi = __tmp; + } + + long + _M_get_use_count() const noexcept + { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } + + bool + _M_less(const __weak_count& __rhs) const noexcept + { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } + + bool + _M_less(const __shared_count<_Lp>& __rhs) const noexcept + { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } + + // Friend function injected into enclosing namespace and found by ADL + friend inline bool + operator==(const __weak_count& __a, const __weak_count& __b) noexcept + { return __a._M_pi == __b._M_pi; } + + private: + friend class __shared_count<_Lp>; + + _Sp_counted_base<_Lp>* _M_pi; + }; + + // Now that __weak_count is defined we can define this constructor: + template<_Lock_policy _Lp> + inline __shared_count<_Lp>:: __shared_count(const __weak_count<_Lp>& __r) + : _M_pi(__r._M_pi) + { + if (_M_pi != 0) + _M_pi->_M_add_ref_lock(); + else + __throw_bad_weak_ptr(); + } + + + // Support for enable_shared_from_this. + + // Friend of __enable_shared_from_this. + template<_Lock_policy _Lp, typename _Tp1, typename _Tp2> + void + __enable_shared_from_this_helper(const __shared_count<_Lp>&, + const __enable_shared_from_this<_Tp1, + _Lp>*, const _Tp2*) noexcept; + + // Friend of enable_shared_from_this. + template + void + __enable_shared_from_this_helper(const __shared_count<>&, + const enable_shared_from_this<_Tp1>*, + const _Tp2*) noexcept; + + template<_Lock_policy _Lp> + inline void + __enable_shared_from_this_helper(const __shared_count<_Lp>&, ...) noexcept + { } + + + template + class __shared_ptr + { + public: + typedef _Tp element_type; + + constexpr __shared_ptr() noexcept + : _M_ptr(0), _M_refcount() + { } + + template + explicit __shared_ptr(_Tp1* __p) + : _M_ptr(__p), _M_refcount(__p) + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + static_assert( sizeof(_Tp1) > 0, "incomplete type" ); + __enable_shared_from_this_helper(_M_refcount, __p, __p); + } + + template + __shared_ptr(_Tp1* __p, _Deleter __d) + : _M_ptr(__p), _M_refcount(__p, __d) + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + // TODO requires _Deleter CopyConstructible and __d(__p) well-formed + __enable_shared_from_this_helper(_M_refcount, __p, __p); + } + + template + __shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a) + : _M_ptr(__p), _M_refcount(__p, __d, std::move(__a)) + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + // TODO requires _Deleter CopyConstructible and __d(__p) well-formed + __enable_shared_from_this_helper(_M_refcount, __p, __p); + } + + template + __shared_ptr(nullptr_t __p, _Deleter __d) + : _M_ptr(0), _M_refcount(__p, __d) + { } + + template + __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) + : _M_ptr(0), _M_refcount(__p, __d, std::move(__a)) + { } + + template + __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, _Tp* __p) noexcept + : _M_ptr(__p), _M_refcount(__r._M_refcount) // never throws + { } + + __shared_ptr(const __shared_ptr&) noexcept = default; + __shared_ptr& operator=(const __shared_ptr&) noexcept = default; + ~__shared_ptr() = default; + + template::value>::type> + __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r) noexcept + : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) + { } + + __shared_ptr(__shared_ptr&& __r) noexcept + : _M_ptr(__r._M_ptr), _M_refcount() + { + _M_refcount._M_swap(__r._M_refcount); + __r._M_ptr = 0; + } + + template::value>::type> + __shared_ptr(__shared_ptr<_Tp1, _Lp>&& __r) noexcept + : _M_ptr(__r._M_ptr), _M_refcount() + { + _M_refcount._M_swap(__r._M_refcount); + __r._M_ptr = 0; + } + + template + explicit __shared_ptr(const __weak_ptr<_Tp1, _Lp>& __r) + : _M_refcount(__r._M_refcount) // may throw + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + + // It is now safe to copy __r._M_ptr, as + // _M_refcount(__r._M_refcount) did not throw. + _M_ptr = __r._M_ptr; + } + + // If an exception is thrown this constructor has no effect. + template + __shared_ptr(std::unique_ptr<_Tp1, _Del>&& __r) + : _M_ptr(__r.get()), _M_refcount() + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + auto __tmp = __r.get(); + _M_refcount = __shared_count<_Lp>(std::move(__r)); + __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp); + } + +#if _GLIBCXX_USE_DEPRECATED + // Postcondition: use_count() == 1 and __r.get() == 0 + template + __shared_ptr(std::auto_ptr<_Tp1>&& __r); +#endif + + /* TODO: use delegating constructor */ + constexpr __shared_ptr(nullptr_t) noexcept + : _M_ptr(0), _M_refcount() + { } + + template + __shared_ptr& + operator=(const __shared_ptr<_Tp1, _Lp>& __r) noexcept + { + _M_ptr = __r._M_ptr; + _M_refcount = __r._M_refcount; // __shared_count::op= doesn't throw + return *this; + } + +#if _GLIBCXX_USE_DEPRECATED + template + __shared_ptr& + operator=(std::auto_ptr<_Tp1>&& __r) + { + __shared_ptr(std::move(__r)).swap(*this); + return *this; + } +#endif + + __shared_ptr& + operator=(__shared_ptr&& __r) noexcept + { + __shared_ptr(std::move(__r)).swap(*this); + return *this; + } + + template + __shared_ptr& + operator=(__shared_ptr<_Tp1, _Lp>&& __r) noexcept + { + __shared_ptr(std::move(__r)).swap(*this); + return *this; + } + + template + __shared_ptr& + operator=(std::unique_ptr<_Tp1, _Del>&& __r) + { + __shared_ptr(std::move(__r)).swap(*this); + return *this; + } + + void + reset() noexcept + { __shared_ptr().swap(*this); } + + template + void + reset(_Tp1* __p) // _Tp1 must be complete. + { + // Catch self-reset errors. + _GLIBCXX_DEBUG_ASSERT(__p == 0 || __p != _M_ptr); + __shared_ptr(__p).swap(*this); + } + + template + void + reset(_Tp1* __p, _Deleter __d) + { __shared_ptr(__p, __d).swap(*this); } + + template + void + reset(_Tp1* __p, _Deleter __d, _Alloc __a) + { __shared_ptr(__p, __d, std::move(__a)).swap(*this); } + + // Allow class instantiation when _Tp is [cv-qual] void. + typename std::add_lvalue_reference<_Tp>::type + operator*() const noexcept + { + _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0); + return *_M_ptr; + } + + _Tp* + operator->() const noexcept + { + _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0); + return _M_ptr; + } + + _Tp* + get() const noexcept + { return _M_ptr; } + + explicit operator bool() const // never throws + { return _M_ptr == 0 ? false : true; } + + bool + unique() const noexcept + { return _M_refcount._M_unique(); } + + long + use_count() const noexcept + { return _M_refcount._M_get_use_count(); } + + void + swap(__shared_ptr<_Tp, _Lp>& __other) noexcept + { + std::swap(_M_ptr, __other._M_ptr); + _M_refcount._M_swap(__other._M_refcount); + } + + template + bool + owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const + { return _M_refcount._M_less(__rhs._M_refcount); } + + template + bool + owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const + { return _M_refcount._M_less(__rhs._M_refcount); } + +#ifdef __GXX_RTTI + protected: + // This constructor is non-standard, it is used by allocate_shared. + template + __shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, + _Args&&... __args) + : _M_ptr(), _M_refcount(__tag, (_Tp*)0, __a, + std::forward<_Args>(__args)...) + { + // _M_ptr needs to point to the newly constructed object. + // This relies on _Sp_counted_ptr_inplace::_M_get_deleter. + void* __p = _M_refcount._M_get_deleter(typeid(__tag)); + _M_ptr = static_cast<_Tp*>(__p); + __enable_shared_from_this_helper(_M_refcount, _M_ptr, _M_ptr); + } +#else + template + struct _Deleter + { + void operator()(_Tp* __ptr) + { + typedef allocator_traits<_Alloc> _Alloc_traits; + _Alloc_traits::destroy(_M_alloc, __ptr); + _Alloc_traits::deallocate(_M_alloc, __ptr, 1); + } + _Alloc _M_alloc; + }; + + template + __shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, + _Args&&... __args) + : _M_ptr(), _M_refcount() + { + typedef typename _Alloc::template rebind<_Tp>::other _Alloc2; + _Deleter<_Alloc2> __del = { _Alloc2(__a) }; + typedef allocator_traits<_Alloc2> __traits; + _M_ptr = __traits::allocate(__del._M_alloc, 1); + __try + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2070. allocate_shared should use allocator_traits::construct + __traits::construct(__del._M_alloc, _M_ptr, + std::forward<_Args>(__args)...); + } + __catch(...) + { + __traits::deallocate(__del._M_alloc, _M_ptr, 1); + __throw_exception_again; + } + __shared_count<_Lp> __count(_M_ptr, __del, __del._M_alloc); + _M_refcount._M_swap(__count); + __enable_shared_from_this_helper(_M_refcount, _M_ptr, _M_ptr); + } +#endif + + template + friend __shared_ptr<_Tp1, _Lp1> + __allocate_shared(const _Alloc& __a, _Args&&... __args); + + private: + void* + _M_get_deleter(const std::type_info& __ti) const noexcept + { return _M_refcount._M_get_deleter(__ti); } + + template friend class __shared_ptr; + template friend class __weak_ptr; + + template + friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; + + _Tp* _M_ptr; // Contained pointer. + __shared_count<_Lp> _M_refcount; // Reference counter. + }; + + + // 20.7.2.2.7 shared_ptr comparisons + template + inline bool + operator==(const __shared_ptr<_Tp1, _Lp>& __a, + const __shared_ptr<_Tp2, _Lp>& __b) noexcept + { return __a.get() == __b.get(); } + + template + inline bool + operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept + { return !__a; } + + template + inline bool + operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept + { return !__a; } + + template + inline bool + operator!=(const __shared_ptr<_Tp1, _Lp>& __a, + const __shared_ptr<_Tp2, _Lp>& __b) noexcept + { return __a.get() != __b.get(); } + + template + inline bool + operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept + { return (bool)__a; } + + template + inline bool + operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept + { return (bool)__a; } + + template + inline bool + operator<(const __shared_ptr<_Tp1, _Lp>& __a, + const __shared_ptr<_Tp2, _Lp>& __b) noexcept + { + typedef typename std::common_type<_Tp1*, _Tp2*>::type _CT; + return std::less<_CT>()(__a.get(), __b.get()); + } + + template + inline bool + operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept + { return std::less<_Tp*>()(__a.get(), nullptr); } + + template + inline bool + operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept + { return std::less<_Tp*>()(nullptr, __a.get()); } + + template + inline bool + operator<=(const __shared_ptr<_Tp1, _Lp>& __a, + const __shared_ptr<_Tp2, _Lp>& __b) noexcept + { return !(__b < __a); } + + template + inline bool + operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept + { return !(nullptr < __a); } + + template + inline bool + operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept + { return !(__a < nullptr); } + + template + inline bool + operator>(const __shared_ptr<_Tp1, _Lp>& __a, + const __shared_ptr<_Tp2, _Lp>& __b) noexcept + { return (__b < __a); } + + template + inline bool + operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept + { return std::less<_Tp*>()(nullptr, __a.get()); } + + template + inline bool + operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept + { return std::less<_Tp*>()(__a.get(), nullptr); } + + template + inline bool + operator>=(const __shared_ptr<_Tp1, _Lp>& __a, + const __shared_ptr<_Tp2, _Lp>& __b) noexcept + { return !(__a < __b); } + + template + inline bool + operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept + { return !(__a < nullptr); } + + template + inline bool + operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept + { return !(nullptr < __a); } + + template + struct _Sp_less : public binary_function<_Sp, _Sp, bool> + { + bool + operator()(const _Sp& __lhs, const _Sp& __rhs) const noexcept + { + typedef typename _Sp::element_type element_type; + return std::less()(__lhs.get(), __rhs.get()); + } + }; + + template + struct less<__shared_ptr<_Tp, _Lp>> + : public _Sp_less<__shared_ptr<_Tp, _Lp>> + { }; + + // 2.2.3.8 shared_ptr specialized algorithms. + template + inline void + swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept + { __a.swap(__b); } + + // 2.2.3.9 shared_ptr casts + + // The seemingly equivalent code: + // shared_ptr<_Tp, _Lp>(static_cast<_Tp*>(__r.get())) + // will eventually result in undefined behaviour, attempting to + // delete the same object twice. + /// static_pointer_cast + template + inline __shared_ptr<_Tp, _Lp> + static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept + { return __shared_ptr<_Tp, _Lp>(__r, static_cast<_Tp*>(__r.get())); } + + // The seemingly equivalent code: + // shared_ptr<_Tp, _Lp>(const_cast<_Tp*>(__r.get())) + // will eventually result in undefined behaviour, attempting to + // delete the same object twice. + /// const_pointer_cast + template + inline __shared_ptr<_Tp, _Lp> + const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept + { return __shared_ptr<_Tp, _Lp>(__r, const_cast<_Tp*>(__r.get())); } + + // The seemingly equivalent code: + // shared_ptr<_Tp, _Lp>(dynamic_cast<_Tp*>(__r.get())) + // will eventually result in undefined behaviour, attempting to + // delete the same object twice. + /// dynamic_pointer_cast + template + inline __shared_ptr<_Tp, _Lp> + dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept + { + if (_Tp* __p = dynamic_cast<_Tp*>(__r.get())) + return __shared_ptr<_Tp, _Lp>(__r, __p); + return __shared_ptr<_Tp, _Lp>(); + } + + + template + class __weak_ptr + { + public: + typedef _Tp element_type; + + constexpr __weak_ptr() noexcept + : _M_ptr(0), _M_refcount() + { } + + __weak_ptr(const __weak_ptr&) noexcept = default; + __weak_ptr& operator=(const __weak_ptr&) noexcept = default; + ~__weak_ptr() = default; + + // The "obvious" converting constructor implementation: + // + // template + // __weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r) + // : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws + // { } + // + // has a serious problem. + // + // __r._M_ptr may already have been invalidated. The _M_ptr(__r._M_ptr) + // conversion may require access to *__r._M_ptr (virtual inheritance). + // + // It is not possible to avoid spurious access violations since + // in multithreaded programs __r._M_ptr may be invalidated at any point. + template::value>::type> + __weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r) noexcept + : _M_refcount(__r._M_refcount) + { _M_ptr = __r.lock().get(); } + + template::value>::type> + __weak_ptr(const __shared_ptr<_Tp1, _Lp>& __r) noexcept + : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) + { } + + template + __weak_ptr& + operator=(const __weak_ptr<_Tp1, _Lp>& __r) noexcept + { + _M_ptr = __r.lock().get(); + _M_refcount = __r._M_refcount; + return *this; + } + + template + __weak_ptr& + operator=(const __shared_ptr<_Tp1, _Lp>& __r) noexcept + { + _M_ptr = __r._M_ptr; + _M_refcount = __r._M_refcount; + return *this; + } + + __shared_ptr<_Tp, _Lp> + lock() const noexcept + { +#ifdef __GTHREADS + // Optimization: avoid throw overhead. + if (expired()) + return __shared_ptr(); + + __try + { + return __shared_ptr(*this); + } + __catch(const bad_weak_ptr&) + { + // Q: How can we get here? + // A: Another thread may have invalidated r after the + // use_count test above. + return __shared_ptr(); + } + +#else + // Optimization: avoid try/catch overhead when single threaded. + return expired() ? __shared_ptr() + : __shared_ptr(*this); + +#endif + } // XXX MT + + long + use_count() const noexcept + { return _M_refcount._M_get_use_count(); } + + bool + expired() const noexcept + { return _M_refcount._M_get_use_count() == 0; } + + template + bool + owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const + { return _M_refcount._M_less(__rhs._M_refcount); } + + template + bool + owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const + { return _M_refcount._M_less(__rhs._M_refcount); } + + void + reset() noexcept + { __weak_ptr().swap(*this); } + + void + swap(__weak_ptr& __s) noexcept + { + std::swap(_M_ptr, __s._M_ptr); + _M_refcount._M_swap(__s._M_refcount); + } + + private: + // Used by __enable_shared_from_this. + void + _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept + { + _M_ptr = __ptr; + _M_refcount = __refcount; + } + + template friend class __shared_ptr; + template friend class __weak_ptr; + friend class __enable_shared_from_this<_Tp, _Lp>; + friend class enable_shared_from_this<_Tp>; + + _Tp* _M_ptr; // Contained pointer. + __weak_count<_Lp> _M_refcount; // Reference counter. + }; + + // 20.7.2.3.6 weak_ptr specialized algorithms. + template + inline void + swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept + { __a.swap(__b); } + + template + struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __lhs, const _Tp& __rhs) const + { return __lhs.owner_before(__rhs); } + + bool + operator()(const _Tp& __lhs, const _Tp1& __rhs) const + { return __lhs.owner_before(__rhs); } + + bool + operator()(const _Tp1& __lhs, const _Tp& __rhs) const + { return __lhs.owner_before(__rhs); } + }; + + template + struct owner_less<__shared_ptr<_Tp, _Lp>> + : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> + { }; + + template + struct owner_less<__weak_ptr<_Tp, _Lp>> + : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> + { }; + + + template + class __enable_shared_from_this + { + protected: + constexpr __enable_shared_from_this() noexcept { } + + __enable_shared_from_this(const __enable_shared_from_this&) noexcept { } + + __enable_shared_from_this& + operator=(const __enable_shared_from_this&) noexcept + { return *this; } + + ~__enable_shared_from_this() { } + + public: + __shared_ptr<_Tp, _Lp> + shared_from_this() + { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } + + __shared_ptr + shared_from_this() const + { return __shared_ptr(this->_M_weak_this); } + + private: + template + void + _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept + { _M_weak_this._M_assign(__p, __n); } + + template + friend void + __enable_shared_from_this_helper(const __shared_count<_Lp>& __pn, + const __enable_shared_from_this* __pe, + const _Tp1* __px) noexcept + { + if (__pe != 0) + __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn); + } + + mutable __weak_ptr<_Tp, _Lp> _M_weak_this; + }; + + + template + inline __shared_ptr<_Tp, _Lp> + __allocate_shared(const _Alloc& __a, _Args&&... __args) + { + return __shared_ptr<_Tp, _Lp>(_Sp_make_shared_tag(), __a, + std::forward<_Args>(__args)...); + } + + template + inline __shared_ptr<_Tp, _Lp> + __make_shared(_Args&&... __args) + { + typedef typename std::remove_const<_Tp>::type _Tp_nc; + return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(), + std::forward<_Args>(__args)...); + } + + /// std::hash specialization for __shared_ptr. + template + struct hash<__shared_ptr<_Tp, _Lp>> + : public __hash_base> + { + size_t + operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept + { return std::hash<_Tp*>()(__s.get()); } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // _SHARED_PTR_BASE_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/slice_array.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/slice_array.h new file mode 100644 index 0000000..624d0fd --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/slice_array.h @@ -0,0 +1,274 @@ +// The template and inlines for the -*- C++ -*- slice_array class. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/slice_array.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{valarray} + */ + +// Written by Gabriel Dos Reis + +#ifndef _SLICE_ARRAY_H +#define _SLICE_ARRAY_H 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup numeric_arrays + * @{ + */ + + /** + * @brief Class defining one-dimensional subset of an array. + * + * The slice class represents a one-dimensional subset of an array, + * specified by three parameters: start offset, size, and stride. The + * start offset is the index of the first element of the array that is part + * of the subset. The size is the total number of elements in the subset. + * Stride is the distance between each successive array element to include + * in the subset. + * + * For example, with an array of size 10, and a slice with offset 1, size 3 + * and stride 2, the subset consists of array elements 1, 3, and 5. + */ + class slice + { + public: + /// Construct an empty slice. + slice(); + + /** + * @brief Construct a slice. + * + * @param __o Offset in array of first element. + * @param __d Number of elements in slice. + * @param __s Stride between array elements. + */ + slice(size_t __o, size_t __d, size_t __s); + + /// Return array offset of first slice element. + size_t start() const; + /// Return size of slice. + size_t size() const; + /// Return array stride of slice. + size_t stride() const; + + private: + size_t _M_off; // offset + size_t _M_sz; // size + size_t _M_st; // stride unit + }; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 543. valarray slice default constructor + inline + slice::slice() + : _M_off(0), _M_sz(0), _M_st(0) {} + + inline + slice::slice(size_t __o, size_t __d, size_t __s) + : _M_off(__o), _M_sz(__d), _M_st(__s) {} + + inline size_t + slice::start() const + { return _M_off; } + + inline size_t + slice::size() const + { return _M_sz; } + + inline size_t + slice::stride() const + { return _M_st; } + + /** + * @brief Reference to one-dimensional subset of an array. + * + * A slice_array is a reference to the actual elements of an array + * specified by a slice. The way to get a slice_array is to call + * operator[](slice) on a valarray. The returned slice_array then permits + * carrying operations out on the referenced subset of elements in the + * original valarray. For example, operator+=(valarray) will add values + * to the subset of elements in the underlying valarray this slice_array + * refers to. + * + * @param Tp Element type. + */ + template + class slice_array + { + public: + typedef _Tp value_type; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 253. valarray helper functions are almost entirely useless + + /// Copy constructor. Both slices refer to the same underlying array. + slice_array(const slice_array&); + + /// Assignment operator. Assigns slice elements to corresponding + /// elements of @a a. + slice_array& operator=(const slice_array&); + + /// Assign slice elements to corresponding elements of @a v. + void operator=(const valarray<_Tp>&) const; + /// Multiply slice elements by corresponding elements of @a v. + void operator*=(const valarray<_Tp>&) const; + /// Divide slice elements by corresponding elements of @a v. + void operator/=(const valarray<_Tp>&) const; + /// Modulo slice elements by corresponding elements of @a v. + void operator%=(const valarray<_Tp>&) const; + /// Add corresponding elements of @a v to slice elements. + void operator+=(const valarray<_Tp>&) const; + /// Subtract corresponding elements of @a v from slice elements. + void operator-=(const valarray<_Tp>&) const; + /// Logical xor slice elements with corresponding elements of @a v. + void operator^=(const valarray<_Tp>&) const; + /// Logical and slice elements with corresponding elements of @a v. + void operator&=(const valarray<_Tp>&) const; + /// Logical or slice elements with corresponding elements of @a v. + void operator|=(const valarray<_Tp>&) const; + /// Left shift slice elements by corresponding elements of @a v. + void operator<<=(const valarray<_Tp>&) const; + /// Right shift slice elements by corresponding elements of @a v. + void operator>>=(const valarray<_Tp>&) const; + /// Assign all slice elements to @a t. + void operator=(const _Tp &) const; + // ~slice_array (); + + template + void operator=(const _Expr<_Dom, _Tp>&) const; + template + void operator*=(const _Expr<_Dom, _Tp>&) const; + template + void operator/=(const _Expr<_Dom, _Tp>&) const; + template + void operator%=(const _Expr<_Dom, _Tp>&) const; + template + void operator+=(const _Expr<_Dom, _Tp>&) const; + template + void operator-=(const _Expr<_Dom, _Tp>&) const; + template + void operator^=(const _Expr<_Dom, _Tp>&) const; + template + void operator&=(const _Expr<_Dom, _Tp>&) const; + template + void operator|=(const _Expr<_Dom, _Tp>&) const; + template + void operator<<=(const _Expr<_Dom, _Tp>&) const; + template + void operator>>=(const _Expr<_Dom, _Tp>&) const; + + private: + friend class valarray<_Tp>; + slice_array(_Array<_Tp>, const slice&); + + const size_t _M_sz; + const size_t _M_stride; + const _Array<_Tp> _M_array; + + // not implemented + slice_array(); + }; + + template + inline + slice_array<_Tp>::slice_array(_Array<_Tp> __a, const slice& __s) + : _M_sz(__s.size()), _M_stride(__s.stride()), + _M_array(__a.begin() + __s.start()) {} + + template + inline + slice_array<_Tp>::slice_array(const slice_array<_Tp>& a) + : _M_sz(a._M_sz), _M_stride(a._M_stride), _M_array(a._M_array) {} + + // template + // inline slice_array<_Tp>::~slice_array () {} + + template + inline slice_array<_Tp>& + slice_array<_Tp>::operator=(const slice_array<_Tp>& __a) + { + std::__valarray_copy(__a._M_array, __a._M_sz, __a._M_stride, + _M_array, _M_stride); + return *this; + } + + template + inline void + slice_array<_Tp>::operator=(const _Tp& __t) const + { std::__valarray_fill(_M_array, _M_sz, _M_stride, __t); } + + template + inline void + slice_array<_Tp>::operator=(const valarray<_Tp>& __v) const + { std::__valarray_copy(_Array<_Tp>(__v), _M_array, _M_sz, _M_stride); } + + template + template + inline void + slice_array<_Tp>::operator=(const _Expr<_Dom,_Tp>& __e) const + { std::__valarray_copy(__e, _M_sz, _M_array, _M_stride); } + +#undef _DEFINE_VALARRAY_OPERATOR +#define _DEFINE_VALARRAY_OPERATOR(_Op,_Name) \ + template \ + inline void \ + slice_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const \ + { \ + _Array_augmented_##_Name(_M_array, _M_sz, _M_stride, _Array<_Tp>(__v));\ + } \ + \ + template \ + template \ + inline void \ + slice_array<_Tp>::operator _Op##=(const _Expr<_Dom,_Tp>& __e) const\ + { \ + _Array_augmented_##_Name(_M_array, _M_stride, __e, _M_sz); \ + } + + +_DEFINE_VALARRAY_OPERATOR(*, __multiplies) +_DEFINE_VALARRAY_OPERATOR(/, __divides) +_DEFINE_VALARRAY_OPERATOR(%, __modulus) +_DEFINE_VALARRAY_OPERATOR(+, __plus) +_DEFINE_VALARRAY_OPERATOR(-, __minus) +_DEFINE_VALARRAY_OPERATOR(^, __bitwise_xor) +_DEFINE_VALARRAY_OPERATOR(&, __bitwise_and) +_DEFINE_VALARRAY_OPERATOR(|, __bitwise_or) +_DEFINE_VALARRAY_OPERATOR(<<, __shift_left) +_DEFINE_VALARRAY_OPERATOR(>>, __shift_right) + +#undef _DEFINE_VALARRAY_OPERATOR + + // @} group numeric_arrays + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _SLICE_ARRAY_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/sstream.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/sstream.tcc new file mode 100644 index 0000000..f83b4ff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/sstream.tcc @@ -0,0 +1,288 @@ +// String based streams -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/sstream.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{sstream} + */ + +// +// ISO C++ 14882: 27.7 String-based streams +// + +#ifndef _SSTREAM_TCC +#define _SSTREAM_TCC 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type + basic_stringbuf<_CharT, _Traits, _Alloc>:: + pbackfail(int_type __c) + { + int_type __ret = traits_type::eof(); + if (this->eback() < this->gptr()) + { + // Try to put back __c into input sequence in one of three ways. + // Order these tests done in is unspecified by the standard. + const bool __testeof = traits_type::eq_int_type(__c, __ret); + if (!__testeof) + { + const bool __testeq = traits_type::eq(traits_type:: + to_char_type(__c), + this->gptr()[-1]); + const bool __testout = this->_M_mode & ios_base::out; + if (__testeq || __testout) + { + this->gbump(-1); + if (!__testeq) + *this->gptr() = traits_type::to_char_type(__c); + __ret = __c; + } + } + else + { + this->gbump(-1); + __ret = traits_type::not_eof(__c); + } + } + return __ret; + } + + template + typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type + basic_stringbuf<_CharT, _Traits, _Alloc>:: + overflow(int_type __c) + { + const bool __testout = this->_M_mode & ios_base::out; + if (__builtin_expect(!__testout, false)) + return traits_type::eof(); + + const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof()); + if (__builtin_expect(__testeof, false)) + return traits_type::not_eof(__c); + + const __size_type __capacity = _M_string.capacity(); + const __size_type __max_size = _M_string.max_size(); + const bool __testput = this->pptr() < this->epptr(); + if (__builtin_expect(!__testput && __capacity == __max_size, false)) + return traits_type::eof(); + + // Try to append __c into output sequence in one of two ways. + // Order these tests done in is unspecified by the standard. + const char_type __conv = traits_type::to_char_type(__c); + if (!__testput) + { + // NB: Start ostringstream buffers at 512 chars. This is an + // experimental value (pronounced "arbitrary" in some of the + // hipper English-speaking countries), and can be changed to + // suit particular needs. + // + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 169. Bad efficiency of overflow() mandated + // 432. stringbuf::overflow() makes only one write position + // available + const __size_type __opt_len = std::max(__size_type(2 * __capacity), + __size_type(512)); + const __size_type __len = std::min(__opt_len, __max_size); + __string_type __tmp; + __tmp.reserve(__len); + if (this->pbase()) + __tmp.assign(this->pbase(), this->epptr() - this->pbase()); + __tmp.push_back(__conv); + _M_string.swap(__tmp); + _M_sync(const_cast(_M_string.data()), + this->gptr() - this->eback(), this->pptr() - this->pbase()); + } + else + *this->pptr() = __conv; + this->pbump(1); + return __c; + } + + template + typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type + basic_stringbuf<_CharT, _Traits, _Alloc>:: + underflow() + { + int_type __ret = traits_type::eof(); + const bool __testin = this->_M_mode & ios_base::in; + if (__testin) + { + // Update egptr() to match the actual string end. + _M_update_egptr(); + + if (this->gptr() < this->egptr()) + __ret = traits_type::to_int_type(*this->gptr()); + } + return __ret; + } + + template + typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type + basic_stringbuf<_CharT, _Traits, _Alloc>:: + seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) + { + pos_type __ret = pos_type(off_type(-1)); + bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; + bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; + const bool __testboth = __testin && __testout && __way != ios_base::cur; + __testin &= !(__mode & ios_base::out); + __testout &= !(__mode & ios_base::in); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 453. basic_stringbuf::seekoff need not always fail for an empty stream. + const char_type* __beg = __testin ? this->eback() : this->pbase(); + if ((__beg || !__off) && (__testin || __testout || __testboth)) + { + _M_update_egptr(); + + off_type __newoffi = __off; + off_type __newoffo = __newoffi; + if (__way == ios_base::cur) + { + __newoffi += this->gptr() - __beg; + __newoffo += this->pptr() - __beg; + } + else if (__way == ios_base::end) + __newoffo = __newoffi += this->egptr() - __beg; + + if ((__testin || __testboth) + && __newoffi >= 0 + && this->egptr() - __beg >= __newoffi) + { + this->setg(this->eback(), this->eback() + __newoffi, + this->egptr()); + __ret = pos_type(__newoffi); + } + if ((__testout || __testboth) + && __newoffo >= 0 + && this->egptr() - __beg >= __newoffo) + { + _M_pbump(this->pbase(), this->epptr(), __newoffo); + __ret = pos_type(__newoffo); + } + } + return __ret; + } + + template + typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type + basic_stringbuf<_CharT, _Traits, _Alloc>:: + seekpos(pos_type __sp, ios_base::openmode __mode) + { + pos_type __ret = pos_type(off_type(-1)); + const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; + const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; + + const char_type* __beg = __testin ? this->eback() : this->pbase(); + if ((__beg || !off_type(__sp)) && (__testin || __testout)) + { + _M_update_egptr(); + + const off_type __pos(__sp); + const bool __testpos = (0 <= __pos + && __pos <= this->egptr() - __beg); + if (__testpos) + { + if (__testin) + this->setg(this->eback(), this->eback() + __pos, + this->egptr()); + if (__testout) + _M_pbump(this->pbase(), this->epptr(), __pos); + __ret = __sp; + } + } + return __ret; + } + + template + void + basic_stringbuf<_CharT, _Traits, _Alloc>:: + _M_sync(char_type* __base, __size_type __i, __size_type __o) + { + const bool __testin = _M_mode & ios_base::in; + const bool __testout = _M_mode & ios_base::out; + char_type* __endg = __base + _M_string.size(); + char_type* __endp = __base + _M_string.capacity(); + + if (__base != _M_string.data()) + { + // setbuf: __i == size of buffer area (_M_string.size() == 0). + __endg += __i; + __i = 0; + __endp = __endg; + } + + if (__testin) + this->setg(__base, __base + __i, __endg); + if (__testout) + { + _M_pbump(__base, __endp, __o); + // egptr() always tracks the string end. When !__testin, + // for the correct functioning of the streambuf inlines + // the other get area pointers are identical. + if (!__testin) + this->setg(__endg, __endg, __endg); + } + } + + template + void + basic_stringbuf<_CharT, _Traits, _Alloc>:: + _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off) + { + this->setp(__pbeg, __pend); + while (__off > __gnu_cxx::__numeric_traits::__max) + { + this->pbump(__gnu_cxx::__numeric_traits::__max); + __off -= __gnu_cxx::__numeric_traits::__max; + } + this->pbump(__off); + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template class basic_stringbuf; + extern template class basic_istringstream; + extern template class basic_ostringstream; + extern template class basic_stringstream; + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template class basic_stringbuf; + extern template class basic_istringstream; + extern template class basic_ostringstream; + extern template class basic_stringstream; +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_algo.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_algo.h new file mode 100644 index 0000000..7fa7133 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_algo.h @@ -0,0 +1,6324 @@ +// Algorithm implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_algo.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{algorithm} + */ + +#ifndef _STL_ALGO_H +#define _STL_ALGO_H 1 + +#include // for rand +#include +#include +#include // for _Temporary_buffer + +#if __cplusplus >= 201103L +#include // for std::uniform_int_distribution +#include // for std::bind +#endif + +// See concept_check.h for the __glibcxx_*_requires macros. + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// Swaps the median value of *__a, *__b and *__c to *__result + template + void + __move_median_to_first(_Iterator __result, _Iterator __a, + _Iterator __b, _Iterator __c) + { + // concept requirements + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_Iterator>::value_type>) + + if (*__a < *__b) + { + if (*__b < *__c) + std::iter_swap(__result, __b); + else if (*__a < *__c) + std::iter_swap(__result, __c); + else + std::iter_swap(__result, __a); + } + else if (*__a < *__c) + std::iter_swap(__result, __a); + else if (*__b < *__c) + std::iter_swap(__result, __c); + else + std::iter_swap(__result, __b); + } + + /// Swaps the median value of *__a, *__b and *__c under __comp to *__result + template + void + __move_median_to_first(_Iterator __result, _Iterator __a, + _Iterator __b, _Iterator __c, + _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool, + typename iterator_traits<_Iterator>::value_type, + typename iterator_traits<_Iterator>::value_type>) + + if (__comp(*__a, *__b)) + { + if (__comp(*__b, *__c)) + std::iter_swap(__result, __b); + else if (__comp(*__a, *__c)) + std::iter_swap(__result, __c); + else + std::iter_swap(__result, __a); + } + else if (__comp(*__a, *__c)) + std::iter_swap(__result, __a); + else if (__comp(*__b, *__c)) + std::iter_swap(__result, __c); + else + std::iter_swap(__result, __b); + } + + // for_each + + /// This is an overload used by find() for the Input Iterator case. + template + inline _InputIterator + __find(_InputIterator __first, _InputIterator __last, + const _Tp& __val, input_iterator_tag) + { + while (__first != __last && !(*__first == __val)) + ++__first; + return __first; + } + + /// This is an overload used by find_if() for the Input Iterator case. + template + inline _InputIterator + __find_if(_InputIterator __first, _InputIterator __last, + _Predicate __pred, input_iterator_tag) + { + while (__first != __last && !bool(__pred(*__first))) + ++__first; + return __first; + } + + /// This is an overload used by find() for the RAI case. + 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; + } + } + + /// This is an overload used by find_if() for the RAI case. + 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; + } + } + + /// This is an overload used by find_if_not() for the Input Iterator case. + template + inline _InputIterator + __find_if_not(_InputIterator __first, _InputIterator __last, + _Predicate __pred, input_iterator_tag) + { + while (__first != __last && bool(__pred(*__first))) + ++__first; + return __first; + } + + /// This is an overload used by find_if_not() for the RAI case. + 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; + } + } + + /// Provided for stable_partition to use. + template + inline _InputIterator + __find_if_not(_InputIterator __first, _InputIterator __last, + _Predicate __pred) + { + return std::__find_if_not(__first, __last, __pred, + std::__iterator_category(__first)); + } + + /// Like find_if_not(), but uses and updates a count of the + /// remaining range length instead of comparing against an end + /// iterator. + template + _InputIterator + __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) + { + for (; __len; --__len, ++__first) + if (!bool(__pred(*__first))) + break; + return __first; + } + + // set_difference + // set_intersection + // set_symmetric_difference + // set_union + // for_each + // find + // find_if + // find_first_of + // adjacent_find + // count + // count_if + // search + + /** + * This is an uglified + * search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&) + * overloaded for forward iterators. + */ + template + _ForwardIterator + __search_n(_ForwardIterator __first, _ForwardIterator __last, + _Integer __count, const _Tp& __val, + std::forward_iterator_tag) + { + __first = _GLIBCXX_STD_A::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 = _GLIBCXX_STD_A::find(++__i, __last, __val); + } + return __last; + } + + /** + * This is an uglified + * search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&) + * overloaded for random access iterators. + */ + 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; + _DistanceType __remainder = __count; + + while (__remainder <= __tailSize) // the main loop... + { + __first += __remainder; + __tailSize -= __remainder; + // __first here is always pointing to one past the last element of + // next possible match. + _RandomAccessIter __backTrack = __first; + while (*--__backTrack == __val) + { + if (--__remainder == 0) + return (__first - __count); // Success + } + __remainder = __count + 1 - (__first - __backTrack); + } + return __last; // Failure + } + + // search_n + + /** + * This is an uglified + * search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&, + * _BinaryPredicate) + * overloaded for forward iterators. + */ + 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; + } + + /** + * This is an uglified + * search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&, + * _BinaryPredicate) + * overloaded for random access iterators. + */ + 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; + _DistanceType __remainder = __count; + + while (__remainder <= __tailSize) // the main loop... + { + __first += __remainder; + __tailSize -= __remainder; + // __first here is always pointing to one past the last element of + // next possible match. + _RandomAccessIter __backTrack = __first; + while (__binary_pred(*--__backTrack, __val)) + { + if (--__remainder == 0) + return (__first - __count); // Success + } + __remainder = __count + 1 - (__first - __backTrack); + } + return __last; // Failure + } + + // find_end for forward iterators. + 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 + = _GLIBCXX_STD_A::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 + = _GLIBCXX_STD_A::search(__first1, __last1, __first2, + __last2, __comp); + if (__new_result == __last1) + return __result; + else + { + __result = __new_result; + __first1 = __new_result; + ++__first1; + } + } + } + } + + // find_end for bidirectional iterators (much faster). + template + _BidirectionalIterator1 + __find_end(_BidirectionalIterator1 __first1, + _BidirectionalIterator1 __last1, + _BidirectionalIterator2 __first2, + _BidirectionalIterator2 __last2, + bidirectional_iterator_tag, bidirectional_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator1>) + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator2>) + + typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; + typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; + + _RevIterator1 __rlast1(__first1); + _RevIterator2 __rlast2(__first2); + _RevIterator1 __rresult = _GLIBCXX_STD_A::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) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator1>) + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator2>) + + 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; + } + } + + /** + * @brief Find last matching subsequence in a sequence. + * @ingroup non_mutating_algorithms + * @param __first1 Start of range to search. + * @param __last1 End of range to search. + * @param __first2 Start of sequence to match. + * @param __last2 End of sequence to match. + * @return The last iterator @c i in the range + * @p [__first1,__last1-(__last2-__first2)) such that @c *(i+N) == + * @p *(__first2+N) for each @c N in the range @p + * [0,__last2-__first2), or @p __last1 if no such iterator exists. + * + * Searches the range @p [__first1,__last1) for a sub-sequence that + * compares equal value-by-value with the sequence given by @p + * [__first2,__last2) and returns an iterator to the __first + * element of the sub-sequence, or @p __last1 if the sub-sequence + * is not found. The sub-sequence will be the last such + * subsequence contained in [__first,__last1). + * + * Because the sub-sequence must lie completely within the range @p + * [__first1,__last1) it must start at a position less than @p + * __last1-(__last2-__first2) where @p __last2-__first2 is the + * length of the sub-sequence. This means that the returned + * iterator @c i will be in the range @p + * [__first1,__last1-(__last2-__first2)) + */ + template + inline _ForwardIterator1 + find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator1>) + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator2>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_ForwardIterator1>::value_type, + typename iterator_traits<_ForwardIterator2>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + return std::__find_end(__first1, __last1, __first2, __last2, + std::__iterator_category(__first1), + std::__iterator_category(__first2)); + } + + /** + * @brief Find last matching subsequence in a sequence using a predicate. + * @ingroup non_mutating_algorithms + * @param __first1 Start of range to search. + * @param __last1 End of range to search. + * @param __first2 Start of sequence to match. + * @param __last2 End of sequence to match. + * @param __comp The predicate to use. + * @return The last iterator @c i in the range @p + * [__first1,__last1-(__last2-__first2)) such that @c + * predicate(*(i+N), @p (__first2+N)) is true for each @c N in the + * range @p [0,__last2-__first2), or @p __last1 if no such iterator + * exists. + * + * Searches the range @p [__first1,__last1) for a sub-sequence that + * compares equal value-by-value with the sequence given by @p + * [__first2,__last2) using comp as a predicate and returns an + * iterator to the first element of the sub-sequence, or @p __last1 + * if the sub-sequence is not found. The sub-sequence will be the + * last such subsequence contained in [__first,__last1). + * + * Because the sub-sequence must lie completely within the range @p + * [__first1,__last1) it must start at a position less than @p + * __last1-(__last2-__first2) where @p __last2-__first2 is the + * length of the sub-sequence. This means that the returned + * iterator @c i will be in the range @p + * [__first1,__last1-(__last2-__first2)) + */ + template + inline _ForwardIterator1 + find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate __comp) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator1>) + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate, + typename iterator_traits<_ForwardIterator1>::value_type, + typename iterator_traits<_ForwardIterator2>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + return std::__find_end(__first1, __last1, __first2, __last2, + std::__iterator_category(__first1), + std::__iterator_category(__first2), + __comp); + } + +#if __cplusplus >= 201103L + /** + * @brief Checks that a predicate is true for all the elements + * of a sequence. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __pred A predicate. + * @return True if the check is true, false otherwise. + * + * Returns true if @p __pred is true for each element in the range + * @p [__first,__last), and false otherwise. + */ + template + inline bool + all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) + { return __last == std::find_if_not(__first, __last, __pred); } + + /** + * @brief Checks that a predicate is false for all the elements + * of a sequence. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __pred A predicate. + * @return True if the check is true, false otherwise. + * + * Returns true if @p __pred is false for each element in the range + * @p [__first,__last), and false otherwise. + */ + template + inline bool + none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) + { return __last == _GLIBCXX_STD_A::find_if(__first, __last, __pred); } + + /** + * @brief Checks that a predicate is false for at least an element + * of a sequence. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __pred A predicate. + * @return True if the check is true, false otherwise. + * + * Returns true if an element exists in the range @p + * [__first,__last) such that @p __pred is true, and false + * otherwise. + */ + template + inline bool + any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) + { return !std::none_of(__first, __last, __pred); } + + /** + * @brief Find the first element in a sequence for which a + * predicate is false. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __pred A predicate. + * @return The first iterator @c i in the range @p [__first,__last) + * such that @p __pred(*i) is false, or @p __last if no such iterator exists. + */ + template + inline _InputIterator + find_if_not(_InputIterator __first, _InputIterator __last, + _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + return std::__find_if_not(__first, __last, __pred); + } + + /** + * @brief Checks whether the sequence is partitioned. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __pred A predicate. + * @return True if the range @p [__first,__last) is partioned by @p __pred, + * i.e. if all elements that satisfy @p __pred appear before those that + * do not. + */ + 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); + } + + /** + * @brief Find the partition point of a partitioned range. + * @ingroup mutating_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __pred A predicate. + * @return An iterator @p mid such that @p all_of(__first, mid, __pred) + * and @p none_of(mid, __last, __pred) are both true. + */ + template + _ForwardIterator + partition_point(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_ForwardIterator>::value_type>) + + // A specific debug-mode test will be necessary... + __glibcxx_requires_valid_range(__first, __last); + + 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; + } +#endif + + + /** + * @brief Copy a sequence, removing elements of a given value. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @param __value The value to be removed. + * @return An iterator designating the end of the resulting sequence. + * + * Copies each element in the range @p [__first,__last) not equal + * to @p __value to the range beginning at @p __result. + * remove_copy() is stable, so the relative order of elements that + * are copied is unchanged. + */ + template + _OutputIterator + remove_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, const _Tp& __value) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_InputIterator>::value_type, _Tp>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first) + if (!(*__first == __value)) + { + *__result = *__first; + ++__result; + } + return __result; + } + + /** + * @brief Copy a sequence, removing elements for which a predicate is true. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @param __pred A predicate. + * @return An iterator designating the end of the resulting sequence. + * + * Copies each element in the range @p [__first,__last) for which + * @p __pred returns false to the range beginning at @p __result. + * + * remove_copy_if() is stable, so the relative order of elements that are + * copied is unchanged. + */ + template + _OutputIterator + remove_copy_if(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first) + if (!bool(__pred(*__first))) + { + *__result = *__first; + ++__result; + } + return __result; + } + +#if __cplusplus >= 201103L + /** + * @brief Copy the elements of a sequence for which a predicate is true. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @param __pred A predicate. + * @return An iterator designating the end of the resulting sequence. + * + * Copies each element in the range @p [__first,__last) for which + * @p __pred returns true to the range beginning at @p __result. + * + * copy_if() is stable, so the relative order of elements that are + * copied is unchanged. + */ + template + _OutputIterator + copy_if(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + 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); } + + /** + * @brief Copies the range [first,first+n) into [result,result+n). + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __n The number of elements to copy. + * @param __result An output iterator. + * @return result+n. + * + * This inline function will boil down to a call to @c memmove whenever + * possible. Failing that, if random access iterators are passed, then the + * loop count will be known (and therefore a candidate for compiler + * optimizations such as unrolling). + */ + template + inline _OutputIterator + copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + + return std::__copy_n(__first, __n, __result, + std::__iterator_category(__first)); + } + + /** + * @brief Copy the elements of a sequence to separate output sequences + * depending on the truth value of a predicate. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __out_true An output iterator. + * @param __out_false An output iterator. + * @param __pred A predicate. + * @return A pair designating the ends of the resulting sequences. + * + * Copies each element in the range @p [__first,__last) for which + * @p __pred returns true to the range beginning at @p out_true + * and each element for which @p __pred returns false to @p __out_false. + */ + template + pair<_OutputIterator1, _OutputIterator2> + partition_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator1 __out_true, _OutputIterator2 __out_false, + _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator1, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator2, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + 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); + } +#endif + + /** + * @brief Remove elements from a sequence. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __value The value to be removed. + * @return An iterator designating the end of the resulting sequence. + * + * All elements equal to @p __value are removed from the range + * @p [__first,__last). + * + * remove() is stable, so the relative order of elements that are + * not removed is unchanged. + * + * Elements between the end of the resulting sequence and @p __last + * are still present, but their value is unspecified. + */ + template + _ForwardIterator + remove(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __value) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_ForwardIterator>::value_type, _Tp>) + __glibcxx_requires_valid_range(__first, __last); + + __first = _GLIBCXX_STD_A::find(__first, __last, __value); + if(__first == __last) + return __first; + _ForwardIterator __result = __first; + ++__first; + for(; __first != __last; ++__first) + if(!(*__first == __value)) + { + *__result = _GLIBCXX_MOVE(*__first); + ++__result; + } + return __result; + } + + /** + * @brief Remove elements from a sequence using a predicate. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __pred A predicate. + * @return An iterator designating the end of the resulting sequence. + * + * All elements for which @p __pred returns true are removed from the range + * @p [__first,__last). + * + * remove_if() is stable, so the relative order of elements that are + * not removed is unchanged. + * + * Elements between the end of the resulting sequence and @p __last + * are still present, but their value is unspecified. + */ + template + _ForwardIterator + remove_if(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + __first = _GLIBCXX_STD_A::find_if(__first, __last, __pred); + if(__first == __last) + return __first; + _ForwardIterator __result = __first; + ++__first; + for(; __first != __last; ++__first) + if(!bool(__pred(*__first))) + { + *__result = _GLIBCXX_MOVE(*__first); + ++__result; + } + return __result; + } + + /** + * @brief Remove consecutive duplicate values from a sequence. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @return An iterator designating the end of the resulting sequence. + * + * Removes all but the first element from each group of consecutive + * values that compare equal. + * unique() is stable, so the relative order of elements that are + * not removed is unchanged. + * Elements between the end of the resulting sequence and @p __last + * are still present, but their value is unspecified. + */ + template + _ForwardIterator + unique(_ForwardIterator __first, _ForwardIterator __last) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_function_requires(_EqualityComparableConcept< + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + // Skip the beginning, if already unique. + __first = _GLIBCXX_STD_A::adjacent_find(__first, __last); + if (__first == __last) + return __last; + + // Do the real copy work. + _ForwardIterator __dest = __first; + ++__first; + while (++__first != __last) + if (!(*__dest == *__first)) + *++__dest = _GLIBCXX_MOVE(*__first); + return ++__dest; + } + + /** + * @brief Remove consecutive values from a sequence using a predicate. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __binary_pred A binary predicate. + * @return An iterator designating the end of the resulting sequence. + * + * Removes all but the first element from each group of consecutive + * values for which @p __binary_pred returns true. + * unique() is stable, so the relative order of elements that are + * not removed is unchanged. + * Elements between the end of the resulting sequence and @p __last + * are still present, but their value is unspecified. + */ + template + _ForwardIterator + unique(_ForwardIterator __first, _ForwardIterator __last, + _BinaryPredicate __binary_pred) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + // Skip the beginning, if already unique. + __first = _GLIBCXX_STD_A::adjacent_find(__first, __last, __binary_pred); + if (__first == __last) + return __last; + + // Do the real copy work. + _ForwardIterator __dest = __first; + ++__first; + while (++__first != __last) + if (!bool(__binary_pred(*__dest, *__first))) + *++__dest = _GLIBCXX_MOVE(*__first); + return ++__dest; + } + + /** + * This is an uglified unique_copy(_InputIterator, _InputIterator, + * _OutputIterator) + * overloaded for forward iterators and output iterator as result. + */ + template + _OutputIterator + __unique_copy(_ForwardIterator __first, _ForwardIterator __last, + _OutputIterator __result, + forward_iterator_tag, output_iterator_tag) + { + // concept requirements -- taken care of in dispatching function + _ForwardIterator __next = __first; + *__result = *__first; + while (++__next != __last) + if (!(*__first == *__next)) + { + __first = __next; + *++__result = *__first; + } + return ++__result; + } + + /** + * This is an uglified unique_copy(_InputIterator, _InputIterator, + * _OutputIterator) + * overloaded for input iterators and output iterator as result. + */ + template + _OutputIterator + __unique_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, + input_iterator_tag, output_iterator_tag) + { + // concept requirements -- taken care of in dispatching function + typename iterator_traits<_InputIterator>::value_type __value = *__first; + *__result = __value; + while (++__first != __last) + if (!(__value == *__first)) + { + __value = *__first; + *++__result = __value; + } + return ++__result; + } + + /** + * This is an uglified unique_copy(_InputIterator, _InputIterator, + * _OutputIterator) + * overloaded for input iterators and forward iterator as result. + */ + template + _ForwardIterator + __unique_copy(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result, + input_iterator_tag, forward_iterator_tag) + { + // concept requirements -- taken care of in dispatching function + *__result = *__first; + while (++__first != __last) + if (!(*__result == *__first)) + *++__result = *__first; + return ++__result; + } + + /** + * This is an uglified + * unique_copy(_InputIterator, _InputIterator, _OutputIterator, + * _BinaryPredicate) + * overloaded for forward iterators and output iterator as result. + */ + template + _OutputIterator + __unique_copy(_ForwardIterator __first, _ForwardIterator __last, + _OutputIterator __result, _BinaryPredicate __binary_pred, + forward_iterator_tag, output_iterator_tag) + { + // concept requirements -- iterators already checked + __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + + _ForwardIterator __next = __first; + *__result = *__first; + while (++__next != __last) + if (!bool(__binary_pred(*__first, *__next))) + { + __first = __next; + *++__result = *__first; + } + return ++__result; + } + + /** + * This is an uglified + * unique_copy(_InputIterator, _InputIterator, _OutputIterator, + * _BinaryPredicate) + * overloaded for input iterators and output iterator as result. + */ + template + _OutputIterator + __unique_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _BinaryPredicate __binary_pred, + input_iterator_tag, output_iterator_tag) + { + // concept requirements -- iterators already checked + __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate, + typename iterator_traits<_InputIterator>::value_type, + typename iterator_traits<_InputIterator>::value_type>) + + 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; + } + + /** + * This is an uglified + * unique_copy(_InputIterator, _InputIterator, _OutputIterator, + * _BinaryPredicate) + * overloaded for input iterators and forward iterator as result. + */ + template + _ForwardIterator + __unique_copy(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result, _BinaryPredicate __binary_pred, + input_iterator_tag, forward_iterator_tag) + { + // concept requirements -- iterators already checked + __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_InputIterator>::value_type>) + + *__result = *__first; + while (++__first != __last) + if (!bool(__binary_pred(*__result, *__first))) + *++__result = *__first; + return ++__result; + } + + /** + * This is an uglified reverse(_BidirectionalIterator, + * _BidirectionalIterator) + * overloaded for bidirectional iterators. + */ + 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; + } + } + + /** + * This is an uglified reverse(_BidirectionalIterator, + * _BidirectionalIterator) + * overloaded for random access iterators. + */ + 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; + } + } + + /** + * @brief Reverse a sequence. + * @ingroup mutating_algorithms + * @param __first A bidirectional iterator. + * @param __last A bidirectional iterator. + * @return reverse() returns no value. + * + * Reverses the order of the elements in the range @p [__first,__last), + * so that the first element becomes the last etc. + * For every @c i such that @p 0<=i<=(__last-__first)/2), @p reverse() + * swaps @p *(__first+i) and @p *(__last-(i+1)) + */ + template + inline void + reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) + { + // concept requirements + __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept< + _BidirectionalIterator>) + __glibcxx_requires_valid_range(__first, __last); + std::__reverse(__first, __last, std::__iterator_category(__first)); + } + + /** + * @brief Copy a sequence, reversing its elements. + * @ingroup mutating_algorithms + * @param __first A bidirectional iterator. + * @param __last A bidirectional iterator. + * @param __result An output iterator. + * @return An iterator designating the end of the resulting sequence. + * + * Copies the elements in the range @p [__first,__last) to the + * range @p [__result,__result+(__last-__first)) such that the + * order of the elements is reversed. For every @c i such that @p + * 0<=i<=(__last-__first), @p reverse_copy() performs the + * assignment @p *(__result+(__last-__first)-1-i) = *(__first+i). + * The ranges @p [__first,__last) and @p + * [__result,__result+(__last-__first)) must not overlap. + */ + template + _OutputIterator + reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, + _OutputIterator __result) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_BidirectionalIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + while (__first != __last) + { + --__last; + *__result = *__last; + ++__result; + } + return __result; + } + + /** + * This is a helper function for the rotate algorithm specialized on RAIs. + * It returns the greatest common divisor of two integer values. + */ + template + _EuclideanRingElement + __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) + { + while (__n != 0) + { + _EuclideanRingElement __t = __m % __n; + __m = __n; + __n = __t; + } + return __m; + } + + /// This is a helper function for the rotate algorithm. + 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; + } + } + + /// This is a helper function for the rotate algorithm. + template + void + __rotate(_BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last, + bidirectional_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept< + _BidirectionalIterator>) + + 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()); + } + + /// This is a helper function for the rotate algorithm. + template + void + __rotate(_RandomAccessIterator __first, + _RandomAccessIterator __middle, + _RandomAccessIterator __last, + random_access_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + + 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 = _GLIBCXX_MOVE(*__p); + _GLIBCXX_MOVE3(__p + 1, __p + __n, __p); + *(__p + __n - 1) = _GLIBCXX_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 = _GLIBCXX_MOVE(*(__p + __n - 1)); + _GLIBCXX_MOVE_BACKWARD3(__p, __p + __n - 1, __p + __n); + *__p = _GLIBCXX_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); + } + } + } + + /** + * @brief Rotate the elements of a sequence. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __middle A forward iterator. + * @param __last A forward iterator. + * @return Nothing. + * + * Rotates the elements of the range @p [__first,__last) by + * @p (__middle - __first) positions so that the element at @p __middle + * is moved to @p __first, the element at @p __middle+1 is moved to + * @p __first+1 and so on for each element in the range + * @p [__first,__last). + * + * This effectively swaps the ranges @p [__first,__middle) and + * @p [__middle,__last). + * + * Performs + * @p *(__first+(n+(__last-__middle))%(__last-__first))=*(__first+n) + * for each @p n in the range @p [0,__last-__first). + */ + template + inline void + rotate(_ForwardIterator __first, _ForwardIterator __middle, + _ForwardIterator __last) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_requires_valid_range(__first, __middle); + __glibcxx_requires_valid_range(__middle, __last); + + typedef typename iterator_traits<_ForwardIterator>::iterator_category + _IterType; + std::__rotate(__first, __middle, __last, _IterType()); + } + + /** + * @brief Copy a sequence, rotating its elements. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __middle A forward iterator. + * @param __last A forward iterator. + * @param __result An output iterator. + * @return An iterator designating the end of the resulting sequence. + * + * Copies the elements of the range @p [__first,__last) to the + * range beginning at @result, rotating the copied elements by + * @p (__middle-__first) positions so that the element at @p __middle + * is moved to @p __result, the element at @p __middle+1 is moved + * to @p __result+1 and so on for each element in the range @p + * [__first,__last). + * + * Performs + * @p *(__result+(n+(__last-__middle))%(__last-__first))=*(__first+n) + * for each @p n in the range @p [0,__last-__first). + */ + template + _OutputIterator + rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, + _ForwardIterator __last, _OutputIterator __result) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __middle); + __glibcxx_requires_valid_range(__middle, __last); + + return std::copy(__first, __middle, + std::copy(__middle, __last, __result)); + } + + /// This is a helper function... + 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; + } + + /// This is a helper function... + 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; + } + } + + // partition + + /// This is a helper function... + /// Requires __len != 0 and !__pred(*__first), + /// same as __stable_partition_adaptive. + 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); + // Advance past true-predicate values to satisfy this + // function's preconditions. + _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; + } + + /// This is a helper function... + /// Requires __first != __last and !__pred(*__first) + /// and __len == distance(__first, __last). + /// + /// !__pred(*__first) allows us to guarantee that we don't + /// move-assign an element onto itself. + 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; + // The precondition guarantees that !__pred(*__first), so + // move that element to the buffer before starting the loop. + // This ensures that we only call __pred once per element. + *__result2 = _GLIBCXX_MOVE(*__first); + ++__result2; + ++__first; + for (; __first != __last; ++__first) + if (__pred(*__first)) + { + *__result1 = _GLIBCXX_MOVE(*__first); + ++__result1; + } + else + { + *__result2 = _GLIBCXX_MOVE(*__first); + ++__result2; + } + _GLIBCXX_MOVE3(__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); + // Advance past true-predicate values to satisfy this + // function's preconditions. + _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; + } + } + + /** + * @brief Move elements for which a predicate is true to the beginning + * of a sequence, preserving relative ordering. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __pred A predicate functor. + * @return An iterator @p middle such that @p __pred(i) is true for each + * iterator @p i in the range @p [first,middle) and false for each @p i + * in the range @p [middle,last). + * + * Performs the same function as @p partition() with the additional + * guarantee that the relative ordering of elements in each group is + * preserved, so any two elements @p x and @p y in the range + * @p [__first,__last) such that @p __pred(x)==__pred(y) will have the same + * relative ordering after calling @p stable_partition(). + */ + template + _ForwardIterator + stable_partition(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + __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())); + } + } + + /// This is a helper function for the sort routines. + 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); + } + + /// This is a helper function for the sort routines. + 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); + } + + // partial_sort + + /** + * @brief Copy the smallest elements of a sequence. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __result_first A random-access iterator. + * @param __result_last Another random-access iterator. + * @return An iterator indicating the end of the resulting sequence. + * + * Copies and sorts the smallest N values from the range @p [__first,__last) + * to the range beginning at @p __result_first, where the number of + * elements to be copied, @p N, is the smaller of @p (__last-__first) and + * @p (__result_last-__result_first). + * After the sort if @e i and @e j are iterators in the range + * @p [__result_first,__result_first+N) such that i precedes j then + * *j<*i is false. + * The value returned is @p __result_first+N. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_ConvertibleConcept<_InputValueType, + _OutputValueType>) + __glibcxx_function_requires(_LessThanOpConcept<_InputValueType, + _OutputValueType>) + __glibcxx_function_requires(_LessThanComparableConcept<_OutputValueType>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_valid_range(__result_first, __result_last); + + 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; + } + + /** + * @brief Copy the smallest elements of a sequence using a predicate for + * comparison. + * @ingroup sorting_algorithms + * @param __first An input iterator. + * @param __last Another input iterator. + * @param __result_first A random-access iterator. + * @param __result_last Another random-access iterator. + * @param __comp A comparison functor. + * @return An iterator indicating the end of the resulting sequence. + * + * Copies and sorts the smallest N values from the range @p [__first,__last) + * to the range beginning at @p result_first, where the number of + * elements to be copied, @p N, is the smaller of @p (__last-__first) and + * @p (__result_last-__result_first). + * After the sort if @e i and @e j are iterators in the range + * @p [__result_first,__result_first+N) such that i precedes j then + * @p __comp(*j,*i) is false. + * The value returned is @p __result_first+N. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_ConvertibleConcept<_InputValueType, + _OutputValueType>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _InputValueType, _OutputValueType>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _OutputValueType, _OutputValueType>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_valid_range(__result_first, __result_last); + + 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; + } + + /// This is a helper function for the sort routine. + template + void + __unguarded_linear_insert(_RandomAccessIterator __last) + { + typename iterator_traits<_RandomAccessIterator>::value_type + __val = _GLIBCXX_MOVE(*__last); + _RandomAccessIterator __next = __last; + --__next; + while (__val < *__next) + { + *__last = _GLIBCXX_MOVE(*__next); + __last = __next; + --__next; + } + *__last = _GLIBCXX_MOVE(__val); + } + + /// This is a helper function for the sort routine. + template + void + __unguarded_linear_insert(_RandomAccessIterator __last, + _Compare __comp) + { + typename iterator_traits<_RandomAccessIterator>::value_type + __val = _GLIBCXX_MOVE(*__last); + _RandomAccessIterator __next = __last; + --__next; + while (__comp(__val, *__next)) + { + *__last = _GLIBCXX_MOVE(*__next); + __last = __next; + --__next; + } + *__last = _GLIBCXX_MOVE(__val); + } + + /// This is a helper function for the sort routine. + 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 = _GLIBCXX_MOVE(*__i); + _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + 1); + *__first = _GLIBCXX_MOVE(__val); + } + else + std::__unguarded_linear_insert(__i); + } + } + + /// This is a helper function for the sort routine. + 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 = _GLIBCXX_MOVE(*__i); + _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + 1); + *__first = _GLIBCXX_MOVE(__val); + } + else + std::__unguarded_linear_insert(__i, __comp); + } + } + + /// This is a helper function for the sort routine. + 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); + } + + /// This is a helper function for the sort routine. + 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); + } + + /** + * @doctodo + * This controls some aspect of the sort routines. + */ + enum { _S_threshold = 16 }; + + /// This is a helper function for the sort routine. + 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); + } + + /// This is a helper function for the sort routine. + 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); + } + + /// This is a helper function... + 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; + } + } + + /// This is a helper function... + 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; + } + } + + /// This is a helper function... + template + inline _RandomAccessIterator + __unguarded_partition_pivot(_RandomAccessIterator __first, + _RandomAccessIterator __last) + { + _RandomAccessIterator __mid = __first + (__last - __first) / 2; + std::__move_median_to_first(__first, __first + 1, __mid, __last - 1); + return std::__unguarded_partition(__first + 1, __last, *__first); + } + + + /// This is a helper function... + template + inline _RandomAccessIterator + __unguarded_partition_pivot(_RandomAccessIterator __first, + _RandomAccessIterator __last, _Compare __comp) + { + _RandomAccessIterator __mid = __first + (__last - __first) / 2; + std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, + __comp); + return std::__unguarded_partition(__first + 1, __last, *__first, __comp); + } + + /// This is a helper function for the sort routine. + template + void + __introsort_loop(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Size __depth_limit) + { + while (__last - __first > int(_S_threshold)) + { + if (__depth_limit == 0) + { + _GLIBCXX_STD_A::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; + } + } + + /// This is a helper function for the sort routine. + template + void + __introsort_loop(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Size __depth_limit, _Compare __comp) + { + while (__last - __first > int(_S_threshold)) + { + if (__depth_limit == 0) + { + _GLIBCXX_STD_A::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; + } + } + + // sort + + 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); + + // Place the nth largest element in its final position. + 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); + // Place the nth largest element in its final position. + 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); + } + + // nth_element + + // lower_bound moved to stl_algobase.h + + /** + * @brief Finds the first position in which @p __val could be inserted + * without changing the ordering. + * @ingroup binary_search_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __val The search term. + * @param __comp A functor to use for comparisons. + * @return An iterator pointing to the first element not less + * than @p __val, or end() if every element is less + * than @p __val. + * @ingroup binary_search_algorithms + * + * The comparison function should have the same effects on ordering as + * the function used for the initial sort. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType, _Tp>) + __glibcxx_requires_partitioned_lower_pred(__first, __last, + __val, __comp); + + _DistanceType __len = std::distance(__first, __last); + + while (__len > 0) + { + _DistanceType __half = __len >> 1; + _ForwardIterator __middle = __first; + std::advance(__middle, __half); + if (__comp(*__middle, __val)) + { + __first = __middle; + ++__first; + __len = __len - __half - 1; + } + else + __len = __half; + } + return __first; + } + + /** + * @brief Finds the last position in which @p __val could be inserted + * without changing the ordering. + * @ingroup binary_search_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __val The search term. + * @return An iterator pointing to the first element greater than @p __val, + * or end() if no elements are greater than @p __val. + * @ingroup binary_search_algorithms + */ + 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; + + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>) + __glibcxx_requires_partitioned_upper(__first, __last, __val); + + _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; + } + + /** + * @brief Finds the last position in which @p __val could be inserted + * without changing the ordering. + * @ingroup binary_search_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __val The search term. + * @param __comp A functor to use for comparisons. + * @return An iterator pointing to the first element greater than @p __val, + * or end() if no elements are greater than @p __val. + * @ingroup binary_search_algorithms + * + * The comparison function should have the same effects on ordering as + * the function used for the initial sort. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _Tp, _ValueType>) + __glibcxx_requires_partitioned_upper_pred(__first, __last, + __val, __comp); + + _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; + } + + /** + * @brief Finds the largest subrange in which @p __val could be inserted + * at any place in it without changing the ordering. + * @ingroup binary_search_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __val The search term. + * @return An pair of iterators defining the subrange. + * @ingroup binary_search_algorithms + * + * This is equivalent to + * @code + * std::make_pair(lower_bound(__first, __last, __val), + * upper_bound(__first, __last, __val)) + * @endcode + * but does not actually call those functions. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType, _Tp>) + __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>) + __glibcxx_requires_partitioned_lower(__first, __last, __val); + __glibcxx_requires_partitioned_upper(__first, __last, __val); + + _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); + } + + /** + * @brief Finds the largest subrange in which @p __val could be inserted + * at any place in it without changing the ordering. + * @param __first An iterator. + * @param __last Another iterator. + * @param __val The search term. + * @param __comp A functor to use for comparisons. + * @return An pair of iterators defining the subrange. + * @ingroup binary_search_algorithms + * + * This is equivalent to + * @code + * std::make_pair(lower_bound(__first, __last, __val, __comp), + * upper_bound(__first, __last, __val, __comp)) + * @endcode + * but does not actually call those functions. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType, _Tp>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _Tp, _ValueType>) + __glibcxx_requires_partitioned_lower_pred(__first, __last, + __val, __comp); + __glibcxx_requires_partitioned_upper_pred(__first, __last, + __val, __comp); + + _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); + } + + /** + * @brief Determines whether an element exists in a range. + * @ingroup binary_search_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __val The search term. + * @return True if @p __val (or its equivalent) is in [@p + * __first,@p __last ]. + * + * Note that this does not actually return an iterator to @p __val. For + * that, use std::find or a container's specialized find member functions. + */ + template + bool + binary_search(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanOpConcept<_Tp, _ValueType>) + __glibcxx_requires_partitioned_lower(__first, __last, __val); + __glibcxx_requires_partitioned_upper(__first, __last, __val); + + _ForwardIterator __i = std::lower_bound(__first, __last, __val); + return __i != __last && !(__val < *__i); + } + + /** + * @brief Determines whether an element exists in a range. + * @ingroup binary_search_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __val The search term. + * @param __comp A functor to use for comparisons. + * @return True if @p __val (or its equivalent) is in @p [__first,__last]. + * + * Note that this does not actually return an iterator to @p __val. For + * that, use std::find or a container's specialized find member functions. + * + * The comparison function should have the same effects on ordering as + * the function used for the initial sort. + */ + template + bool + binary_search(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val, _Compare __comp) + { + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; + + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _Tp, _ValueType>) + __glibcxx_requires_partitioned_lower_pred(__first, __last, + __val, __comp); + __glibcxx_requires_partitioned_upper_pred(__first, __last, + __val, __comp); + + _ForwardIterator __i = std::lower_bound(__first, __last, __val, __comp); + return __i != __last && !bool(__comp(__val, *__i)); + } + + // merge + + /// This is a helper function for the __merge_adaptive routines. + template + void + __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result) + { + while (__first1 != __last1 && __first2 != __last2) + { + if (*__first2 < *__first1) + { + *__result = _GLIBCXX_MOVE(*__first2); + ++__first2; + } + else + { + *__result = _GLIBCXX_MOVE(*__first1); + ++__first1; + } + ++__result; + } + if (__first1 != __last1) + _GLIBCXX_MOVE3(__first1, __last1, __result); + } + + /// This is a helper function for the __merge_adaptive routines. + 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 = _GLIBCXX_MOVE(*__first2); + ++__first2; + } + else + { + *__result = _GLIBCXX_MOVE(*__first1); + ++__first1; + } + ++__result; + } + if (__first1 != __last1) + _GLIBCXX_MOVE3(__first1, __last1, __result); + } + + /// This is a helper function for the __merge_adaptive routines. + template + void + __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, + _BidirectionalIterator1 __last1, + _BidirectionalIterator2 __first2, + _BidirectionalIterator2 __last2, + _BidirectionalIterator3 __result) + { + if (__first1 == __last1) + { + _GLIBCXX_MOVE_BACKWARD3(__first2, __last2, __result); + return; + } + else if (__first2 == __last2) + return; + + --__last1; + --__last2; + while (true) + { + if (*__last2 < *__last1) + { + *--__result = _GLIBCXX_MOVE(*__last1); + if (__first1 == __last1) + { + _GLIBCXX_MOVE_BACKWARD3(__first2, ++__last2, __result); + return; + } + --__last1; + } + else + { + *--__result = _GLIBCXX_MOVE(*__last2); + if (__first2 == __last2) + return; + --__last2; + } + } + } + + /// This is a helper function for the __merge_adaptive routines. + template + void + __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, + _BidirectionalIterator1 __last1, + _BidirectionalIterator2 __first2, + _BidirectionalIterator2 __last2, + _BidirectionalIterator3 __result, + _Compare __comp) + { + if (__first1 == __last1) + { + _GLIBCXX_MOVE_BACKWARD3(__first2, __last2, __result); + return; + } + else if (__first2 == __last2) + return; + + --__last1; + --__last2; + while (true) + { + if (__comp(*__last2, *__last1)) + { + *--__result = _GLIBCXX_MOVE(*__last1); + if (__first1 == __last1) + { + _GLIBCXX_MOVE_BACKWARD3(__first2, ++__last2, __result); + return; + } + --__last1; + } + else + { + *--__result = _GLIBCXX_MOVE(*__last2); + if (__first2 == __last2) + return; + --__last2; + } + } + } + + /// This is a helper function for the merge routines. + 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 = _GLIBCXX_MOVE3(__middle, __last, __buffer); + _GLIBCXX_MOVE_BACKWARD3(__first, __middle, __last); + return _GLIBCXX_MOVE3(__buffer, __buffer_end, __first); + } + else + return __first; + } + else if (__len1 <= __buffer_size) + { + if (__len1) + { + __buffer_end = _GLIBCXX_MOVE3(__first, __middle, __buffer); + _GLIBCXX_MOVE3(__middle, __last, __first); + return _GLIBCXX_MOVE_BACKWARD3(__buffer, __buffer_end, __last); + } + else + return __last; + } + else + { + std::rotate(__first, __middle, __last); + std::advance(__first, std::distance(__middle, __last)); + return __first; + } + } + + /// This is a helper function for the merge routines. + 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 = _GLIBCXX_MOVE3(__first, __middle, __buffer); + std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, + __first); + } + else if (__len2 <= __buffer_size) + { + _Pointer __buffer_end = _GLIBCXX_MOVE3(__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); + } + } + + /// This is a helper function for the merge routines. + 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 = _GLIBCXX_MOVE3(__first, __middle, __buffer); + std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, + __first, __comp); + } + else if (__len2 <= __buffer_size) + { + _Pointer __buffer_end = _GLIBCXX_MOVE3(__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); + } + } + + /// This is a helper function for the merge routines. + 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); + } + + /// This is a helper function for the merge routines. + 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); + } + + /** + * @brief Merges two sorted ranges in place. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __middle Another iterator. + * @param __last Another iterator. + * @return Nothing. + * + * Merges two sorted and consecutive ranges, [__first,__middle) and + * [__middle,__last), and puts the result in [__first,__last). The + * output will be sorted. The sort is @e stable, that is, for + * equivalent elements in the two ranges, elements from the first + * range will always come before elements from the second. + * + * If enough additional memory is available, this takes (__last-__first)-1 + * comparisons. Otherwise an NlogN algorithm is used, where N is + * distance(__first,__last). + */ + 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; + + // concept requirements + __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept< + _BidirectionalIterator>) + __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) + __glibcxx_requires_sorted(__first, __middle); + __glibcxx_requires_sorted(__middle, __last); + + 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())); + } + + /** + * @brief Merges two sorted ranges in place. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __middle Another iterator. + * @param __last Another iterator. + * @param __comp A functor to use for comparisons. + * @return Nothing. + * + * Merges two sorted and consecutive ranges, [__first,__middle) and + * [middle,last), and puts the result in [__first,__last). The output will + * be sorted. The sort is @e stable, that is, for equivalent + * elements in the two ranges, elements from the first range will always + * come before elements from the second. + * + * If enough additional memory is available, this takes (__last-__first)-1 + * comparisons. Otherwise an NlogN algorithm is used, where N is + * distance(__first,__last). + * + * The comparison function should have the same effects on ordering as + * the function used for the initial sort. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept< + _BidirectionalIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType, _ValueType>) + __glibcxx_requires_sorted_pred(__first, __middle, __comp); + __glibcxx_requires_sorted_pred(__middle, __last, __comp); + + 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); + } + + + /// This is a helper function for the __merge_sort_loop routines. + template + _OutputIterator + __move_merge(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result) + { + while (__first1 != __last1 && __first2 != __last2) + { + if (*__first2 < *__first1) + { + *__result = _GLIBCXX_MOVE(*__first2); + ++__first2; + } + else + { + *__result = _GLIBCXX_MOVE(*__first1); + ++__first1; + } + ++__result; + } + return _GLIBCXX_MOVE3(__first2, __last2, + _GLIBCXX_MOVE3(__first1, __last1, + __result)); + } + + /// This is a helper function for the __merge_sort_loop routines. + 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 = _GLIBCXX_MOVE(*__first2); + ++__first2; + } + else + { + *__result = _GLIBCXX_MOVE(*__first1); + ++__first1; + } + ++__result; + } + return _GLIBCXX_MOVE3(__first2, __last2, + _GLIBCXX_MOVE3(__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); + } + + /// This is a helper function for the stable sorting routines. + 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); + } + + /// This is a helper function for the stable sorting routines. + 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); + } + + // stable_sort + + // Set algorithms: includes, set_union, set_intersection, set_difference, + // set_symmetric_difference. All of these algorithms have the precondition + // that their input ranges are sorted and the postcondition that their output + // ranges are sorted. + + /** + * @brief Determines whether all elements of a sequence exists in a range. + * @param __first1 Start of search range. + * @param __last1 End of search range. + * @param __first2 Start of sequence + * @param __last2 End of sequence. + * @return True if each element in [__first2,__last2) is contained in order + * within [__first1,__last1). False otherwise. + * @ingroup set_algorithms + * + * This operation expects both [__first1,__last1) and + * [__first2,__last2) to be sorted. Searches for the presence of + * each element in [__first2,__last2) within [__first1,__last1). + * The iterators over each range only move forward, so this is a + * linear algorithm. If an element in [__first2,__last2) is not + * found before the search iterator reaches @p __last2, false is + * returned. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set(__first1, __last1, __first2); + __glibcxx_requires_sorted_set(__first2, __last2, __first1); + + while (__first1 != __last1 && __first2 != __last2) + if (*__first2 < *__first1) + return false; + else if(*__first1 < *__first2) + ++__first1; + else + ++__first1, ++__first2; + + return __first2 == __last2; + } + + /** + * @brief Determines whether all elements of a sequence exists in a range + * using comparison. + * @ingroup set_algorithms + * @param __first1 Start of search range. + * @param __last1 End of search range. + * @param __first2 Start of sequence + * @param __last2 End of sequence. + * @param __comp Comparison function to use. + * @return True if each element in [__first2,__last2) is contained + * in order within [__first1,__last1) according to comp. False + * otherwise. @ingroup set_algorithms + * + * This operation expects both [__first1,__last1) and + * [__first2,__last2) to be sorted. Searches for the presence of + * each element in [__first2,__last2) within [__first1,__last1), + * using comp to decide. The iterators over each range only move + * forward, so this is a linear algorithm. If an element in + * [__first2,__last2) is not found before the search iterator + * reaches @p __last2, false is returned. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType1, _ValueType2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); + __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); + + while (__first1 != __last1 && __first2 != __last2) + if (__comp(*__first2, *__first1)) + return false; + else if(__comp(*__first1, *__first2)) + ++__first1; + else + ++__first1, ++__first2; + + return __first2 == __last2; + } + + // nth_element + // merge + // set_difference + // set_intersection + // set_union + // stable_sort + // set_symmetric_difference + // min_element + // max_element + + /** + * @brief Permute range into the next @e dictionary ordering. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @return False if wrapped to first permutation, true otherwise. + * + * Treats all permutations of the range as a set of @e dictionary sorted + * sequences. Permutes the current sequence into the next one of this set. + * Returns true if there are more sequences to generate. If the sequence + * is the largest of the set, the smallest is generated and false returned. + */ + template + bool + next_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_BidirectionalIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __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; + } + } + } + + /** + * @brief Permute range into the next @e dictionary ordering using + * comparison functor. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @param __comp A comparison functor. + * @return False if wrapped to first permutation, true otherwise. + * + * Treats all permutations of the range [__first,__last) as a set of + * @e dictionary sorted sequences ordered by @p __comp. Permutes the current + * sequence into the next one of this set. Returns true if there are more + * sequences to generate. If the sequence is the largest of the set, the + * smallest is generated and false returned. + */ + template + bool + next_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last, _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + typename iterator_traits<_BidirectionalIterator>::value_type, + typename iterator_traits<_BidirectionalIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + 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; + } + } + } + + /** + * @brief Permute range into the previous @e dictionary ordering. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @return False if wrapped to last permutation, true otherwise. + * + * Treats all permutations of the range as a set of @e dictionary sorted + * sequences. Permutes the current sequence into the previous one of this + * set. Returns true if there are more sequences to generate. If the + * sequence is the smallest of the set, the largest is generated and false + * returned. + */ + template + bool + prev_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_BidirectionalIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __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; + } + } + } + + /** + * @brief Permute range into the previous @e dictionary ordering using + * comparison functor. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @param __comp A comparison functor. + * @return False if wrapped to last permutation, true otherwise. + * + * Treats all permutations of the range [__first,__last) as a set of + * @e dictionary sorted sequences ordered by @p __comp. Permutes the current + * sequence into the previous one of this set. Returns true if there are + * more sequences to generate. If the sequence is the smallest of the set, + * the largest is generated and false returned. + */ + template + bool + prev_permutation(_BidirectionalIterator __first, + _BidirectionalIterator __last, _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + typename iterator_traits<_BidirectionalIterator>::value_type, + typename iterator_traits<_BidirectionalIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + 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; + } + } + } + + // replace + // replace_if + + /** + * @brief Copy a sequence, replacing each element of one value with another + * value. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @param __old_value The value to be replaced. + * @param __new_value The replacement value. + * @return The end of the output sequence, @p result+(last-first). + * + * Copies each element in the input range @p [__first,__last) to the + * output range @p [__result,__result+(__last-__first)) replacing elements + * equal to @p __old_value with @p __new_value. + */ + template + _OutputIterator + replace_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, + const _Tp& __old_value, const _Tp& __new_value) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_InputIterator>::value_type, _Tp>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first, ++__result) + if (*__first == __old_value) + *__result = __new_value; + else + *__result = *__first; + return __result; + } + + /** + * @brief Copy a sequence, replacing each value for which a predicate + * returns true with another value. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @param __pred A predicate. + * @param __new_value The replacement value. + * @return The end of the output sequence, @p __result+(__last-__first). + * + * Copies each element in the range @p [__first,__last) to the range + * @p [__result,__result+(__last-__first)) replacing elements for which + * @p __pred returns true with @p __new_value. + */ + template + _OutputIterator + replace_copy_if(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, + _Predicate __pred, const _Tp& __new_value) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first, ++__result) + if (__pred(*__first)) + *__result = __new_value; + else + *__result = *__first; + return __result; + } + +#if __cplusplus >= 201103L + /** + * @brief Determines whether the elements of a sequence are sorted. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @return True if the elements are sorted, false otherwise. + */ + template + inline bool + is_sorted(_ForwardIterator __first, _ForwardIterator __last) + { return std::is_sorted_until(__first, __last) == __last; } + + /** + * @brief Determines whether the elements of a sequence are sorted + * according to a comparison functor. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __comp A comparison functor. + * @return True if the elements are sorted, false otherwise. + */ + template + inline bool + is_sorted(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { return std::is_sorted_until(__first, __last, __comp) == __last; } + + /** + * @brief Determines the end of a sorted sequence. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @return An iterator pointing to the last iterator i in [__first, __last) + * for which the range [__first, i) is sorted. + */ + template + _ForwardIterator + is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __last; + + _ForwardIterator __next = __first; + for (++__next; __next != __last; __first = __next, ++__next) + if (*__next < *__first) + return __next; + return __next; + } + + /** + * @brief Determines the end of a sorted sequence using comparison functor. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __comp A comparison functor. + * @return An iterator pointing to the last iterator i in [__first, __last) + * for which the range [__first, i) is sorted. + */ + template + _ForwardIterator + is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __last; + + _ForwardIterator __next = __first; + for (++__next; __next != __last; __first = __next, ++__next) + if (__comp(*__next, *__first)) + return __next; + return __next; + } + + /** + * @brief Determines min and max at once as an ordered pair. + * @ingroup sorting_algorithms + * @param __a A thing of arbitrary type. + * @param __b Another thing of arbitrary type. + * @return A pair(__b, __a) if __b is smaller than __a, pair(__a, + * __b) otherwise. + */ + template + inline pair + minmax(const _Tp& __a, const _Tp& __b) + { + // concept requirements + __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) + + return __b < __a ? pair(__b, __a) + : pair(__a, __b); + } + + /** + * @brief Determines min and max at once as an ordered pair. + * @ingroup sorting_algorithms + * @param __a A thing of arbitrary type. + * @param __b Another thing of arbitrary type. + * @param __comp A @link comparison_functors comparison functor @endlink. + * @return A pair(__b, __a) if __b is smaller than __a, pair(__a, + * __b) otherwise. + */ + template + inline pair + minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) + { + return __comp(__b, __a) ? pair(__b, __a) + : pair(__a, __b); + } + + /** + * @brief Return a pair of iterators pointing to the minimum and maximum + * elements in a range. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @return make_pair(m, M), where m is the first iterator i in + * [__first, __last) such that no other element in the range is + * smaller, and where M is the last iterator i in [__first, __last) + * such that no other element in the range is larger. + */ + template + pair<_ForwardIterator, _ForwardIterator> + minmax_element(_ForwardIterator __first, _ForwardIterator __last) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + _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); + } + + /** + * @brief Return a pair of iterators pointing to the minimum and maximum + * elements in a range. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @param __comp Comparison functor. + * @return make_pair(m, M), where m is the first iterator i in + * [__first, __last) such that no other element in the range is + * smaller, and where M is the last iterator i in [__first, __last) + * such that no other element in the range is larger. + */ + template + pair<_ForwardIterator, _ForwardIterator> + minmax_element(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + _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); + } + + // N2722 + DR 915. + 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); + } + + /** + * @brief Checks whether a permutaion of the second sequence is equal + * to the first sequence. + * @ingroup non_mutating_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @return true if there exists a permutation of the elements in the range + * [__first2, __first2 + (__last1 - __first1)), beginning with + * ForwardIterator2 begin, such that equal(__first1, __last1, begin) + * returns true; otherwise, returns false. + */ + template + bool + is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2) + { + // Efficiently compare identical prefixes: O(N) if sequences + // have the same elements in the same order. + for (; __first1 != __last1; ++__first1, ++__first2) + if (!(*__first1 == *__first2)) + break; + + if (__first1 == __last1) + return true; + + // Establish __last2 assuming equal ranges by iterating over the + // rest of the list. + _ForwardIterator2 __last2 = __first2; + std::advance(__last2, std::distance(__first1, __last1)); + for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) + { + if (__scan != _GLIBCXX_STD_A::find(__first1, __scan, *__scan)) + continue; // We've seen this one before. + + auto __matches = std::count(__first2, __last2, *__scan); + if (0 == __matches + || std::count(__scan, __last1, *__scan) != __matches) + return false; + } + return true; + } + + /** + * @brief Checks whether a permutation of the second sequence is equal + * to the first sequence. + * @ingroup non_mutating_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @param __pred A binary predicate. + * @return true if there exists a permutation of the elements in + * the range [__first2, __first2 + (__last1 - __first1)), + * beginning with ForwardIterator2 begin, such that + * equal(__first1, __last1, __begin, __pred) returns true; + * otherwise, returns false. + */ + template + bool + is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _BinaryPredicate __pred) + { + // Efficiently compare identical prefixes: O(N) if sequences + // have the same elements in the same order. + for (; __first1 != __last1; ++__first1, ++__first2) + if (!bool(__pred(*__first1, *__first2))) + break; + + if (__first1 == __last1) + return true; + + // Establish __last2 assuming equal ranges by iterating over the + // rest of the list. + _ForwardIterator2 __last2 = __first2; + std::advance(__last2, std::distance(__first1, __last1)); + for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) + { + using std::placeholders::_1; + + if (__scan != _GLIBCXX_STD_A::find_if(__first1, __scan, + std::bind(__pred, _1, *__scan))) + continue; // We've seen this one before. + + 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; + } + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + /** + * @brief Shuffle the elements of a sequence using a uniform random + * number generator. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __g A UniformRandomNumberGenerator (26.5.1.3). + * @return Nothing. + * + * Reorders the elements in the range @p [__first,__last) using @p __g to + * provide random numbers. + */ + template + void + shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, + _UniformRandomNumberGenerator&& __g) + { + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + + 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))); + } +#endif + +#endif // C++11 + +_GLIBCXX_END_NAMESPACE_VERSION + +_GLIBCXX_BEGIN_NAMESPACE_ALGO + + /** + * @brief Apply a function to every element of a sequence. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __f A unary function object. + * @return @p __f (std::move(@p __f) in C++0x). + * + * Applies the function object @p __f to each element in the range + * @p [first,last). @p __f must not modify the order of the sequence. + * If @p __f has a return value it is ignored. + */ + template + _Function + for_each(_InputIterator __first, _InputIterator __last, _Function __f) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_requires_valid_range(__first, __last); + for (; __first != __last; ++__first) + __f(*__first); + return _GLIBCXX_MOVE(__f); + } + + /** + * @brief Find the first occurrence of a value in a sequence. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __val The value to find. + * @return The first iterator @c i in the range @p [__first,__last) + * such that @c *i == @p __val, or @p __last if no such iterator exists. + */ + template + inline _InputIterator + find(_InputIterator __first, _InputIterator __last, + const _Tp& __val) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_InputIterator>::value_type, _Tp>) + __glibcxx_requires_valid_range(__first, __last); + return std::__find(__first, __last, __val, + std::__iterator_category(__first)); + } + + /** + * @brief Find the first element in a sequence for which a + * predicate is true. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __pred A predicate. + * @return The first iterator @c i in the range @p [__first,__last) + * such that @p __pred(*i) is true, or @p __last if no such iterator exists. + */ + template + inline _InputIterator + find_if(_InputIterator __first, _InputIterator __last, + _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + return std::__find_if(__first, __last, __pred, + std::__iterator_category(__first)); + } + + /** + * @brief Find element from a set in a sequence. + * @ingroup non_mutating_algorithms + * @param __first1 Start of range to search. + * @param __last1 End of range to search. + * @param __first2 Start of match candidates. + * @param __last2 End of match candidates. + * @return The first iterator @c i in the range + * @p [__first1,__last1) such that @c *i == @p *(i2) such that i2 is an + * iterator in [__first2,__last2), or @p __last1 if no such iterator exists. + * + * Searches the range @p [__first1,__last1) for an element that is + * equal to some element in the range [__first2,__last2). If + * found, returns an iterator in the range [__first1,__last1), + * otherwise returns @p __last1. + */ + template + _InputIterator + find_first_of(_InputIterator __first1, _InputIterator __last1, + _ForwardIterator __first2, _ForwardIterator __last2) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_InputIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + for (; __first1 != __last1; ++__first1) + for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) + if (*__first1 == *__iter) + return __first1; + return __last1; + } + + /** + * @brief Find element from a set in a sequence using a predicate. + * @ingroup non_mutating_algorithms + * @param __first1 Start of range to search. + * @param __last1 End of range to search. + * @param __first2 Start of match candidates. + * @param __last2 End of match candidates. + * @param __comp Predicate to use. + * @return The first iterator @c i in the range + * @p [__first1,__last1) such that @c comp(*i, @p *(i2)) is true + * and i2 is an iterator in [__first2,__last2), or @p __last1 if no + * such iterator exists. + * + + * Searches the range @p [__first1,__last1) for an element that is + * equal to some element in the range [__first2,__last2). If + * found, returns an iterator in the range [__first1,__last1), + * otherwise returns @p __last1. + */ + template + _InputIterator + find_first_of(_InputIterator __first1, _InputIterator __last1, + _ForwardIterator __first2, _ForwardIterator __last2, + _BinaryPredicate __comp) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate, + typename iterator_traits<_InputIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + for (; __first1 != __last1; ++__first1) + for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) + if (__comp(*__first1, *__iter)) + return __first1; + return __last1; + } + + /** + * @brief Find two adjacent values in a sequence that are equal. + * @ingroup non_mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @return The first iterator @c i such that @c i and @c i+1 are both + * valid iterators in @p [__first,__last) and such that @c *i == @c *(i+1), + * or @p __last if no such iterator exists. + */ + template + _ForwardIterator + adjacent_find(_ForwardIterator __first, _ForwardIterator __last) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_EqualityComparableConcept< + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + if (__first == __last) + return __last; + _ForwardIterator __next = __first; + while(++__next != __last) + { + if (*__first == *__next) + return __first; + __first = __next; + } + return __last; + } + + /** + * @brief Find two adjacent values in a sequence using a predicate. + * @ingroup non_mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __binary_pred A binary predicate. + * @return The first iterator @c i such that @c i and @c i+1 are both + * valid iterators in @p [__first,__last) and such that + * @p __binary_pred(*i,*(i+1)) is true, or @p __last if no such iterator + * exists. + */ + template + _ForwardIterator + adjacent_find(_ForwardIterator __first, _ForwardIterator __last, + _BinaryPredicate __binary_pred) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + if (__first == __last) + return __last; + _ForwardIterator __next = __first; + while(++__next != __last) + { + if (__binary_pred(*__first, *__next)) + return __first; + __first = __next; + } + return __last; + } + + /** + * @brief Count the number of copies of a value in a sequence. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __value The value to be counted. + * @return The number of iterators @c i in the range @p [__first,__last) + * for which @c *i == @p __value + */ + template + typename iterator_traits<_InputIterator>::difference_type + count(_InputIterator __first, _InputIterator __last, const _Tp& __value) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_InputIterator>::value_type, _Tp>) + __glibcxx_requires_valid_range(__first, __last); + typename iterator_traits<_InputIterator>::difference_type __n = 0; + for (; __first != __last; ++__first) + if (*__first == __value) + ++__n; + return __n; + } + + /** + * @brief Count the elements of a sequence for which a predicate is true. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __pred A predicate. + * @return The number of iterators @c i in the range @p [__first,__last) + * for which @p __pred(*i) is true. + */ + template + typename iterator_traits<_InputIterator>::difference_type + count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + typename iterator_traits<_InputIterator>::difference_type __n = 0; + for (; __first != __last; ++__first) + if (__pred(*__first)) + ++__n; + return __n; + } + + /** + * @brief Search a sequence for a matching sub-sequence. + * @ingroup non_mutating_algorithms + * @param __first1 A forward iterator. + * @param __last1 A forward iterator. + * @param __first2 A forward iterator. + * @param __last2 A forward iterator. + * @return The first iterator @c i in the range @p + * [__first1,__last1-(__last2-__first2)) such that @c *(i+N) == @p + * *(__first2+N) for each @c N in the range @p + * [0,__last2-__first2), or @p __last1 if no such iterator exists. + * + * Searches the range @p [__first1,__last1) for a sub-sequence that + * compares equal value-by-value with the sequence given by @p + * [__first2,__last2) and returns an iterator to the first element + * of the sub-sequence, or @p __last1 if the sub-sequence is not + * found. + * + * Because the sub-sequence must lie completely within the range @p + * [__first1,__last1) it must start at a position less than @p + * __last1-(__last2-__first2) where @p __last2-__first2 is the + * length of the sub-sequence. + * + * This means that the returned iterator @c i will be in the range + * @p [__first1,__last1-(__last2-__first2)) + */ + template + _ForwardIterator1 + search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator1>) + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator2>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_ForwardIterator1>::value_type, + typename iterator_traits<_ForwardIterator2>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + // Test for empty ranges + if (__first1 == __last1 || __first2 == __last2) + return __first1; + + // Test for a pattern of length 1. + _ForwardIterator2 __p1(__first2); + if (++__p1 == __last2) + return _GLIBCXX_STD_A::find(__first1, __last1, *__first2); + + // General case. + _ForwardIterator2 __p; + _ForwardIterator1 __current = __first1; + + for (;;) + { + __first1 = _GLIBCXX_STD_A::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; + } + + /** + * @brief Search a sequence for a matching sub-sequence using a predicate. + * @ingroup non_mutating_algorithms + * @param __first1 A forward iterator. + * @param __last1 A forward iterator. + * @param __first2 A forward iterator. + * @param __last2 A forward iterator. + * @param __predicate A binary predicate. + * @return The first iterator @c i in the range + * @p [__first1,__last1-(__last2-__first2)) such that + * @p __predicate(*(i+N),*(__first2+N)) is true for each @c N in the range + * @p [0,__last2-__first2), or @p __last1 if no such iterator exists. + * + * Searches the range @p [__first1,__last1) for a sub-sequence that + * compares equal value-by-value with the sequence given by @p + * [__first2,__last2), using @p __predicate to determine equality, + * and returns an iterator to the first element of the + * sub-sequence, or @p __last1 if no such iterator exists. + * + * @see search(_ForwardIter1, _ForwardIter1, _ForwardIter2, _ForwardIter2) + */ + template + _ForwardIterator1 + search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate __predicate) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator1>) + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate, + typename iterator_traits<_ForwardIterator1>::value_type, + typename iterator_traits<_ForwardIterator2>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + // Test for empty ranges + if (__first1 == __last1 || __first2 == __last2) + return __first1; + + // Test for a pattern of length 1. + _ForwardIterator2 __p1(__first2); + if (++__p1 == __last2) + { + while (__first1 != __last1 + && !bool(__predicate(*__first1, *__first2))) + ++__first1; + return __first1; + } + + // General case. + _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; + } + + + /** + * @brief Search a sequence for a number of consecutive values. + * @ingroup non_mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __count The number of consecutive values. + * @param __val The value to find. + * @return The first iterator @c i in the range @p + * [__first,__last-__count) such that @c *(i+N) == @p __val for + * each @c N in the range @p [0,__count), or @p __last if no such + * iterator exists. + * + * Searches the range @p [__first,__last) for @p count consecutive elements + * equal to @p __val. + */ + template + _ForwardIterator + search_n(_ForwardIterator __first, _ForwardIterator __last, + _Integer __count, const _Tp& __val) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_ForwardIterator>::value_type, _Tp>) + __glibcxx_requires_valid_range(__first, __last); + + if (__count <= 0) + return __first; + if (__count == 1) + return _GLIBCXX_STD_A::find(__first, __last, __val); + return std::__search_n(__first, __last, __count, __val, + std::__iterator_category(__first)); + } + + + /** + * @brief Search a sequence for a number of consecutive values using a + * predicate. + * @ingroup non_mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __count The number of consecutive values. + * @param __val The value to find. + * @param __binary_pred A binary predicate. + * @return The first iterator @c i in the range @p + * [__first,__last-__count) such that @p + * __binary_pred(*(i+N),__val) is true for each @c N in the range + * @p [0,__count), or @p __last if no such iterator exists. + * + * Searches the range @p [__first,__last) for @p __count + * consecutive elements for which the predicate returns true. + */ + template + _ForwardIterator + search_n(_ForwardIterator __first, _ForwardIterator __last, + _Integer __count, const _Tp& __val, + _BinaryPredicate __binary_pred) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_BinaryPredicate, + typename iterator_traits<_ForwardIterator>::value_type, _Tp>) + __glibcxx_requires_valid_range(__first, __last); + + 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)); + } + + + /** + * @brief Perform an operation on a sequence. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @param __unary_op A unary operator. + * @return An output iterator equal to @p __result+(__last-__first). + * + * Applies the operator to each element in the input range and assigns + * the results to successive elements of the output sequence. + * Evaluates @p *(__result+N)=unary_op(*(__first+N)) for each @c N in the + * range @p [0,__last-__first). + * + * @p unary_op must not alter its argument. + */ + template + _OutputIterator + transform(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _UnaryOperation __unary_op) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + // "the type returned by a _UnaryOperation" + __typeof__(__unary_op(*__first))>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first, ++__result) + *__result = __unary_op(*__first); + return __result; + } + + /** + * @brief Perform an operation on corresponding elements of two sequences. + * @ingroup mutating_algorithms + * @param __first1 An input iterator. + * @param __last1 An input iterator. + * @param __first2 An input iterator. + * @param __result An output iterator. + * @param __binary_op A binary operator. + * @return An output iterator equal to @p result+(last-first). + * + * Applies the operator to the corresponding elements in the two + * input ranges and assigns the results to successive elements of the + * output sequence. + * Evaluates @p + * *(__result+N)=__binary_op(*(__first1+N),*(__first2+N)) for each + * @c N in the range @p [0,__last1-__first1). + * + * @p binary_op must not alter either of its arguments. + */ + template + _OutputIterator + transform(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _OutputIterator __result, + _BinaryOperation __binary_op) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + // "the type returned by a _BinaryOperation" + __typeof__(__binary_op(*__first1,*__first2))>) + __glibcxx_requires_valid_range(__first1, __last1); + + for (; __first1 != __last1; ++__first1, ++__first2, ++__result) + *__result = __binary_op(*__first1, *__first2); + return __result; + } + + /** + * @brief Replace each occurrence of one value in a sequence with another + * value. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __old_value The value to be replaced. + * @param __new_value The replacement value. + * @return replace() returns no value. + * + * For each iterator @c i in the range @p [__first,__last) if @c *i == + * @p __old_value then the assignment @c *i = @p __new_value is performed. + */ + template + void + replace(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __old_value, const _Tp& __new_value) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_ForwardIterator>::value_type, _Tp>) + __glibcxx_function_requires(_ConvertibleConcept<_Tp, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first) + if (*__first == __old_value) + *__first = __new_value; + } + + /** + * @brief Replace each value in a sequence for which a predicate returns + * true with another value. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __pred A predicate. + * @param __new_value The replacement value. + * @return replace_if() returns no value. + * + * For each iterator @c i in the range @p [__first,__last) if @p __pred(*i) + * is true then the assignment @c *i = @p __new_value is performed. + */ + template + void + replace_if(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred, const _Tp& __new_value) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_function_requires(_ConvertibleConcept<_Tp, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first) + if (__pred(*__first)) + *__first = __new_value; + } + + /** + * @brief Assign the result of a function object to each value in a + * sequence. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __gen A function object taking no arguments and returning + * std::iterator_traits<_ForwardIterator>::value_type + * @return generate() returns no value. + * + * Performs the assignment @c *i = @p __gen() for each @c i in the range + * @p [__first,__last). + */ + template + void + generate(_ForwardIterator __first, _ForwardIterator __last, + _Generator __gen) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_GeneratorConcept<_Generator, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first) + *__first = __gen(); + } + + /** + * @brief Assign the result of a function object to each value in a + * sequence. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __n The length of the sequence. + * @param __gen A function object taking no arguments and returning + * std::iterator_traits<_ForwardIterator>::value_type + * @return The end of the sequence, @p __first+__n + * + * Performs the assignment @c *i = @p __gen() for each @c i in the range + * @p [__first,__first+__n). + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS + * DR 865. More algorithms that throw away information + */ + template + _OutputIterator + generate_n(_OutputIterator __first, _Size __n, _Generator __gen) + { + // concept requirements + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + // "the type returned by a _Generator" + __typeof__(__gen())>) + + for (__decltype(__n + 0) __niter = __n; + __niter > 0; --__niter, ++__first) + *__first = __gen(); + return __first; + } + + + /** + * @brief Copy a sequence, removing consecutive duplicate values. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @return An iterator designating the end of the resulting sequence. + * + * Copies each element in the range @p [__first,__last) to the range + * beginning at @p __result, except that only the first element is copied + * from groups of consecutive elements that compare equal. + * unique_copy() is stable, so the relative order of elements that are + * copied is unchanged. + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS + * DR 241. Does unique_copy() require CopyConstructible and Assignable? + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS + * DR 538. 241 again: Does unique_copy() require CopyConstructible and + * Assignable? + */ + template + inline _OutputIterator + unique_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_function_requires(_EqualityComparableConcept< + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __result; + return std::__unique_copy(__first, __last, __result, + std::__iterator_category(__first), + std::__iterator_category(__result)); + } + + /** + * @brief Copy a sequence, removing consecutive values using a predicate. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @param __binary_pred A binary predicate. + * @return An iterator designating the end of the resulting sequence. + * + * Copies each element in the range @p [__first,__last) to the range + * beginning at @p __result, except that only the first element is copied + * from groups of consecutive elements for which @p __binary_pred returns + * true. + * unique_copy() is stable, so the relative order of elements that are + * copied is unchanged. + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS + * DR 241. Does unique_copy() require CopyConstructible and Assignable? + */ + template + inline _OutputIterator + unique_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, + _BinaryPredicate __binary_pred) + { + // concept requirements -- predicates checked later + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __result; + return std::__unique_copy(__first, __last, __result, __binary_pred, + std::__iterator_category(__first), + std::__iterator_category(__result)); + } + + + /** + * @brief Randomly shuffle the elements of a sequence. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @return Nothing. + * + * Reorder the elements in the range @p [__first,__last) using a random + * distribution, so that every possible ordering of the sequence is + * equally likely. + */ + template + inline void + random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first != __last) + for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) + std::iter_swap(__i, __first + (std::rand() % ((__i - __first) + 1))); + } + + /** + * @brief Shuffle the elements of a sequence using a random number + * generator. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __rand The RNG functor or function. + * @return Nothing. + * + * Reorders the elements in the range @p [__first,__last) using @p __rand to + * provide a random distribution. Calling @p __rand(N) for a positive + * integer @p N should return a randomly chosen integer from the + * range [0,N). + */ + template + void + random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, +#if __cplusplus >= 201103L + _RandomNumberGenerator&& __rand) +#else + _RandomNumberGenerator& __rand) +#endif + { + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return; + for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) + std::iter_swap(__i, __first + __rand((__i - __first) + 1)); + } + + + /** + * @brief Move elements for which a predicate is true to the beginning + * of a sequence. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __pred A predicate functor. + * @return An iterator @p middle such that @p __pred(i) is true for each + * iterator @p i in the range @p [__first,middle) and false for each @p i + * in the range @p [middle,__last). + * + * @p __pred must not modify its operand. @p partition() does not preserve + * the relative ordering of elements in each group, use + * @p stable_partition() if this is needed. + */ + template + inline _ForwardIterator + partition(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return std::__partition(__first, __last, __pred, + std::__iterator_category(__first)); + } + + + + /** + * @brief Sort the smallest elements of a sequence. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __middle Another iterator. + * @param __last Another iterator. + * @return Nothing. + * + * Sorts the smallest @p (__middle-__first) elements in the range + * @p [first,last) and moves them to the range @p [__first,__middle). The + * order of the remaining elements in the range @p [__middle,__last) is + * undefined. + * After the sort if @e i and @e j are iterators in the range + * @p [__first,__middle) such that i precedes j and @e k is an iterator in + * the range @p [__middle,__last) then *j<*i and *k<*i are both false. + */ + template + inline void + partial_sort(_RandomAccessIterator __first, + _RandomAccessIterator __middle, + _RandomAccessIterator __last) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) + __glibcxx_requires_valid_range(__first, __middle); + __glibcxx_requires_valid_range(__middle, __last); + + std::__heap_select(__first, __middle, __last); + std::sort_heap(__first, __middle); + } + + /** + * @brief Sort the smallest elements of a sequence using a predicate + * for comparison. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __middle Another iterator. + * @param __last Another iterator. + * @param __comp A comparison functor. + * @return Nothing. + * + * Sorts the smallest @p (__middle-__first) elements in the range + * @p [__first,__last) and moves them to the range @p [__first,__middle). The + * order of the remaining elements in the range @p [__middle,__last) is + * undefined. + * After the sort if @e i and @e j are iterators in the range + * @p [__first,__middle) such that i precedes j and @e k is an iterator in + * the range @p [__middle,__last) then @p *__comp(j,*i) and @p __comp(*k,*i) + * are both false. + */ + template + inline void + partial_sort(_RandomAccessIterator __first, + _RandomAccessIterator __middle, + _RandomAccessIterator __last, + _Compare __comp) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType, _ValueType>) + __glibcxx_requires_valid_range(__first, __middle); + __glibcxx_requires_valid_range(__middle, __last); + + std::__heap_select(__first, __middle, __last, __comp); + std::sort_heap(__first, __middle, __comp); + } + + /** + * @brief Sort a sequence just enough to find a particular position. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __nth Another iterator. + * @param __last Another iterator. + * @return Nothing. + * + * Rearranges the elements in the range @p [__first,__last) so that @p *__nth + * is the same element that would have been in that position had the + * whole sequence been sorted. The elements either side of @p *__nth are + * not completely sorted, but for any iterator @e i in the range + * @p [__first,__nth) and any iterator @e j in the range @p [__nth,__last) it + * holds that *j < *i is false. + */ + template + inline void + nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, + _RandomAccessIterator __last) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) + __glibcxx_requires_valid_range(__first, __nth); + __glibcxx_requires_valid_range(__nth, __last); + + if (__first == __last || __nth == __last) + return; + + std::__introselect(__first, __nth, __last, + std::__lg(__last - __first) * 2); + } + + /** + * @brief Sort a sequence just enough to find a particular position + * using a predicate for comparison. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __nth Another iterator. + * @param __last Another iterator. + * @param __comp A comparison functor. + * @return Nothing. + * + * Rearranges the elements in the range @p [__first,__last) so that @p *__nth + * is the same element that would have been in that position had the + * whole sequence been sorted. The elements either side of @p *__nth are + * not completely sorted, but for any iterator @e i in the range + * @p [__first,__nth) and any iterator @e j in the range @p [__nth,__last) it + * holds that @p __comp(*j,*i) is false. + */ + template + inline void + nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, + _RandomAccessIterator __last, _Compare __comp) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType, _ValueType>) + __glibcxx_requires_valid_range(__first, __nth); + __glibcxx_requires_valid_range(__nth, __last); + + if (__first == __last || __nth == __last) + return; + + std::__introselect(__first, __nth, __last, + std::__lg(__last - __first) * 2, __comp); + } + + + /** + * @brief Sort the elements of a sequence. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @return Nothing. + * + * Sorts the elements in the range @p [__first,__last) in ascending order, + * such that for each iterator @e i in the range @p [__first,__last-1), + * *(i+1)<*i is false. + * + * The relative ordering of equivalent elements is not preserved, use + * @p stable_sort() if this is needed. + */ + template + inline void + sort(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first != __last) + { + std::__introsort_loop(__first, __last, + std::__lg(__last - __first) * 2); + std::__final_insertion_sort(__first, __last); + } + } + + /** + * @brief Sort the elements of a sequence using a predicate for comparison. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __comp A comparison functor. + * @return Nothing. + * + * Sorts the elements in the range @p [__first,__last) in ascending order, + * such that @p __comp(*(i+1),*i) is false for every iterator @e i in the + * range @p [__first,__last-1). + * + * The relative ordering of equivalent elements is not preserved, use + * @p stable_sort() if this is needed. + */ + template + inline void + sort(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, _ValueType, + _ValueType>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first != __last) + { + std::__introsort_loop(__first, __last, + std::__lg(__last - __first) * 2, __comp); + std::__final_insertion_sort(__first, __last, __comp); + } + } + + /** + * @brief Merges two sorted ranges. + * @ingroup sorting_algorithms + * @param __first1 An iterator. + * @param __first2 Another iterator. + * @param __last1 Another iterator. + * @param __last2 Another iterator. + * @param __result An iterator pointing to the end of the merged range. + * @return An iterator pointing to the first element not less + * than @e val. + * + * Merges the ranges @p [__first1,__last1) and @p [__first2,__last2) into + * the sorted range @p [__result, __result + (__last1-__first1) + + * (__last2-__first2)). Both input ranges must be sorted, and the + * output range must not overlap with either of the input ranges. + * The sort is @e stable, that is, for equivalent elements in the + * two ranges, elements from the first range will always come + * before elements from the second. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set(__first1, __last1, __first2); + __glibcxx_requires_sorted_set(__first2, __last2, __first1); + + 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)); + } + + /** + * @brief Merges two sorted ranges. + * @ingroup sorting_algorithms + * @param __first1 An iterator. + * @param __first2 Another iterator. + * @param __last1 Another iterator. + * @param __last2 Another iterator. + * @param __result An iterator pointing to the end of the merged range. + * @param __comp A functor to use for comparisons. + * @return An iterator pointing to the first element "not less + * than" @e val. + * + * Merges the ranges @p [__first1,__last1) and @p [__first2,__last2) into + * the sorted range @p [__result, __result + (__last1-__first1) + + * (__last2-__first2)). Both input ranges must be sorted, and the + * output range must not overlap with either of the input ranges. + * The sort is @e stable, that is, for equivalent elements in the + * two ranges, elements from the first range will always come + * before elements from the second. + * + * The comparison function should have the same effects on ordering as + * the function used for the initial sort. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); + __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); + + while (__first1 != __last1 && __first2 != __last2) + { + if (__comp(*__first2, *__first1)) + { + *__result = *__first2; + ++__first2; + } + else + { + *__result = *__first1; + ++__first1; + } + ++__result; + } + return std::copy(__first2, __last2, std::copy(__first1, __last1, + __result)); + } + + + /** + * @brief Sort the elements of a sequence, preserving the relative order + * of equivalent elements. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @return Nothing. + * + * Sorts the elements in the range @p [__first,__last) in ascending order, + * such that for each iterator @p i in the range @p [__first,__last-1), + * @p *(i+1)<*i is false. + * + * The relative ordering of equivalent elements is preserved, so any two + * elements @p x and @p y in the range @p [__first,__last) such that + * @p x + inline void + stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) + __glibcxx_requires_valid_range(__first, __last); + + _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())); + } + + /** + * @brief Sort the elements of a sequence using a predicate for comparison, + * preserving the relative order of equivalent elements. + * @ingroup sorting_algorithms + * @param __first An iterator. + * @param __last Another iterator. + * @param __comp A comparison functor. + * @return Nothing. + * + * Sorts the elements in the range @p [__first,__last) in ascending order, + * such that for each iterator @p i in the range @p [__first,__last-1), + * @p __comp(*(i+1),*i) is false. + * + * The relative ordering of equivalent elements is preserved, so any two + * elements @p x and @p y in the range @p [__first,__last) such that + * @p __comp(x,y) is false and @p __comp(y,x) is false will have the same + * relative ordering after calling @p stable_sort(). + */ + 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; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType, + _ValueType>) + __glibcxx_requires_valid_range(__first, __last); + + _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); + } + + + /** + * @brief Return the union of two sorted ranges. + * @ingroup set_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @param __last2 End of second range. + * @return End of the output range. + * @ingroup set_algorithms + * + * This operation iterates over both ranges, copying elements present in + * each range in order to the output range. Iterators increment for each + * range. When the current element of one range is less than the other, + * that element is copied and the iterator advanced. If an element is + * contained in both ranges, the element from the first range is copied and + * both ranges advance. The output range may not overlap either input + * range. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set(__first1, __last1, __first2); + __glibcxx_requires_sorted_set(__first2, __last2, __first1); + + 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)); + } + + /** + * @brief Return the union of two sorted ranges using a comparison functor. + * @ingroup set_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @param __last2 End of second range. + * @param __comp The comparison functor. + * @return End of the output range. + * @ingroup set_algorithms + * + * This operation iterates over both ranges, copying elements present in + * each range in order to the output range. Iterators increment for each + * range. When the current element of one range is less than the other + * according to @p __comp, that element is copied and the iterator advanced. + * If an equivalent element according to @p __comp is contained in both + * ranges, the element from the first range is copied and both ranges + * advance. The output range may not overlap either input range. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType1, _ValueType2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); + __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); + + while (__first1 != __last1 && __first2 != __last2) + { + if (__comp(*__first1, *__first2)) + { + *__result = *__first1; + ++__first1; + } + else if (__comp(*__first2, *__first1)) + { + *__result = *__first2; + ++__first2; + } + else + { + *__result = *__first1; + ++__first1; + ++__first2; + } + ++__result; + } + return std::copy(__first2, __last2, std::copy(__first1, __last1, + __result)); + } + + /** + * @brief Return the intersection of two sorted ranges. + * @ingroup set_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @param __last2 End of second range. + * @return End of the output range. + * @ingroup set_algorithms + * + * This operation iterates over both ranges, copying elements present in + * both ranges in order to the output range. Iterators increment for each + * range. When the current element of one range is less than the other, + * that iterator advances. If an element is contained in both ranges, the + * element from the first range is copied and both ranges advance. The + * output range may not overlap either input range. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set(__first1, __last1, __first2); + __glibcxx_requires_sorted_set(__first2, __last2, __first1); + + while (__first1 != __last1 && __first2 != __last2) + if (*__first1 < *__first2) + ++__first1; + else if (*__first2 < *__first1) + ++__first2; + else + { + *__result = *__first1; + ++__first1; + ++__first2; + ++__result; + } + return __result; + } + + /** + * @brief Return the intersection of two sorted ranges using comparison + * functor. + * @ingroup set_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @param __last2 End of second range. + * @param __comp The comparison functor. + * @return End of the output range. + * @ingroup set_algorithms + * + * This operation iterates over both ranges, copying elements present in + * both ranges in order to the output range. Iterators increment for each + * range. When the current element of one range is less than the other + * according to @p __comp, that iterator advances. If an element is + * contained in both ranges according to @p __comp, the element from the + * first range is copied and both ranges advance. The output range may not + * overlap either input range. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType1, _ValueType2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); + __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); + + while (__first1 != __last1 && __first2 != __last2) + if (__comp(*__first1, *__first2)) + ++__first1; + else if (__comp(*__first2, *__first1)) + ++__first2; + else + { + *__result = *__first1; + ++__first1; + ++__first2; + ++__result; + } + return __result; + } + + /** + * @brief Return the difference of two sorted ranges. + * @ingroup set_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @param __last2 End of second range. + * @return End of the output range. + * @ingroup set_algorithms + * + * This operation iterates over both ranges, copying elements present in + * the first range but not the second in order to the output range. + * Iterators increment for each range. When the current element of the + * first range is less than the second, that element is copied and the + * iterator advances. If the current element of the second range is less, + * the iterator advances, but no element is copied. If an element is + * contained in both ranges, no elements are copied and both ranges + * advance. The output range may not overlap either input range. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set(__first1, __last1, __first2); + __glibcxx_requires_sorted_set(__first2, __last2, __first1); + + 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); + } + + /** + * @brief Return the difference of two sorted ranges using comparison + * functor. + * @ingroup set_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @param __last2 End of second range. + * @param __comp The comparison functor. + * @return End of the output range. + * @ingroup set_algorithms + * + * This operation iterates over both ranges, copying elements present in + * the first range but not the second in order to the output range. + * Iterators increment for each range. When the current element of the + * first range is less than the second according to @p __comp, that element + * is copied and the iterator advances. If the current element of the + * second range is less, no element is copied and the iterator advances. + * If an element is contained in both ranges according to @p __comp, no + * elements are copied and both ranges advance. The output range may not + * overlap either input range. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType1, _ValueType2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); + __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); + + while (__first1 != __last1 && __first2 != __last2) + if (__comp(*__first1, *__first2)) + { + *__result = *__first1; + ++__first1; + ++__result; + } + else if (__comp(*__first2, *__first1)) + ++__first2; + else + { + ++__first1; + ++__first2; + } + return std::copy(__first1, __last1, __result); + } + + /** + * @brief Return the symmetric difference of two sorted ranges. + * @ingroup set_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @param __last2 End of second range. + * @return End of the output range. + * @ingroup set_algorithms + * + * This operation iterates over both ranges, copying elements present in + * one range but not the other in order to the output range. Iterators + * increment for each range. When the current element of one range is less + * than the other, that element is copied and the iterator advances. If an + * element is contained in both ranges, no elements are copied and both + * ranges advance. The output range may not overlap either input range. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set(__first1, __last1, __first2); + __glibcxx_requires_sorted_set(__first2, __last2, __first1); + + 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)); + } + + /** + * @brief Return the symmetric difference of two sorted ranges using + * comparison functor. + * @ingroup set_algorithms + * @param __first1 Start of first range. + * @param __last1 End of first range. + * @param __first2 Start of second range. + * @param __last2 End of second range. + * @param __comp The comparison functor. + * @return End of the output range. + * @ingroup set_algorithms + * + * This operation iterates over both ranges, copying elements present in + * one range but not the other in order to the output range. Iterators + * increment for each range. When the current element of one range is less + * than the other according to @p comp, that element is copied and the + * iterator advances. If an element is contained in both ranges according + * to @p __comp, no elements are copied and both ranges advance. The output + * range may not overlap either input range. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType1>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType1, _ValueType2>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + _ValueType2, _ValueType1>) + __glibcxx_requires_sorted_set_pred(__first1, __last1, __first2, __comp); + __glibcxx_requires_sorted_set_pred(__first2, __last2, __first1, __comp); + + while (__first1 != __last1 && __first2 != __last2) + if (__comp(*__first1, *__first2)) + { + *__result = *__first1; + ++__first1; + ++__result; + } + else if (__comp(*__first2, *__first1)) + { + *__result = *__first2; + ++__first2; + ++__result; + } + else + { + ++__first1; + ++__first2; + } + return std::copy(__first2, __last2, + std::copy(__first1, __last1, __result)); + } + + + /** + * @brief Return the minimum element in a range. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @return Iterator referencing the first instance of the smallest value. + */ + template + _ForwardIterator + min_element(_ForwardIterator __first, _ForwardIterator __last) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __first; + _ForwardIterator __result = __first; + while (++__first != __last) + if (*__first < *__result) + __result = __first; + return __result; + } + + /** + * @brief Return the minimum element in a range using comparison functor. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @param __comp Comparison functor. + * @return Iterator referencing the first instance of the smallest value + * according to __comp. + */ + template + _ForwardIterator + min_element(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __first; + _ForwardIterator __result = __first; + while (++__first != __last) + if (__comp(*__first, *__result)) + __result = __first; + return __result; + } + + /** + * @brief Return the maximum element in a range. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @return Iterator referencing the first instance of the largest value. + */ + template + _ForwardIterator + max_element(_ForwardIterator __first, _ForwardIterator __last) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __first; + _ForwardIterator __result = __first; + while (++__first != __last) + if (*__result < *__first) + __result = __first; + return __result; + } + + /** + * @brief Return the maximum element in a range using comparison functor. + * @ingroup sorting_algorithms + * @param __first Start of range. + * @param __last End of range. + * @param __comp Comparison functor. + * @return Iterator referencing the first instance of the largest value + * according to __comp. + */ + template + _ForwardIterator + max_element(_ForwardIterator __first, _ForwardIterator __last, + _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) return __first; + _ForwardIterator __result = __first; + while (++__first != __last) + if (__comp(*__result, *__first)) + __result = __first; + return __result; + } + +_GLIBCXX_END_NAMESPACE_ALGO +} // namespace std + +#endif /* _STL_ALGO_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_algobase.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_algobase.h new file mode 100644 index 0000000..87dd171 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_algobase.h @@ -0,0 +1,1224 @@ +// Core algorithmic facilities -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_algobase.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{algorithm} + */ + +#ifndef _STL_ALGOBASE_H +#define _STL_ALGOBASE_H 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // For std::swap and _GLIBCXX_MOVE + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#if __cplusplus < 201103L + // See http://gcc.gnu.org/ml/libstdc++/2004-08/msg00167.html: in a + // nutshell, we are partially implementing the resolution of DR 187, + // when it's safe, i.e., the value_types are equal. + template + struct __iter_swap + { + template + static void + iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) + { + typedef typename iterator_traits<_ForwardIterator1>::value_type + _ValueType1; + _ValueType1 __tmp = _GLIBCXX_MOVE(*__a); + *__a = _GLIBCXX_MOVE(*__b); + *__b = _GLIBCXX_MOVE(__tmp); + } + }; + + template<> + struct __iter_swap + { + template + static void + iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) + { + swap(*__a, *__b); + } + }; +#endif + + /** + * @brief Swaps the contents of two iterators. + * @ingroup mutating_algorithms + * @param __a An iterator. + * @param __b Another iterator. + * @return Nothing. + * + * This function swaps the values pointed to by two iterators, not the + * iterators themselves. + */ + template + inline void + iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator1>) + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator2>) + +#if __cplusplus < 201103L + typedef typename iterator_traits<_ForwardIterator1>::value_type + _ValueType1; + typedef typename iterator_traits<_ForwardIterator2>::value_type + _ValueType2; + + __glibcxx_function_requires(_ConvertibleConcept<_ValueType1, + _ValueType2>) + __glibcxx_function_requires(_ConvertibleConcept<_ValueType2, + _ValueType1>) + + typedef typename iterator_traits<_ForwardIterator1>::reference + _ReferenceType1; + typedef typename iterator_traits<_ForwardIterator2>::reference + _ReferenceType2; + std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value + && __are_same<_ValueType1&, _ReferenceType1>::__value + && __are_same<_ValueType2&, _ReferenceType2>::__value>:: + iter_swap(__a, __b); +#else + swap(*__a, *__b); +#endif + } + + /** + * @brief Swap the elements of two sequences. + * @ingroup mutating_algorithms + * @param __first1 A forward iterator. + * @param __last1 A forward iterator. + * @param __first2 A forward iterator. + * @return An iterator equal to @p first2+(last1-first1). + * + * Swaps each element in the range @p [first1,last1) with the + * corresponding element in the range @p [first2,(last1-first1)). + * The ranges must not overlap. + */ + template + _ForwardIterator2 + swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator1>) + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator2>) + __glibcxx_requires_valid_range(__first1, __last1); + + for (; __first1 != __last1; ++__first1, ++__first2) + std::iter_swap(__first1, __first2); + return __first2; + } + + /** + * @brief This does what you think it does. + * @ingroup sorting_algorithms + * @param __a A thing of arbitrary type. + * @param __b Another thing of arbitrary type. + * @return The lesser of the parameters. + * + * This is the simple classic generic implementation. It will work on + * temporary expressions, since they are only evaluated once, unlike a + * preprocessor macro. + */ + template + inline const _Tp& + min(const _Tp& __a, const _Tp& __b) + { + // concept requirements + __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) + //return __b < __a ? __b : __a; + if (__b < __a) + return __b; + return __a; + } + + /** + * @brief This does what you think it does. + * @ingroup sorting_algorithms + * @param __a A thing of arbitrary type. + * @param __b Another thing of arbitrary type. + * @return The greater of the parameters. + * + * This is the simple classic generic implementation. It will work on + * temporary expressions, since they are only evaluated once, unlike a + * preprocessor macro. + */ + template + inline const _Tp& + max(const _Tp& __a, const _Tp& __b) + { + // concept requirements + __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) + //return __a < __b ? __b : __a; + if (__a < __b) + return __b; + return __a; + } + + /** + * @brief This does what you think it does. + * @ingroup sorting_algorithms + * @param __a A thing of arbitrary type. + * @param __b Another thing of arbitrary type. + * @param __comp A @link comparison_functors comparison functor@endlink. + * @return The lesser of the parameters. + * + * This will work on temporary expressions, since they are only evaluated + * once, unlike a preprocessor macro. + */ + template + inline const _Tp& + min(const _Tp& __a, const _Tp& __b, _Compare __comp) + { + //return __comp(__b, __a) ? __b : __a; + if (__comp(__b, __a)) + return __b; + return __a; + } + + /** + * @brief This does what you think it does. + * @ingroup sorting_algorithms + * @param __a A thing of arbitrary type. + * @param __b Another thing of arbitrary type. + * @param __comp A @link comparison_functors comparison functor@endlink. + * @return The greater of the parameters. + * + * This will work on temporary expressions, since they are only evaluated + * once, unlike a preprocessor macro. + */ + template + inline const _Tp& + max(const _Tp& __a, const _Tp& __b, _Compare __comp) + { + //return __comp(__a, __b) ? __b : __a; + if (__comp(__a, __b)) + return __b; + return __a; + } + + // If _Iterator is a __normal_iterator return its base (a plain pointer, + // normally) otherwise return it untouched. See copy, fill, ... + 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); } + + // Likewise, for move_iterator. + 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); } + + // All of these auxiliary structs serve two purposes. (1) Replace + // calls to copy with memmove whenever possible. (Memmove, not memcpy, + // because the input and output ranges are permitted to overlap.) + // (2) If we're using random access iterators, then write the loop as + // a for loop with an explicit count. + + template + struct __copy_move + { + template + static _OI + __copy_m(_II __first, _II __last, _OI __result) + { + for (; __first != __last; ++__result, ++__first) + *__result = *__first; + return __result; + } + }; + +#if __cplusplus >= 201103L + 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; + } + }; +#endif + + 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; + } + }; + +#if __cplusplus >= 201103L + 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; + } + }; +#endif + + 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); + } + + // Helpers for streambuf iterators (either istream or ostream). + // NB: avoid including , relatively large. + 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))); + } + + /** + * @brief Copies the range [first,last) into result. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @return result + (first - last) + * + * This inline function will boil down to a call to @c memmove whenever + * possible. Failing that, if random access iterators are passed, then the + * loop count will be known (and therefore a candidate for compiler + * optimizations such as unrolling). Result may not be contained within + * [first,last); the copy_backward function should be used instead. + * + * Note that the end of the output range is permitted to be contained + * within [first,last). + */ + template + inline _OI + copy(_II __first, _II __last, _OI __result) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_II>) + __glibcxx_function_requires(_OutputIteratorConcept<_OI, + typename iterator_traits<_II>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return (std::__copy_move_a2<__is_move_iterator<_II>::__value> + (std::__miter_base(__first), std::__miter_base(__last), + __result)); + } + +#if __cplusplus >= 201103L + /** + * @brief Moves the range [first,last) into result. + * @ingroup mutating_algorithms + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @return result + (first - last) + * + * This inline function will boil down to a call to @c memmove whenever + * possible. Failing that, if random access iterators are passed, then the + * loop count will be known (and therefore a candidate for compiler + * optimizations such as unrolling). Result may not be contained within + * [first,last); the move_backward function should be used instead. + * + * Note that the end of the output range is permitted to be contained + * within [first,last). + */ + template + inline _OI + move(_II __first, _II __last, _OI __result) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_II>) + __glibcxx_function_requires(_OutputIteratorConcept<_OI, + typename iterator_traits<_II>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return std::__copy_move_a2(std::__miter_base(__first), + std::__miter_base(__last), __result); + } + +#define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::move(_Tp, _Up, _Vp) +#else +#define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::copy(_Tp, _Up, _Vp) +#endif + + template + struct __copy_move_backward + { + template + static _BI2 + __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) + { + while (__first != __last) + *--__result = *--__last; + return __result; + } + }; + +#if __cplusplus >= 201103L + 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; + } + }; +#endif + + 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; + } + }; + +#if __cplusplus >= 201103L + 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; + } + }; +#endif + + 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))); + } + + /** + * @brief Copies the range [first,last) into result. + * @ingroup mutating_algorithms + * @param __first A bidirectional iterator. + * @param __last A bidirectional iterator. + * @param __result A bidirectional iterator. + * @return result - (first - last) + * + * The function has the same effect as copy, but starts at the end of the + * range and works its way to the start, returning the start of the result. + * This inline function will boil down to a call to @c memmove whenever + * possible. Failing that, if random access iterators are passed, then the + * loop count will be known (and therefore a candidate for compiler + * optimizations such as unrolling). + * + * Result may not be in the range (first,last]. Use copy instead. Note + * that the start of the output range may overlap [first,last). + */ + template + inline _BI2 + copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>) + __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>) + __glibcxx_function_requires(_ConvertibleConcept< + typename iterator_traits<_BI1>::value_type, + typename iterator_traits<_BI2>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value> + (std::__miter_base(__first), std::__miter_base(__last), + __result)); + } + +#if __cplusplus >= 201103L + /** + * @brief Moves the range [first,last) into result. + * @ingroup mutating_algorithms + * @param __first A bidirectional iterator. + * @param __last A bidirectional iterator. + * @param __result A bidirectional iterator. + * @return result - (first - last) + * + * The function has the same effect as move, but starts at the end of the + * range and works its way to the start, returning the start of the result. + * This inline function will boil down to a call to @c memmove whenever + * possible. Failing that, if random access iterators are passed, then the + * loop count will be known (and therefore a candidate for compiler + * optimizations such as unrolling). + * + * Result may not be in the range (first,last]. Use move instead. Note + * that the start of the output range may overlap [first,last). + */ + template + inline _BI2 + move_backward(_BI1 __first, _BI1 __last, _BI2 __result) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>) + __glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>) + __glibcxx_function_requires(_ConvertibleConcept< + typename iterator_traits<_BI1>::value_type, + typename iterator_traits<_BI2>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return std::__copy_move_backward_a2(std::__miter_base(__first), + std::__miter_base(__last), + __result); + } + +#define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::move_backward(_Tp, _Up, _Vp) +#else +#define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::copy_backward(_Tp, _Up, _Vp) +#endif + + 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; + } + + // Specialization: for char types we can use memset. + 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); + } + + /** + * @brief Fills the range [first,last) with copies of value. + * @ingroup mutating_algorithms + * @param __first A forward iterator. + * @param __last A forward iterator. + * @param __value A reference-to-const of arbitrary type. + * @return Nothing. + * + * This function fills a range with copies of the same value. For char + * types filling contiguous areas of memory, this becomes an inline call + * to @c memset or @c wmemset. + */ + template + inline void + fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_requires_valid_range(__first, __last); + + std::__fill_a(std::__niter_base(__first), std::__niter_base(__last), + __value); + } + + template + 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; + } + + /** + * @brief Fills the range [first,first+n) with copies of value. + * @ingroup mutating_algorithms + * @param __first An output iterator. + * @param __n The count of copies to perform. + * @param __value A reference-to-const of arbitrary type. + * @return The iterator at first+n. + * + * This function fills a range with copies of the same value. For char + * types filling contiguous areas of memory, this becomes an inline call + * to @c memset or @ wmemset. + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS + * DR 865. More algorithms that throw away information + */ + template + inline _OI + fill_n(_OI __first, _Size __n, const _Tp& __value) + { + // concept requirements + __glibcxx_function_requires(_OutputIteratorConcept<_OI, _Tp>) + + return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); + } + + template + 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); + } + + /** + * @brief Finds the first position in which @a val could be inserted + * without changing the ordering. + * @param __first An iterator. + * @param __last Another iterator. + * @param __val The search term. + * @return An iterator pointing to the first element not less + * than @a val, or end() if every element is less than + * @a val. + * @ingroup binary_search_algorithms + */ + template + _ForwardIterator + lower_bound(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val) + { +#ifdef _GLIBCXX_CONCEPT_CHECKS + typedef typename iterator_traits<_ForwardIterator>::value_type + _ValueType; +#endif + typedef typename iterator_traits<_ForwardIterator>::difference_type + _DistanceType; + + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType, _Tp>) + __glibcxx_requires_partitioned_lower(__first, __last, __val); + + _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; + } + + /// This is a helper function for the sort routines and for random.tcc. + // Precondition: __n > 0. + inline _GLIBCXX_CONSTEXPR int + __lg(int __n) + { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } + + inline _GLIBCXX_CONSTEXPR unsigned + __lg(unsigned __n) + { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } + + inline _GLIBCXX_CONSTEXPR long + __lg(long __n) + { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } + + inline _GLIBCXX_CONSTEXPR unsigned long + __lg(unsigned long __n) + { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } + + inline _GLIBCXX_CONSTEXPR long long + __lg(long long __n) + { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } + + inline _GLIBCXX_CONSTEXPR unsigned long long + __lg(unsigned long long __n) + { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } + +_GLIBCXX_END_NAMESPACE_VERSION + +_GLIBCXX_BEGIN_NAMESPACE_ALGO + + /** + * @brief Tests a range for element-wise equality. + * @ingroup non_mutating_algorithms + * @param __first1 An input iterator. + * @param __last1 An input iterator. + * @param __first2 An input iterator. + * @return A boolean true or false. + * + * This compares the elements of two ranges using @c == and returns true or + * false depending on whether all of the corresponding elements of the + * ranges are equal. + */ + template + inline bool + equal(_II1 __first1, _II1 __last1, _II2 __first2) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_II1>) + __glibcxx_function_requires(_InputIteratorConcept<_II2>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_II1>::value_type, + typename iterator_traits<_II2>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + + return std::__equal_aux(std::__niter_base(__first1), + std::__niter_base(__last1), + std::__niter_base(__first2)); + } + + /** + * @brief Tests a range for element-wise equality. + * @ingroup non_mutating_algorithms + * @param __first1 An input iterator. + * @param __last1 An input iterator. + * @param __first2 An input iterator. + * @param __binary_pred A binary predicate @link functors + * functor@endlink. + * @return A boolean true or false. + * + * This compares the elements of two ranges using the binary_pred + * parameter, and returns true or + * false depending on whether all of the corresponding elements of the + * ranges are equal. + */ + template + inline bool + equal(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _BinaryPredicate __binary_pred) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_IIter1>) + __glibcxx_function_requires(_InputIteratorConcept<_IIter2>) + __glibcxx_requires_valid_range(__first1, __last1); + + for (; __first1 != __last1; ++__first1, ++__first2) + if (!bool(__binary_pred(*__first1, *__first2))) + return false; + return true; + } + + /** + * @brief Performs @b dictionary comparison on ranges. + * @ingroup sorting_algorithms + * @param __first1 An input iterator. + * @param __last1 An input iterator. + * @param __first2 An input iterator. + * @param __last2 An input iterator. + * @return A boolean true or false. + * + * Returns true if the sequence of elements defined by the range + * [first1,last1) is lexicographically less than the sequence of elements + * defined by the range [first2,last2). Returns false otherwise. + * (Quoted from [25.3.8]/1.) If the iterators are all character pointers, + * then this is an inline call to @c memcmp. + */ + template + inline bool + lexicographical_compare(_II1 __first1, _II1 __last1, + _II2 __first2, _II2 __last2) + { +#ifdef _GLIBCXX_CONCEPT_CHECKS + // concept requirements + typedef typename iterator_traits<_II1>::value_type _ValueType1; + typedef typename iterator_traits<_II2>::value_type _ValueType2; +#endif + __glibcxx_function_requires(_InputIteratorConcept<_II1>) + __glibcxx_function_requires(_InputIteratorConcept<_II2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>) + __glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + return std::__lexicographical_compare_aux(std::__niter_base(__first1), + std::__niter_base(__last1), + std::__niter_base(__first2), + std::__niter_base(__last2)); + } + + /** + * @brief Performs @b dictionary comparison on ranges. + * @ingroup sorting_algorithms + * @param __first1 An input iterator. + * @param __last1 An input iterator. + * @param __first2 An input iterator. + * @param __last2 An input iterator. + * @param __comp A @link comparison_functors comparison functor@endlink. + * @return A boolean true or false. + * + * The same as the four-parameter @c lexicographical_compare, but uses the + * comp parameter instead of @c <. + */ + template + 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; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_II1>) + __glibcxx_function_requires(_InputIteratorConcept<_II2>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + __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; + } + + /** + * @brief Finds the places in ranges which don't match. + * @ingroup non_mutating_algorithms + * @param __first1 An input iterator. + * @param __last1 An input iterator. + * @param __first2 An input iterator. + * @return A pair of iterators pointing to the first mismatch. + * + * This compares the elements of two ranges using @c == and returns a pair + * of iterators. The first iterator points into the first range, the + * second iterator points into the second range, and the elements pointed + * to by the iterators are not equal. + */ + template + pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_EqualOpConcept< + typename iterator_traits<_InputIterator1>::value_type, + typename iterator_traits<_InputIterator2>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + + while (__first1 != __last1 && *__first1 == *__first2) + { + ++__first1; + ++__first2; + } + return pair<_InputIterator1, _InputIterator2>(__first1, __first2); + } + + /** + * @brief Finds the places in ranges which don't match. + * @ingroup non_mutating_algorithms + * @param __first1 An input iterator. + * @param __last1 An input iterator. + * @param __first2 An input iterator. + * @param __binary_pred A binary predicate @link functors + * functor@endlink. + * @return A pair of iterators pointing to the first mismatch. + * + * This compares the elements of two ranges using the binary_pred + * parameter, and returns a pair + * of iterators. The first iterator points into the first range, the + * second iterator points into the second range, and the elements pointed + * to by the iterators are not equal. + */ + template + pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _BinaryPredicate __binary_pred) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_requires_valid_range(__first1, __last1); + + while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2))) + { + ++__first1; + ++__first2; + } + return pair<_InputIterator1, _InputIterator2>(__first1, __first2); + } + +_GLIBCXX_END_NAMESPACE_ALGO +} // namespace std + +// NB: This file is included within many other C++ includes, as a way +// of getting the base algorithms. So, make sure that parallel bits +// come in too if requested. +#ifdef _GLIBCXX_PARALLEL +# include +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_bvector.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_bvector.h new file mode 100644 index 0000000..422a98a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_bvector.h @@ -0,0 +1,1155 @@ +// vector specialization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1999 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_bvector.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{vector} + */ + +#ifndef _STL_BVECTOR_H +#define _STL_BVECTOR_H 1 + +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + typedef unsigned long _Bit_type; + enum { _S_word_bit = int(__CHAR_BIT__ * sizeof(_Bit_type)) }; + + struct _Bit_reference + { + _Bit_type * _M_p; + _Bit_type _M_mask; + + _Bit_reference(_Bit_type * __x, _Bit_type __y) + : _M_p(__x), _M_mask(__y) { } + + _Bit_reference() _GLIBCXX_NOEXCEPT : _M_p(0), _M_mask(0) { } + + operator bool() const _GLIBCXX_NOEXCEPT + { return !!(*_M_p & _M_mask); } + + _Bit_reference& + operator=(bool __x) _GLIBCXX_NOEXCEPT + { + if (__x) + *_M_p |= _M_mask; + else + *_M_p &= ~_M_mask; + return *this; + } + + _Bit_reference& + operator=(const _Bit_reference& __x) _GLIBCXX_NOEXCEPT + { return *this = bool(__x); } + + bool + operator==(const _Bit_reference& __x) const + { return bool(*this) == bool(__x); } + + bool + operator<(const _Bit_reference& __x) const + { return !bool(*this) && bool(__x); } + + void + flip() _GLIBCXX_NOEXCEPT + { *_M_p ^= _M_mask; } + }; + +#if __cplusplus >= 201103L + inline void + swap(_Bit_reference __x, _Bit_reference __y) noexcept + { + bool __tmp = __x; + __x = __y; + __y = __tmp; + } + + inline void + swap(_Bit_reference __x, bool& __y) noexcept + { + bool __tmp = __x; + __x = __y; + __y = __tmp; + } + + inline void + swap(bool& __x, _Bit_reference __y) noexcept + { + bool __tmp = __x; + __x = __y; + __y = __tmp; + } +#endif + + struct _Bit_iterator_base + : public std::iterator + { + _Bit_type * _M_p; + unsigned int _M_offset; + + _Bit_iterator_base(_Bit_type * __x, unsigned int __y) + : _M_p(__x), _M_offset(__y) { } + + void + _M_bump_up() + { + if (_M_offset++ == int(_S_word_bit) - 1) + { + _M_offset = 0; + ++_M_p; + } + } + + void + _M_bump_down() + { + if (_M_offset-- == 0) + { + _M_offset = int(_S_word_bit) - 1; + --_M_p; + } + } + + void + _M_incr(ptrdiff_t __i) + { + difference_type __n = __i + _M_offset; + _M_p += __n / int(_S_word_bit); + __n = __n % int(_S_word_bit); + if (__n < 0) + { + __n += int(_S_word_bit); + --_M_p; + } + _M_offset = static_cast(__n); + } + + bool + operator==(const _Bit_iterator_base& __i) const + { return _M_p == __i._M_p && _M_offset == __i._M_offset; } + + bool + operator<(const _Bit_iterator_base& __i) const + { + return _M_p < __i._M_p + || (_M_p == __i._M_p && _M_offset < __i._M_offset); + } + + bool + operator!=(const _Bit_iterator_base& __i) const + { return !(*this == __i); } + + bool + operator>(const _Bit_iterator_base& __i) const + { return __i < *this; } + + bool + operator<=(const _Bit_iterator_base& __i) const + { return !(__i < *this); } + + bool + operator>=(const _Bit_iterator_base& __i) const + { return !(*this < __i); } + }; + + inline ptrdiff_t + operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) + { + return (int(_S_word_bit) * (__x._M_p - __y._M_p) + + __x._M_offset - __y._M_offset); + } + + struct _Bit_iterator : public _Bit_iterator_base + { + typedef _Bit_reference reference; + typedef _Bit_reference* pointer; + typedef _Bit_iterator iterator; + + _Bit_iterator() : _Bit_iterator_base(0, 0) { } + + _Bit_iterator(_Bit_type * __x, unsigned int __y) + : _Bit_iterator_base(__x, __y) { } + + 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) + { } + +#if __cplusplus >= 201103L + _Bvector_impl(_Bit_alloc_type&& __a) + : _Bit_alloc_type(std::move(__a)), _M_start(), _M_finish(), + _M_end_of_storage(0) + { } +#endif + }; + + public: + typedef _Alloc allocator_type; + + _Bit_alloc_type& + _M_get_Bit_allocator() _GLIBCXX_NOEXCEPT + { return *static_cast<_Bit_alloc_type*>(&this->_M_impl); } + + const _Bit_alloc_type& + _M_get_Bit_allocator() const _GLIBCXX_NOEXCEPT + { return *static_cast(&this->_M_impl); } + + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return allocator_type(_M_get_Bit_allocator()); } + + _Bvector_base() + : _M_impl() { } + + _Bvector_base(const allocator_type& __a) + : _M_impl(__a) { } + +#if __cplusplus >= 201103L + _Bvector_base(_Bvector_base&& __x) noexcept + : _M_impl(std::move(__x._M_get_Bit_allocator())) + { + this->_M_impl._M_start = __x._M_impl._M_start; + this->_M_impl._M_finish = __x._M_impl._M_finish; + this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage; + __x._M_impl._M_start = _Bit_iterator(); + __x._M_impl._M_finish = _Bit_iterator(); + __x._M_impl._M_end_of_storage = 0; + } +#endif + + ~_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); } + }; + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +// Declare a partial specialization of vector. +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * @brief A specialization of vector for booleans which offers fixed time + * access to individual elements in any order. + * + * @ingroup sequences + * + * @tparam _Alloc Allocator type. + * + * Note that vector does not actually meet the requirements for being + * a container. This is because the reference and pointer types are not + * really references and pointers to bool. See DR96 for details. @see + * vector for function documentation. + * + * In some terminology a %vector can be described as a dynamic + * C-style array, it offers fast and efficient access to individual + * elements in any order and saves the user from worrying about + * memory and size allocation. Subscripting ( @c [] ) access is + * also provided as with C-style arrays. + */ +template + class vector : protected _Bvector_base<_Alloc> + { + typedef _Bvector_base<_Alloc> _Base; + +#if __cplusplus >= 201103L + template friend struct hash; +#endif + + public: + typedef bool value_type; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Bit_reference reference; + typedef bool const_reference; + typedef _Bit_reference* pointer; + typedef const bool* const_pointer; + typedef _Bit_iterator iterator; + typedef _Bit_const_iterator const_iterator; + typedef std::reverse_iterator const_reverse_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef _Alloc allocator_type; + + allocator_type get_allocator() const + { return _Base::get_allocator(); } + + protected: + using _Base::_M_allocate; + using _Base::_M_deallocate; + using _Base::_S_nword; + using _Base::_M_get_Bit_allocator; + + public: + vector() + : _Base() { } + + explicit + vector(const allocator_type& __a) + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + vector(size_type __n, const allocator_type& __a = allocator_type()) + : vector(__n, false, __a) + { } + + vector(size_type __n, const bool& __value, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + _M_initialize(__n); + std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage, + __value ? ~0 : 0); + } +#else + explicit + vector(size_type __n, const bool& __value = bool(), + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + _M_initialize(__n); + std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage, + __value ? ~0 : 0); + } +#endif + + 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); + } + +#if __cplusplus >= 201103L + 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()); + } +#endif + +#if __cplusplus >= 201103L + template> + vector(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { _M_initialize_dispatch(__first, __last, __false_type()); } +#else + template + vector(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_initialize_dispatch(__first, __last, _Integral()); + } +#endif + + ~vector() _GLIBCXX_NOEXCEPT { } + + vector& + operator=(const vector& __x) + { + if (&__x == this) + return *this; + if (__x.size() > capacity()) + { + this->_M_deallocate(); + _M_initialize(__x.size()); + } + this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), + begin()); + return *this; + } + +#if __cplusplus >= 201103L + vector& + operator=(vector&& __x) + { + // NB: DR 1204. + // NB: DR 675. + this->clear(); + this->swap(__x); + return *this; + } + + vector& + operator=(initializer_list __l) + { + this->assign (__l.begin(), __l.end()); + return *this; + } +#endif + + // assign(), a generalized assignment member function. Two + // versions: one that takes a count, and one that takes a range. + // The range version is a member template, so we dispatch on whether + // or not the type is an integer. + void + assign(size_type __n, const bool& __x) + { _M_fill_assign(__n, __x); } + +#if __cplusplus >= 201103L + template> + void + assign(_InputIterator __first, _InputIterator __last) + { _M_assign_dispatch(__first, __last, __false_type()); } +#else + template + void + assign(_InputIterator __first, _InputIterator __last) + { + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_assign_dispatch(__first, __last, _Integral()); + } +#endif + +#if __cplusplus >= 201103L + void + assign(initializer_list __l) + { this->assign(__l.begin(), __l.end()); } +#endif + + iterator + begin() _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_start; } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_start; } + + iterator + end() _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_finish; } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_finish; } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return this->_M_impl._M_start; } + + const_iterator + cend() const noexcept + { return this->_M_impl._M_finish; } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + size_type + size() const _GLIBCXX_NOEXCEPT + { return size_type(end() - begin()); } + + size_type + max_size() const _GLIBCXX_NOEXCEPT + { + const size_type __isize = + __gnu_cxx::__numeric_traits::__max + - int(_S_word_bit) + 1; + const size_type __asize = _M_get_Bit_allocator().max_size(); + return (__asize <= __isize / int(_S_word_bit) + ? __asize * int(_S_word_bit) : __isize); + } + + size_type + capacity() const _GLIBCXX_NOEXCEPT + { return size_type(const_iterator(this->_M_impl._M_end_of_storage, 0) + - begin()); } + + bool + empty() const _GLIBCXX_NOEXCEPT + { return begin() == end(); } + + reference + operator[](size_type __n) + { + return *iterator(this->_M_impl._M_start._M_p + + __n / int(_S_word_bit), __n % int(_S_word_bit)); + } + + const_reference + operator[](size_type __n) const + { + return *const_iterator(this->_M_impl._M_start._M_p + + __n / int(_S_word_bit), __n % int(_S_word_bit)); + } + + protected: + void + _M_range_check(size_type __n) const + { + if (__n >= this->size()) + __throw_out_of_range(__N("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(__N("vector::reserve")); + if (capacity() < __n) + _M_reallocate(__n); + } + + reference + front() + { return *begin(); } + + const_reference + front() const + { return *begin(); } + + reference + back() + { return *(end() - 1); } + + const_reference + back() const + { return *(end() - 1); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 464. Suggestion for new member functions in standard containers. + // N.B. DR 464 says nothing about vector but we need something + // here due to the way we are implementing DR 464 in the debug-mode + // vector class. + void + data() _GLIBCXX_NOEXCEPT { } + + void + push_back(bool __x) + { + if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_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); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 431. Swapping containers with unequal allocators. + std::__alloc_swap:: + _S_do_it(_M_get_Bit_allocator(), __x._M_get_Bit_allocator()); + } + + // [23.2.5]/1, third-to-last entry in synopsis listing + static void + swap(reference __x, reference __y) _GLIBCXX_NOEXCEPT + { + bool __tmp = __x; + __x = __y; + __y = __tmp; + } + + iterator + 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; + } + +#if __cplusplus >= 201103L + template> + void + insert(iterator __position, + _InputIterator __first, _InputIterator __last) + { _M_insert_dispatch(__position, __first, __last, __false_type()); } +#else + template + void + insert(iterator __position, + _InputIterator __first, _InputIterator __last) + { + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_insert_dispatch(__position, __first, __last, _Integral()); + } +#endif + + void + insert(iterator __position, size_type __n, const bool& __x) + { _M_fill_insert(__position, __n, __x); } + +#if __cplusplus >= 201103L + void insert(iterator __p, initializer_list __l) + { this->insert(__p, __l.begin(), __l.end()); } +#endif + + 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); + } + +#if __cplusplus >= 201103L + void + shrink_to_fit() + { _M_shrink_to_fit(); } +#endif + + void + flip() _GLIBCXX_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() _GLIBCXX_NOEXCEPT + { _M_erase_at_end(begin()); } + + + protected: + // Precondition: __first._M_offset == 0 && __result._M_offset == 0. + iterator + _M_copy_aligned(const_iterator __first, const_iterator __last, + iterator __result) + { + _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); + return std::copy(const_iterator(__last._M_p, 0), __last, + iterator(__q, 0)); + } + + void + _M_initialize(size_type __n) + { + _Bit_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); + +#if __cplusplus >= 201103L + bool + _M_shrink_to_fit(); +#endif + + // Check whether it's an integral type. If so, it's not an iterator. + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) + { + _M_initialize(static_cast(__n)); + std::fill(this->_M_impl._M_start._M_p, + this->_M_impl._M_end_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); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + template + void + _M_assign_dispatch(_InputIterator __first, _InputIterator __last, + __false_type) + { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } + + void + _M_fill_assign(size_t __n, bool __x) + { + if (__n > size()) + { + std::fill(this->_M_impl._M_start._M_p, + this->_M_impl._M_end_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); + } + } + + // Check whether it's an integral type. If so, it's not an iterator. + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, + __true_type) + { _M_fill_insert(__pos, __n, __x); } + + template + void + _M_insert_dispatch(iterator __pos, + _InputIterator __first, _InputIterator __last, + __false_type) + { _M_insert_range(__pos, __first, __last, + std::__iterator_category(__first)); } + + void + _M_fill_insert(iterator __position, size_type __n, bool __x); + + template + void + _M_insert_range(iterator __pos, _InputIterator __first, + _InputIterator __last, std::input_iterator_tag) + { + for (; __first != __last; ++__first) + { + __pos = insert(__pos, *__first); + ++__pos; + } + } + + template + void + _M_insert_range(iterator __position, _ForwardIterator __first, + _ForwardIterator __last, std::forward_iterator_tag); + + void + _M_insert_aux(iterator __position, bool __x); + + size_type + _M_check_len(size_type __n, const char* __s) const + { + if (max_size() - size() < __n) + __throw_length_error(__N(__s)); + + const size_type __len = size() + std::max(size(), __n); + return (__len < size() || __len > max_size()) ? max_size() : __len; + } + + void + _M_erase_at_end(iterator __pos) + { this->_M_impl._M_finish = __pos; } + }; + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#if __cplusplus >= 201103L + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // DR 1182. + /// std::hash specialization for vector. + template + struct hash<_GLIBCXX_STD_C::vector> + : public __hash_base> + { + size_t + operator()(const _GLIBCXX_STD_C::vector&) const noexcept; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +}// namespace std + +#endif // C++11 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_construct.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_construct.h new file mode 100644 index 0000000..c1863e6 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_construct.h @@ -0,0 +1,158 @@ +// nonstandard construct and destroy functions -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_construct.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _STL_CONSTRUCT_H +#define _STL_CONSTRUCT_H 1 + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * Constructs an object in existing memory by invoking an allocated + * object's constructor with an initializer. + */ +#if __cplusplus >= 201103L + template + inline void + _Construct(_T1* __p, _Args&&... __args) + { ::new(static_cast(__p)) _T1(std::forward<_Args>(__args)...); } +#else + template + inline void + _Construct(_T1* __p, const _T2& __value) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 402. wrong new expression in [some_]allocator::construct + ::new(static_cast(__p)) _T1(__value); + } +#endif + + /** + * Destroy the object pointed to by a pointer type. + */ + 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) { } + }; + + /** + * Destroy a range of objects. If the value_type of the object has + * a trivial destructor, the compiler should optimize all of this + * away, otherwise the objects' destructors must be invoked. + */ + 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); + } + + /** + * Destroy a range of objects using the supplied allocator. For + * nondefault allocators we do not optimize away invocation of + * destroy() even if _Tp has a trivial destructor. + */ + + 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); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif /* _STL_CONSTRUCT_H */ + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_deque.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_deque.h new file mode 100644 index 0000000..d07bc4d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_deque.h @@ -0,0 +1,2019 @@ +// Deque implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_deque.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{deque} + */ + +#ifndef _STL_DEQUE_H +#define _STL_DEQUE_H 1 + +#include +#include +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * @brief This function controls the size of memory nodes. + * @param __size The size of an element. + * @return The number (not byte size) of elements per node. + * + * This function started off as a compiler kludge from SGI, but + * seems to be a useful wrapper around a repeated constant + * expression. The @b 512 is tunable (and no other code needs to + * change), but no investigation has been done since inheriting the + * SGI code. Touch _GLIBCXX_DEQUE_BUF_SIZE only if you know what + * you are doing, however: changing it breaks the binary + * compatibility!! + */ + +#ifndef _GLIBCXX_DEQUE_BUF_SIZE +#define _GLIBCXX_DEQUE_BUF_SIZE 512 +#endif + + inline size_t + __deque_buf_size(size_t __size) + { return (__size < _GLIBCXX_DEQUE_BUF_SIZE + ? size_t(_GLIBCXX_DEQUE_BUF_SIZE / __size) : size_t(1)); } + + + /** + * @brief A deque::iterator. + * + * Quite a bit of intelligence here. Much of the functionality of + * deque is actually passed off to this class. A deque holds two + * of these internally, marking its valid range. Access to + * elements is done as offsets of either of those two, relying on + * operator overloading in this class. + * + * All the functions are op overloads except for _M_set_node. + */ + template + struct _Deque_iterator + { + typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator; + typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator; + + static size_t _S_buffer_size() + { return __deque_buf_size(sizeof(_Tp)); } + + typedef std::random_access_iterator_tag iterator_category; + typedef _Tp value_type; + typedef _Ptr pointer; + typedef _Ref reference; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp** _Map_pointer; + typedef _Deque_iterator _Self; + + _Tp* _M_cur; + _Tp* _M_first; + _Tp* _M_last; + _Map_pointer _M_node; + + _Deque_iterator(_Tp* __x, _Map_pointer __y) + : _M_cur(__x), _M_first(*__y), + _M_last(*__y + _S_buffer_size()), _M_node(__y) { } + + _Deque_iterator() + : _M_cur(0), _M_first(0), _M_last(0), _M_node(0) { } + + _Deque_iterator(const iterator& __x) + : _M_cur(__x._M_cur), _M_first(__x._M_first), + _M_last(__x._M_last), _M_node(__x._M_node) { } + + reference + operator*() const + { return *_M_cur; } + + pointer + operator->() const + { return _M_cur; } + + _Self& + operator++() + { + ++_M_cur; + if (_M_cur == _M_last) + { + _M_set_node(_M_node + 1); + _M_cur = _M_first; + } + return *this; + } + + _Self + operator++(int) + { + _Self __tmp = *this; + ++*this; + return __tmp; + } + + _Self& + operator--() + { + if (_M_cur == _M_first) + { + _M_set_node(_M_node - 1); + _M_cur = _M_last; + } + --_M_cur; + return *this; + } + + _Self + operator--(int) + { + _Self __tmp = *this; + --*this; + return __tmp; + } + + _Self& + operator+=(difference_type __n) + { + const difference_type __offset = __n + (_M_cur - _M_first); + if (__offset >= 0 && __offset < difference_type(_S_buffer_size())) + _M_cur += __n; + else + { + const difference_type __node_offset = + __offset > 0 ? __offset / difference_type(_S_buffer_size()) + : -difference_type((-__offset - 1) + / _S_buffer_size()) - 1; + _M_set_node(_M_node + __node_offset); + _M_cur = _M_first + (__offset - __node_offset + * difference_type(_S_buffer_size())); + } + return *this; + } + + _Self + operator+(difference_type __n) const + { + _Self __tmp = *this; + return __tmp += __n; + } + + _Self& + operator-=(difference_type __n) + { return *this += -__n; } + + _Self + operator-(difference_type __n) const + { + _Self __tmp = *this; + return __tmp -= __n; + } + + reference + operator[](difference_type __n) const + { return *(*this + __n); } + + /** + * Prepares to traverse new_node. Sets everything except + * _M_cur, which should therefore be set by the caller + * immediately afterwards, based on _M_first and _M_last. + */ + void + _M_set_node(_Map_pointer __new_node) + { + _M_node = __new_node; + _M_first = *__new_node; + _M_last = _M_first + difference_type(_S_buffer_size()); + } + }; + + // Note: we also provide overloads whose operands are of the same type in + // order to avoid ambiguous overload resolution when std::rel_ops operators + // are in scope (for additional details, see libstdc++/3628) + template + inline bool + operator==(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, + const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) + { return __x._M_cur == __y._M_cur; } + + template + inline bool + operator==(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, + const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) + { return __x._M_cur == __y._M_cur; } + + template + inline bool + operator!=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, + const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) + { return !(__x == __y); } + + template + inline bool + operator!=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, + const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) + { return !(__x == __y); } + + template + inline bool + operator<(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, + const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) + { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur) + : (__x._M_node < __y._M_node); } + + template + inline bool + operator<(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, + const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) + { return (__x._M_node == __y._M_node) ? (__x._M_cur < __y._M_cur) + : (__x._M_node < __y._M_node); } + + template + inline bool + operator>(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, + const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) + { return __y < __x; } + + template + inline bool + operator>(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, + const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) + { return __y < __x; } + + template + inline bool + operator<=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, + const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) + { return !(__y < __x); } + + template + inline bool + operator<=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, + const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) + { return !(__y < __x); } + + template + inline bool + operator>=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, + const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) + { return !(__x < __y); } + + template + inline bool + operator>=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, + const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) + { return !(__x < __y); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // According to the resolution of DR179 not only the various comparison + // operators but also operator- must accept mixed iterator/const_iterator + // parameters. + template + inline typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type + operator-(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, + const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) + { + return typename _Deque_iterator<_Tp, _Ref, _Ptr>::difference_type + (_Deque_iterator<_Tp, _Ref, _Ptr>::_S_buffer_size()) + * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) + + (__y._M_last - __y._M_cur); + } + + template + inline typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type + operator-(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, + const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) + { + return typename _Deque_iterator<_Tp, _RefL, _PtrL>::difference_type + (_Deque_iterator<_Tp, _RefL, _PtrL>::_S_buffer_size()) + * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) + + (__y._M_last - __y._M_cur); + } + + template + inline _Deque_iterator<_Tp, _Ref, _Ptr> + operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x) + { return __x + __n; } + + template + void + fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>&, + const _Deque_iterator<_Tp, _Tp&, _Tp*>&, const _Tp&); + + template + _Deque_iterator<_Tp, _Tp&, _Tp*> + copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, + _Deque_iterator<_Tp, const _Tp&, const _Tp*>, + _Deque_iterator<_Tp, _Tp&, _Tp*>); + + template + inline _Deque_iterator<_Tp, _Tp&, _Tp*> + copy(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, + _Deque_iterator<_Tp, _Tp&, _Tp*> __last, + _Deque_iterator<_Tp, _Tp&, _Tp*> __result) + { return std::copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*>(__first), + _Deque_iterator<_Tp, const _Tp&, const _Tp*>(__last), + __result); } + + template + _Deque_iterator<_Tp, _Tp&, _Tp*> + copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, + _Deque_iterator<_Tp, const _Tp&, const _Tp*>, + _Deque_iterator<_Tp, _Tp&, _Tp*>); + + template + inline _Deque_iterator<_Tp, _Tp&, _Tp*> + copy_backward(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, + _Deque_iterator<_Tp, _Tp&, _Tp*> __last, + _Deque_iterator<_Tp, _Tp&, _Tp*> __result) + { return std::copy_backward(_Deque_iterator<_Tp, + const _Tp&, const _Tp*>(__first), + _Deque_iterator<_Tp, + const _Tp&, const _Tp*>(__last), + __result); } + +#if __cplusplus >= 201103L + template + _Deque_iterator<_Tp, _Tp&, _Tp*> + move(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, + _Deque_iterator<_Tp, const _Tp&, const _Tp*>, + _Deque_iterator<_Tp, _Tp&, _Tp*>); + + template + inline _Deque_iterator<_Tp, _Tp&, _Tp*> + move(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, + _Deque_iterator<_Tp, _Tp&, _Tp*> __last, + _Deque_iterator<_Tp, _Tp&, _Tp*> __result) + { return std::move(_Deque_iterator<_Tp, const _Tp&, const _Tp*>(__first), + _Deque_iterator<_Tp, const _Tp&, const _Tp*>(__last), + __result); } + + template + _Deque_iterator<_Tp, _Tp&, _Tp*> + move_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*>, + _Deque_iterator<_Tp, const _Tp&, const _Tp*>, + _Deque_iterator<_Tp, _Tp&, _Tp*>); + + template + inline _Deque_iterator<_Tp, _Tp&, _Tp*> + move_backward(_Deque_iterator<_Tp, _Tp&, _Tp*> __first, + _Deque_iterator<_Tp, _Tp&, _Tp*> __last, + _Deque_iterator<_Tp, _Tp&, _Tp*> __result) + { return std::move_backward(_Deque_iterator<_Tp, + const _Tp&, const _Tp*>(__first), + _Deque_iterator<_Tp, + const _Tp&, const _Tp*>(__last), + __result); } +#endif + + /** + * Deque base class. This class provides the unified face for %deque's + * allocation. This class's constructor and destructor allocate and + * deallocate (but do not initialize) storage. This makes %exception + * safety easier. + * + * Nothing in this class ever constructs or destroys an actual Tp element. + * (Deque handles that itself.) Only/All memory management is performed + * here. + */ + template + class _Deque_base + { + public: + typedef _Alloc allocator_type; + + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return allocator_type(_M_get_Tp_allocator()); } + + typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator; + typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator; + + _Deque_base() + : _M_impl() + { _M_initialize_map(0); } + + _Deque_base(size_t __num_elements) + : _M_impl() + { _M_initialize_map(__num_elements); } + + _Deque_base(const allocator_type& __a, size_t __num_elements) + : _M_impl(__a) + { _M_initialize_map(__num_elements); } + + _Deque_base(const allocator_type& __a) + : _M_impl(__a) + { } + +#if __cplusplus >= 201103L + _Deque_base(_Deque_base&& __x) + : _M_impl(std::move(__x._M_get_Tp_allocator())) + { + _M_initialize_map(0); + if (__x._M_impl._M_map) + { + 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_map, __x._M_impl._M_map); + std::swap(this->_M_impl._M_map_size, __x._M_impl._M_map_size); + } + } +#endif + + ~_Deque_base(); + + protected: + //This struct encapsulates the implementation of the std::deque + //standard container and at the same time makes use of the EBO + //for empty allocators. + typedef typename _Alloc::template rebind<_Tp*>::other _Map_alloc_type; + + typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type; + + struct _Deque_impl + : public _Tp_alloc_type + { + _Tp** _M_map; + size_t _M_map_size; + iterator _M_start; + iterator _M_finish; + + _Deque_impl() + : _Tp_alloc_type(), _M_map(0), _M_map_size(0), + _M_start(), _M_finish() + { } + + _Deque_impl(const _Tp_alloc_type& __a) + : _Tp_alloc_type(__a), _M_map(0), _M_map_size(0), + _M_start(), _M_finish() + { } + +#if __cplusplus >= 201103L + _Deque_impl(_Tp_alloc_type&& __a) + : _Tp_alloc_type(std::move(__a)), _M_map(0), _M_map_size(0), + _M_start(), _M_finish() + { } +#endif + }; + + _Tp_alloc_type& + _M_get_Tp_allocator() _GLIBCXX_NOEXCEPT + { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } + + const _Tp_alloc_type& + _M_get_Tp_allocator() const _GLIBCXX_NOEXCEPT + { return *static_cast(&this->_M_impl); } + + _Map_alloc_type + _M_get_map_allocator() const _GLIBCXX_NOEXCEPT + { return _Map_alloc_type(_M_get_Tp_allocator()); } + + _Tp* + _M_allocate_node() + { + return _M_impl._Tp_alloc_type::allocate(__deque_buf_size(sizeof(_Tp))); + } + + void + _M_deallocate_node(_Tp* __p) + { + _M_impl._Tp_alloc_type::deallocate(__p, __deque_buf_size(sizeof(_Tp))); + } + + _Tp** + _M_allocate_map(size_t __n) + { return _M_get_map_allocator().allocate(__n); } + + void + _M_deallocate_map(_Tp** __p, size_t __n) + { _M_get_map_allocator().deallocate(__p, __n); } + + protected: + void _M_initialize_map(size_t); + void _M_create_nodes(_Tp** __nstart, _Tp** __nfinish); + void _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish); + enum { _S_initial_map_size = 8 }; + + _Deque_impl _M_impl; + }; + + template + _Deque_base<_Tp, _Alloc>:: + ~_Deque_base() + { + if (this->_M_impl._M_map) + { + _M_destroy_nodes(this->_M_impl._M_start._M_node, + this->_M_impl._M_finish._M_node + 1); + _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); + } + } + + /** + * @brief Layout storage. + * @param __num_elements The count of T's for which to allocate space + * at first. + * @return Nothing. + * + * The initial underlying memory layout is a bit complicated... + */ + template + void + _Deque_base<_Tp, _Alloc>:: + _M_initialize_map(size_t __num_elements) + { + const size_t __num_nodes = (__num_elements/ __deque_buf_size(sizeof(_Tp)) + + 1); + + this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size, + size_t(__num_nodes + 2)); + this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size); + + // For "small" maps (needing less than _M_map_size nodes), allocation + // starts in the middle elements and grows outwards. So nstart may be + // the beginning of _M_map, but for small maps it may be as far in as + // _M_map+3. + + _Tp** __nstart = (this->_M_impl._M_map + + (this->_M_impl._M_map_size - __num_nodes) / 2); + _Tp** __nfinish = __nstart + __num_nodes; + + __try + { _M_create_nodes(__nstart, __nfinish); } + __catch(...) + { + _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); + this->_M_impl._M_map = 0; + this->_M_impl._M_map_size = 0; + __throw_exception_again; + } + + this->_M_impl._M_start._M_set_node(__nstart); + this->_M_impl._M_finish._M_set_node(__nfinish - 1); + this->_M_impl._M_start._M_cur = _M_impl._M_start._M_first; + this->_M_impl._M_finish._M_cur = (this->_M_impl._M_finish._M_first + + __num_elements + % __deque_buf_size(sizeof(_Tp))); + } + + template + void + _Deque_base<_Tp, _Alloc>:: + _M_create_nodes(_Tp** __nstart, _Tp** __nfinish) + { + _Tp** __cur; + __try + { + for (__cur = __nstart; __cur < __nfinish; ++__cur) + *__cur = this->_M_allocate_node(); + } + __catch(...) + { + _M_destroy_nodes(__nstart, __cur); + __throw_exception_again; + } + } + + template + void + _Deque_base<_Tp, _Alloc>:: + _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish) + { + for (_Tp** __n = __nstart; __n < __nfinish; ++__n) + _M_deallocate_node(*__n); + } + + /** + * @brief A standard container using fixed-size memory allocation and + * constant-time manipulation of elements at either end. + * + * @ingroup sequences + * + * @tparam _Tp Type of element. + * @tparam _Alloc Allocator type, defaults to allocator<_Tp>. + * + * Meets the requirements of a container, a + * reversible container, and a + * sequence, including the + * optional sequence requirements. + * + * In previous HP/SGI versions of deque, there was an extra template + * parameter so users could control the node size. This extension turned + * out to violate the C++ standard (it can be detected using template + * template parameters), and it was removed. + * + * Here's how a deque manages memory. Each deque has 4 members: + * + * - Tp** _M_map + * - size_t _M_map_size + * - iterator _M_start, _M_finish + * + * map_size is at least 8. %map is an array of map_size + * pointers-to-@a nodes. (The name %map has nothing to do with the + * std::map class, and @b nodes should not be confused with + * std::list's usage of @a node.) + * + * A @a node has no specific type name as such, but it is referred + * to as @a node in this file. It is a simple array-of-Tp. If Tp + * is very large, there will be one Tp element per node (i.e., an + * @a array of one). For non-huge Tp's, node size is inversely + * related to Tp size: the larger the Tp, the fewer Tp's will fit + * in a node. The goal here is to keep the total size of a node + * relatively small and constant over different Tp's, to improve + * allocator efficiency. + * + * Not every pointer in the %map array will point to a node. If + * the initial number of elements in the deque is small, the + * /middle/ %map pointers will be valid, and the ones at the edges + * will be unused. This same situation will arise as the %map + * grows: available %map pointers, if any, will be on the ends. As + * new nodes are created, only a subset of the %map's pointers need + * to be copied @a outward. + * + * Class invariants: + * - For any nonsingular iterator i: + * - i.node points to a member of the %map array. (Yes, you read that + * correctly: i.node does not actually point to a node.) The member of + * the %map array is what actually points to the node. + * - i.first == *(i.node) (This points to the node (first Tp element).) + * - i.last == i.first + node_size + * - i.cur is a pointer in the range [i.first, i.last). NOTE: + * the implication of this is that i.cur is always a dereferenceable + * pointer, even if i is a past-the-end iterator. + * - Start and Finish are always nonsingular iterators. NOTE: this + * means that an empty deque must have one node, a deque with > + class deque : protected _Deque_base<_Tp, _Alloc> + { + // concept requirements + typedef typename _Alloc::value_type _Alloc_value_type; + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) + + typedef _Deque_base<_Tp, _Alloc> _Base; + typedef typename _Base::_Tp_alloc_type _Tp_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 typename _Base::iterator iterator; + typedef typename _Base::const_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: + typedef pointer* _Map_pointer; + + static size_t _S_buffer_size() + { return __deque_buf_size(sizeof(_Tp)); } + + // Functions controlling memory layout, and nothing else. + using _Base::_M_initialize_map; + using _Base::_M_create_nodes; + using _Base::_M_destroy_nodes; + using _Base::_M_allocate_node; + using _Base::_M_deallocate_node; + using _Base::_M_allocate_map; + using _Base::_M_deallocate_map; + using _Base::_M_get_Tp_allocator; + + /** + * A total of four data members accumulated down the hierarchy. + * May be accessed via _M_impl.* + */ + using _Base::_M_impl; + + public: + // [23.2.1.1] construct/copy/destroy + // (assign() and get_allocator() are also listed in this section) + /** + * @brief Default constructor creates no elements. + */ + deque() + : _Base() { } + + /** + * @brief Creates a %deque with no elements. + * @param __a An allocator object. + */ + explicit + deque(const allocator_type& __a) + : _Base(__a, 0) { } + +#if __cplusplus >= 201103L + /** + * @brief Creates a %deque with default constructed elements. + * @param __n The number of elements to initially create. + * + * This constructor fills the %deque with @a n default + * constructed elements. + */ + explicit + deque(size_type __n) + : _Base(__n) + { _M_default_initialize(); } + + /** + * @brief Creates a %deque with copies of an exemplar element. + * @param __n The number of elements to initially create. + * @param __value An element to copy. + * @param __a An allocator. + * + * This constructor fills the %deque with @a __n copies of @a __value. + */ + deque(size_type __n, const value_type& __value, + const allocator_type& __a = allocator_type()) + : _Base(__a, __n) + { _M_fill_initialize(__value); } +#else + /** + * @brief Creates a %deque with copies of an exemplar element. + * @param __n The number of elements to initially create. + * @param __value An element to copy. + * @param __a An allocator. + * + * This constructor fills the %deque with @a __n copies of @a __value. + */ + explicit + deque(size_type __n, const value_type& __value = value_type(), + const allocator_type& __a = allocator_type()) + : _Base(__a, __n) + { _M_fill_initialize(__value); } +#endif + + /** + * @brief %Deque copy constructor. + * @param __x A %deque of identical element and allocator types. + * + * The newly-created %deque uses a copy of the allocation object used + * by @a __x. + */ + deque(const deque& __x) + : _Base(__x._M_get_Tp_allocator(), __x.size()) + { std::__uninitialized_copy_a(__x.begin(), __x.end(), + this->_M_impl._M_start, + _M_get_Tp_allocator()); } + +#if __cplusplus >= 201103L + /** + * @brief %Deque move constructor. + * @param __x A %deque of identical element and allocator types. + * + * The newly-created %deque contains the exact contents of @a __x. + * The contents of @a __x are a valid, but unspecified %deque. + */ + deque(deque&& __x) + : _Base(std::move(__x)) { } + + /** + * @brief Builds a %deque from an initializer list. + * @param __l An initializer_list. + * @param __a An allocator object. + * + * Create a %deque consisting of copies of the elements in the + * initializer_list @a __l. + * + * This will call the element type's copy constructor N times + * (where N is __l.size()) and do no memory reallocation. + */ + deque(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + _M_range_initialize(__l.begin(), __l.end(), + random_access_iterator_tag()); + } +#endif + + /** + * @brief Builds a %deque from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __a An allocator object. + * + * Create a %deque consisting of copies of the elements from [__first, + * __last). + * + * If the iterators are forward, bidirectional, or random-access, then + * this will call the elements' copy constructor N times (where N is + * distance(__first,__last)) and do no memory reallocation. But if only + * input iterators are used, then this will do at most 2N calls to the + * copy constructor, and logN memory reallocations. + */ +#if __cplusplus >= 201103L + template> + deque(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { _M_initialize_dispatch(__first, __last, __false_type()); } +#else + template + deque(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + // Check whether it's an integral type. If so, it's not an iterator. + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_initialize_dispatch(__first, __last, _Integral()); + } +#endif + + /** + * The dtor only erases the elements, and note that if the elements + * themselves are pointers, the pointed-to memory is not touched in any + * way. Managing the pointer is the user's responsibility. + */ + ~deque() _GLIBCXX_NOEXCEPT + { _M_destroy_data(begin(), end(), _M_get_Tp_allocator()); } + + /** + * @brief %Deque assignment operator. + * @param __x A %deque of identical element and allocator types. + * + * All the elements of @a x are copied, but unlike the copy constructor, + * the allocator object is not copied. + */ + deque& + operator=(const deque& __x); + +#if __cplusplus >= 201103L + /** + * @brief %Deque move assignment operator. + * @param __x A %deque of identical element and allocator types. + * + * The contents of @a __x are moved into this deque (without copying). + * @a __x is a valid, but unspecified %deque. + */ + deque& + operator=(deque&& __x) + { + // NB: DR 1204. + // NB: DR 675. + this->clear(); + this->swap(__x); + return *this; + } + + /** + * @brief Assigns an initializer list to a %deque. + * @param __l An initializer_list. + * + * This function fills a %deque with copies of the elements in the + * initializer_list @a __l. + * + * Note that the assignment completely changes the %deque and that the + * resulting %deque's size is the same as the number of elements + * assigned. Old data may be lost. + */ + deque& + operator=(initializer_list __l) + { + this->assign(__l.begin(), __l.end()); + return *this; + } +#endif + + /** + * @brief Assigns a given value to a %deque. + * @param __n Number of elements to be assigned. + * @param __val Value to be assigned. + * + * This function fills a %deque with @a n copies of the given + * value. Note that the assignment completely changes the + * %deque and that the resulting %deque's size is the same as + * the number of elements assigned. Old data may be lost. + */ + void + assign(size_type __n, const value_type& __val) + { _M_fill_assign(__n, __val); } + + /** + * @brief Assigns a range to a %deque. + * @param __first An input iterator. + * @param __last An input iterator. + * + * This function fills a %deque with copies of the elements in the + * range [__first,__last). + * + * Note that the assignment completely changes the %deque and that the + * resulting %deque's size is the same as the number of elements + * assigned. Old data may be lost. + */ +#if __cplusplus >= 201103L + template> + void + assign(_InputIterator __first, _InputIterator __last) + { _M_assign_dispatch(__first, __last, __false_type()); } +#else + template + void + assign(_InputIterator __first, _InputIterator __last) + { + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_assign_dispatch(__first, __last, _Integral()); + } +#endif + +#if __cplusplus >= 201103L + /** + * @brief Assigns an initializer list to a %deque. + * @param __l An initializer_list. + * + * This function fills a %deque with copies of the elements in the + * initializer_list @a __l. + * + * Note that the assignment completely changes the %deque and that the + * resulting %deque's size is the same as the number of elements + * assigned. Old data may be lost. + */ + void + assign(initializer_list __l) + { this->assign(__l.begin(), __l.end()); } +#endif + + /// Get a copy of the memory allocation object. + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return _Base::get_allocator(); } + + // iterators + /** + * Returns a read/write iterator that points to the first element in the + * %deque. Iteration is done in ordinary element order. + */ + iterator + begin() _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_start; } + + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %deque. Iteration is done in ordinary element order. + */ + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_start; } + + /** + * Returns a read/write iterator that points one past the last + * element in the %deque. Iteration is done in ordinary + * element order. + */ + iterator + end() _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_finish; } + + /** + * Returns a read-only (constant) iterator that points one past + * the last element in the %deque. Iteration is done in + * ordinary element order. + */ + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_finish; } + + /** + * Returns a read/write reverse iterator that points to the + * last element in the %deque. Iteration is done in reverse + * element order. + */ + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(this->_M_impl._M_finish); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to the last element in the %deque. Iteration is done in + * reverse element order. + */ + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(this->_M_impl._M_finish); } + + /** + * Returns a read/write reverse iterator that points to one + * before the first element in the %deque. Iteration is done + * in reverse element order. + */ + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(this->_M_impl._M_start); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to one before the first element in the %deque. Iteration is + * done in reverse element order. + */ + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(this->_M_impl._M_start); } + +#if __cplusplus >= 201103L + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %deque. Iteration is done in ordinary element order. + */ + const_iterator + cbegin() const noexcept + { return this->_M_impl._M_start; } + + /** + * Returns a read-only (constant) iterator that points one past + * the last element in the %deque. Iteration is done in + * ordinary element order. + */ + const_iterator + cend() const noexcept + { return this->_M_impl._M_finish; } + + /** + * Returns a read-only (constant) reverse iterator that points + * to the last element in the %deque. Iteration is done in + * reverse element order. + */ + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(this->_M_impl._M_finish); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to one before the first element in the %deque. Iteration is + * done in reverse element order. + */ + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(this->_M_impl._M_start); } +#endif + + // [23.2.1.2] capacity + /** Returns the number of elements in the %deque. */ + size_type + size() const _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_finish - this->_M_impl._M_start; } + + /** Returns the size() of the largest possible %deque. */ + size_type + max_size() const _GLIBCXX_NOEXCEPT + { return _M_get_Tp_allocator().max_size(); } + +#if __cplusplus >= 201103L + /** + * @brief Resizes the %deque to the specified number of elements. + * @param __new_size Number of elements the %deque should contain. + * + * This function will %resize the %deque to the specified + * number of elements. If the number is smaller than the + * %deque's current size the %deque is truncated, otherwise + * default constructed elements are appended. + */ + void + resize(size_type __new_size) + { + const size_type __len = size(); + if (__new_size > __len) + _M_default_append(__new_size - __len); + else if (__new_size < __len) + _M_erase_at_end(this->_M_impl._M_start + + difference_type(__new_size)); + } + + /** + * @brief Resizes the %deque to the specified number of elements. + * @param __new_size Number of elements the %deque should contain. + * @param __x Data with which new elements should be populated. + * + * This function will %resize the %deque to the specified + * number of elements. If the number is smaller than the + * %deque's current size the %deque is truncated, otherwise the + * %deque is extended and new elements are populated with given + * data. + */ + void + resize(size_type __new_size, const value_type& __x) + { + const size_type __len = size(); + if (__new_size > __len) + insert(this->_M_impl._M_finish, __new_size - __len, __x); + else if (__new_size < __len) + _M_erase_at_end(this->_M_impl._M_start + + difference_type(__new_size)); + } +#else + /** + * @brief Resizes the %deque to the specified number of elements. + * @param __new_size Number of elements the %deque should contain. + * @param __x Data with which new elements should be populated. + * + * This function will %resize the %deque to the specified + * number of elements. If the number is smaller than the + * %deque's current size the %deque is truncated, otherwise the + * %deque is extended and new elements are populated with given + * data. + */ + void + resize(size_type __new_size, value_type __x = value_type()) + { + const size_type __len = size(); + if (__new_size > __len) + insert(this->_M_impl._M_finish, __new_size - __len, __x); + else if (__new_size < __len) + _M_erase_at_end(this->_M_impl._M_start + + difference_type(__new_size)); + } +#endif + +#if __cplusplus >= 201103L + /** A non-binding request to reduce memory use. */ + void + shrink_to_fit() + { _M_shrink_to_fit(); } +#endif + + /** + * Returns true if the %deque is empty. (Thus begin() would + * equal end().) + */ + bool + empty() const _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_finish == this->_M_impl._M_start; } + + // element access + /** + * @brief Subscript access to the data contained in the %deque. + * @param __n The index of the element for which data should be + * accessed. + * @return Read/write reference to data. + * + * This operator allows for easy, array-style, data access. + * Note that data access with this operator is unchecked and + * out_of_range lookups are not defined. (For checked lookups + * see at().) + */ + reference + operator[](size_type __n) + { return this->_M_impl._M_start[difference_type(__n)]; } + + /** + * @brief Subscript access to the data contained in the %deque. + * @param __n The index of the element for which data should be + * accessed. + * @return Read-only (constant) reference to data. + * + * This operator allows for easy, array-style, data access. + * Note that data access with this operator is unchecked and + * out_of_range lookups are not defined. (For checked lookups + * see at().) + */ + const_reference + operator[](size_type __n) const + { return this->_M_impl._M_start[difference_type(__n)]; } + + protected: + /// Safety check used only from at(). + void + _M_range_check(size_type __n) const + { + if (__n >= this->size()) + __throw_out_of_range(__N("deque::_M_range_check")); + } + + public: + /** + * @brief Provides access to the data contained in the %deque. + * @param __n The index of the element for which data should be + * accessed. + * @return Read/write reference to data. + * @throw std::out_of_range If @a __n is an invalid index. + * + * This function provides for safer data access. The parameter + * is first checked that it is in the range of the deque. The + * function throws out_of_range if the check fails. + */ + reference + at(size_type __n) + { + _M_range_check(__n); + return (*this)[__n]; + } + + /** + * @brief Provides access to the data contained in the %deque. + * @param __n The index of the element for which data should be + * accessed. + * @return Read-only (constant) reference to data. + * @throw std::out_of_range If @a __n is an invalid index. + * + * This function provides for safer data access. The parameter is first + * checked that it is in the range of the deque. The function throws + * out_of_range if the check fails. + */ + const_reference + at(size_type __n) const + { + _M_range_check(__n); + return (*this)[__n]; + } + + /** + * Returns a read/write reference to the data at the first + * element of the %deque. + */ + reference + front() + { return *begin(); } + + /** + * Returns a read-only (constant) reference to the data at the first + * element of the %deque. + */ + const_reference + front() const + { return *begin(); } + + /** + * Returns a read/write reference to the data at the last element of the + * %deque. + */ + reference + back() + { + iterator __tmp = end(); + --__tmp; + return *__tmp; + } + + /** + * Returns a read-only (constant) reference to the data at the last + * element of the %deque. + */ + const_reference + back() const + { + const_iterator __tmp = end(); + --__tmp; + return *__tmp; + } + + // [23.2.1.2] modifiers + /** + * @brief Add data to the front of the %deque. + * @param __x Data to be added. + * + * This is a typical stack operation. The function creates an + * element at the front of the %deque and assigns the given + * data to it. Due to the nature of a %deque this operation + * can be done in constant time. + */ + void + push_front(const value_type& __x) + { + if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) + { + this->_M_impl.construct(this->_M_impl._M_start._M_cur - 1, __x); + --this->_M_impl._M_start._M_cur; + } + else + _M_push_front_aux(__x); + } + +#if __cplusplus >= 201103L + void + push_front(value_type&& __x) + { emplace_front(std::move(__x)); } + + template + void + emplace_front(_Args&&... __args); +#endif + + /** + * @brief Add data to the end of the %deque. + * @param __x Data to be added. + * + * This is a typical stack operation. The function creates an + * element at the end of the %deque and assigns the given data + * to it. Due to the nature of a %deque this operation can be + * done in constant time. + */ + void + push_back(const value_type& __x) + { + if (this->_M_impl._M_finish._M_cur + != this->_M_impl._M_finish._M_last - 1) + { + this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __x); + ++this->_M_impl._M_finish._M_cur; + } + else + _M_push_back_aux(__x); + } + +#if __cplusplus >= 201103L + void + push_back(value_type&& __x) + { emplace_back(std::move(__x)); } + + template + void + emplace_back(_Args&&... __args); +#endif + + /** + * @brief Removes first element. + * + * This is a typical stack operation. It shrinks the %deque by one. + * + * Note that no data is returned, and if the first element's data is + * needed, it should be retrieved before pop_front() is called. + */ + void + pop_front() + { + if (this->_M_impl._M_start._M_cur + != this->_M_impl._M_start._M_last - 1) + { + this->_M_impl.destroy(this->_M_impl._M_start._M_cur); + ++this->_M_impl._M_start._M_cur; + } + else + _M_pop_front_aux(); + } + + /** + * @brief Removes last element. + * + * This is a typical stack operation. It shrinks the %deque by one. + * + * Note that no data is returned, and if the last element's data is + * needed, it should be retrieved before pop_back() is called. + */ + void + pop_back() + { + if (this->_M_impl._M_finish._M_cur + != this->_M_impl._M_finish._M_first) + { + --this->_M_impl._M_finish._M_cur; + this->_M_impl.destroy(this->_M_impl._M_finish._M_cur); + } + else + _M_pop_back_aux(); + } + +#if __cplusplus >= 201103L + /** + * @brief Inserts an object in %deque before specified iterator. + * @param __position An iterator into the %deque. + * @param __args Arguments. + * @return An iterator that points to the inserted data. + * + * This function will insert an object of type T constructed + * with T(std::forward(args)...) before the specified location. + */ + template + iterator + emplace(iterator __position, _Args&&... __args); +#endif + + /** + * @brief Inserts given value into %deque before specified iterator. + * @param __position An iterator into the %deque. + * @param __x Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given value before the + * specified location. + */ + iterator + insert(iterator __position, const value_type& __x); + +#if __cplusplus >= 201103L + /** + * @brief Inserts given rvalue into %deque before specified iterator. + * @param __position An iterator into the %deque. + * @param __x Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given rvalue before the + * specified location. + */ + iterator + insert(iterator __position, value_type&& __x) + { return emplace(__position, std::move(__x)); } + + /** + * @brief Inserts an initializer list into the %deque. + * @param __p An iterator into the %deque. + * @param __l An initializer_list. + * + * This function will insert copies of the data in the + * initializer_list @a __l into the %deque before the location + * specified by @a __p. This is known as list insert. + */ + void + insert(iterator __p, initializer_list __l) + { this->insert(__p, __l.begin(), __l.end()); } +#endif + + /** + * @brief Inserts a number of copies of given data into the %deque. + * @param __position An iterator into the %deque. + * @param __n Number of elements to be inserted. + * @param __x Data to be inserted. + * + * This function will insert a specified number of copies of the given + * data before the location specified by @a __position. + */ + void + insert(iterator __position, size_type __n, const value_type& __x) + { _M_fill_insert(__position, __n, __x); } + + /** + * @brief Inserts a range into the %deque. + * @param __position An iterator into the %deque. + * @param __first An input iterator. + * @param __last An input iterator. + * + * This function will insert copies of the data in the range + * [__first,__last) into the %deque before the location specified + * by @a __position. This is known as range insert. + */ +#if __cplusplus >= 201103L + template> + void + insert(iterator __position, _InputIterator __first, + _InputIterator __last) + { _M_insert_dispatch(__position, __first, __last, __false_type()); } +#else + template + void + insert(iterator __position, _InputIterator __first, + _InputIterator __last) + { + // Check whether it's an integral type. If so, it's not an iterator. + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_insert_dispatch(__position, __first, __last, _Integral()); + } +#endif + + /** + * @brief Remove element at given position. + * @param __position Iterator pointing to element to be erased. + * @return An iterator pointing to the next element (or end()). + * + * This function will erase the element at the given position and thus + * shorten the %deque by one. + * + * The user is cautioned that + * this function only erases the element, and that if the element is + * itself a pointer, the pointed-to memory is not touched in any way. + * Managing the pointer is the user's responsibility. + */ + iterator + erase(iterator __position); + + /** + * @brief Remove a range of elements. + * @param __first Iterator pointing to the first element to be erased. + * @param __last Iterator pointing to one past the last element to be + * erased. + * @return An iterator pointing to the element pointed to by @a last + * prior to erasing (or end()). + * + * This function will erase the elements in the range + * [__first,__last) and shorten the %deque accordingly. + * + * The user is cautioned that + * this function only erases the elements, and that if the elements + * themselves are pointers, the pointed-to memory is not touched in any + * way. Managing the pointer is the user's responsibility. + */ + iterator + erase(iterator __first, iterator __last); + + /** + * @brief Swaps data with another %deque. + * @param __x A %deque of the same element and allocator types. + * + * This exchanges the elements between two deques in constant time. + * (Four pointers, so it should be quite fast.) + * Note that the global std::swap() function is specialized such that + * std::swap(d1,d2) will feed to this function. + */ + void + swap(deque& __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_map, __x._M_impl._M_map); + std::swap(this->_M_impl._M_map_size, __x._M_impl._M_map_size); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 431. Swapping containers with unequal allocators. + std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(), + __x._M_get_Tp_allocator()); + } + + /** + * Erases all the elements. Note that this function only erases the + * elements, and that if the elements themselves are pointers, the + * pointed-to memory is not touched in any way. Managing the pointer is + * the user's responsibility. + */ + void + clear() _GLIBCXX_NOEXCEPT + { _M_erase_at_end(begin()); } + + protected: + // Internal constructor functions follow. + + // called by the range constructor to implement [23.1.1]/9 + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) + { + _M_initialize_map(static_cast(__n)); + _M_fill_initialize(__x); + } + + // called by the range constructor to implement [23.1.1]/9 + 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()); + } + + // called by the second initialize_dispatch above + //@{ + /** + * @brief Fills the deque with whatever is in [first,last). + * @param __first An input iterator. + * @param __last An input iterator. + * @return Nothing. + * + * If the iterators are actually forward iterators (or better), then the + * memory layout can be done all at once. Else we move forward using + * push_back on each value from the iterator. + */ + template + void + _M_range_initialize(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag); + + // called by the second initialize_dispatch above + template + void + _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag); + //@} + + /** + * @brief Fills the %deque with copies of value. + * @param __value Initial value. + * @return Nothing. + * @pre _M_start and _M_finish have already been initialized, + * but none of the %deque's elements have yet been constructed. + * + * This function is called only when the user provides an explicit size + * (with or without an explicit exemplar value). + */ + void + _M_fill_initialize(const value_type& __value); + +#if __cplusplus >= 201103L + // called by deque(n). + void + _M_default_initialize(); +#endif + + // Internal assign functions follow. The *_aux functions do the actual + // assignment work for the range versions. + + // called by the range assign to implement [23.1.1]/9 + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + // called by the range assign to implement [23.1.1]/9 + 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()); + } + + // called by the second assign_dispatch above + template + void + _M_assign_aux(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag); + + // called by the second assign_dispatch above + template + void + _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag) + { + const size_type __len = std::distance(__first, __last); + if (__len > size()) + { + _ForwardIterator __mid = __first; + std::advance(__mid, size()); + std::copy(__first, __mid, begin()); + insert(end(), __mid, __last); + } + else + _M_erase_at_end(std::copy(__first, __last, begin())); + } + + // Called by assign(n,t), and the range assign when it turns out + // to be the same thing. + void + _M_fill_assign(size_type __n, const value_type& __val) + { + if (__n > size()) + { + std::fill(begin(), end(), __val); + insert(end(), __n - size(), __val); + } + else + { + _M_erase_at_end(begin() + difference_type(__n)); + std::fill(begin(), end(), __val); + } + } + + //@{ + /// Helper functions for push_* and pop_*. +#if __cplusplus < 201103L + void _M_push_back_aux(const value_type&); + + void _M_push_front_aux(const value_type&); +#else + template + void _M_push_back_aux(_Args&&... __args); + + template + void _M_push_front_aux(_Args&&... __args); +#endif + + void _M_pop_back_aux(); + + void _M_pop_front_aux(); + //@} + + // Internal insert functions follow. The *_aux functions do the actual + // insertion work when all shortcuts fail. + + // called by the range insert to implement [23.1.1]/9 + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_insert_dispatch(iterator __pos, + _Integer __n, _Integer __x, __true_type) + { _M_fill_insert(__pos, __n, __x); } + + // called by the range insert to implement [23.1.1]/9 + 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_aux(__pos, __first, __last, _IterCategory()); + } + + // called by the second insert_dispatch above + template + void + _M_range_insert_aux(iterator __pos, _InputIterator __first, + _InputIterator __last, std::input_iterator_tag); + + // called by the second insert_dispatch above + template + void + _M_range_insert_aux(iterator __pos, _ForwardIterator __first, + _ForwardIterator __last, std::forward_iterator_tag); + + // Called by insert(p,n,x), and the range insert when it turns out to be + // the same thing. Can use fill functions in optimal situations, + // otherwise passes off to insert_aux(p,n,x). + void + _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); + + // called by insert(p,x) +#if __cplusplus < 201103L + iterator + _M_insert_aux(iterator __pos, const value_type& __x); +#else + template + iterator + _M_insert_aux(iterator __pos, _Args&&... __args); +#endif + + // called by insert(p,n,x) via fill_insert + void + _M_insert_aux(iterator __pos, size_type __n, const value_type& __x); + + // called by range_insert_aux for forward iterators + template + void + _M_insert_aux(iterator __pos, + _ForwardIterator __first, _ForwardIterator __last, + size_type __n); + + + // Internal erase functions follow. + + void + _M_destroy_data_aux(iterator __first, iterator __last); + + // Called by ~deque(). + // NB: Doesn't deallocate the nodes. + template + void + _M_destroy_data(iterator __first, iterator __last, const _Alloc1&) + { _M_destroy_data_aux(__first, __last); } + + void + _M_destroy_data(iterator __first, iterator __last, + const std::allocator<_Tp>&) + { + if (!__has_trivial_destructor(value_type)) + _M_destroy_data_aux(__first, __last); + } + + // Called by erase(q1, q2). + void + _M_erase_at_begin(iterator __pos) + { + _M_destroy_data(begin(), __pos, _M_get_Tp_allocator()); + _M_destroy_nodes(this->_M_impl._M_start._M_node, __pos._M_node); + this->_M_impl._M_start = __pos; + } + + // Called by erase(q1, q2), resize(), clear(), _M_assign_aux, + // _M_fill_assign, operator=. + void + _M_erase_at_end(iterator __pos) + { + _M_destroy_data(__pos, end(), _M_get_Tp_allocator()); + _M_destroy_nodes(__pos._M_node + 1, + this->_M_impl._M_finish._M_node + 1); + this->_M_impl._M_finish = __pos; + } + +#if __cplusplus >= 201103L + // Called by resize(sz). + void + _M_default_append(size_type __n); + + bool + _M_shrink_to_fit(); +#endif + + //@{ + /// Memory-handling helpers for the previous internal insert functions. + iterator + _M_reserve_elements_at_front(size_type __n) + { + const size_type __vacancies = this->_M_impl._M_start._M_cur + - this->_M_impl._M_start._M_first; + if (__n > __vacancies) + _M_new_elements_at_front(__n - __vacancies); + return this->_M_impl._M_start - difference_type(__n); + } + + iterator + _M_reserve_elements_at_back(size_type __n) + { + const size_type __vacancies = (this->_M_impl._M_finish._M_last + - this->_M_impl._M_finish._M_cur) - 1; + if (__n > __vacancies) + _M_new_elements_at_back(__n - __vacancies); + return this->_M_impl._M_finish + difference_type(__n); + } + + void + _M_new_elements_at_front(size_type __new_elements); + + void + _M_new_elements_at_back(size_type __new_elements); + //@} + + + //@{ + /** + * @brief Memory-handling helpers for the major %map. + * + * Makes sure the _M_map has space for new nodes. Does not + * actually add the nodes. Can invalidate _M_map pointers. + * (And consequently, %deque iterators.) + */ + void + _M_reserve_map_at_back(size_type __nodes_to_add = 1) + { + if (__nodes_to_add + 1 > this->_M_impl._M_map_size + - (this->_M_impl._M_finish._M_node - this->_M_impl._M_map)) + _M_reallocate_map(__nodes_to_add, false); + } + + void + _M_reserve_map_at_front(size_type __nodes_to_add = 1) + { + if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node + - this->_M_impl._M_map)) + _M_reallocate_map(__nodes_to_add, true); + } + + void + _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front); + //@} + }; + + + /** + * @brief Deque equality comparison. + * @param __x A %deque. + * @param __y A %deque of the same type as @a __x. + * @return True iff the size and elements of the deques are equal. + * + * This is an equivalence relation. It is linear in the size of the + * deques. Deques are considered equivalent if their sizes are equal, + * and if corresponding elements compare equal. + */ + template + inline bool + operator==(const deque<_Tp, _Alloc>& __x, + const deque<_Tp, _Alloc>& __y) + { return __x.size() == __y.size() + && std::equal(__x.begin(), __x.end(), __y.begin()); } + + /** + * @brief Deque ordering relation. + * @param __x A %deque. + * @param __y A %deque of the same type as @a __x. + * @return True iff @a x is lexicographically less than @a __y. + * + * This is a total ordering relation. It is linear in the size of the + * deques. The elements must be comparable with @c <. + * + * See std::lexicographical_compare() for how the determination is made. + */ + template + inline bool + operator<(const deque<_Tp, _Alloc>& __x, + const deque<_Tp, _Alloc>& __y) + { return std::lexicographical_compare(__x.begin(), __x.end(), + __y.begin(), __y.end()); } + + /// Based on operator== + template + inline bool + operator!=(const deque<_Tp, _Alloc>& __x, + const deque<_Tp, _Alloc>& __y) + { return !(__x == __y); } + + /// Based on operator< + template + inline bool + operator>(const deque<_Tp, _Alloc>& __x, + const deque<_Tp, _Alloc>& __y) + { return __y < __x; } + + /// Based on operator< + template + inline bool + operator<=(const deque<_Tp, _Alloc>& __x, + const deque<_Tp, _Alloc>& __y) + { return !(__y < __x); } + + /// Based on operator< + template + inline bool + operator>=(const deque<_Tp, _Alloc>& __x, + const deque<_Tp, _Alloc>& __y) + { return !(__x < __y); } + + /// See std::deque::swap(). + template + inline void + swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y) + { __x.swap(__y); } + +#undef _GLIBCXX_DEQUE_BUF_SIZE + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _STL_DEQUE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_function.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_function.h new file mode 100644 index 0000000..23529df --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_function.h @@ -0,0 +1,734 @@ +// Functor implementations -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_function.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{functional} + */ + +#ifndef _STL_FUNCTION_H +#define _STL_FUNCTION_H 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // 20.3.1 base classes + /** @defgroup functors Function Objects + * @ingroup utilities + * + * Function objects, or @e functors, are objects with an @c operator() + * defined and accessible. They can be passed as arguments to algorithm + * templates and used in place of a function pointer. Not only is the + * resulting expressiveness of the library increased, but the generated + * code can be more efficient than what you might write by hand. When we + * refer to @a functors, then, generally we include function pointers in + * the description as well. + * + * Often, functors are only created as temporaries passed to algorithm + * calls, rather than being created as named variables. + * + * Two examples taken from the standard itself follow. To perform a + * by-element addition of two vectors @c a and @c b containing @c double, + * and put the result in @c a, use + * \code + * transform (a.begin(), a.end(), b.begin(), a.begin(), plus()); + * \endcode + * To negate every element in @c a, use + * \code + * transform(a.begin(), a.end(), a.begin(), negate()); + * \endcode + * The addition and negation functions will be inlined directly. + * + * The standard functors are derived from structs named @c unary_function + * and @c binary_function. These two classes contain nothing but typedefs, + * to aid in generic (template) programming. If you write your own + * functors, you might consider doing the same. + * + * @{ + */ + /** + * This is one of the @link functors functor base classes@endlink. + */ + template + struct unary_function + { + /// @c argument_type is the type of the argument + typedef _Arg argument_type; + + /// @c result_type is the return type + typedef _Result result_type; + }; + + /** + * This is one of the @link functors functor base classes@endlink. + */ + template + struct binary_function + { + /// @c first_argument_type is the type of the first argument + typedef _Arg1 first_argument_type; + + /// @c second_argument_type is the type of the second argument + typedef _Arg2 second_argument_type; + + /// @c result_type is the return type + typedef _Result result_type; + }; + /** @} */ + + // 20.3.2 arithmetic + /** @defgroup arithmetic_functors Arithmetic Classes + * @ingroup functors + * + * Because basic math often needs to be done during an algorithm, + * the library provides functors for those operations. See the + * documentation for @link functors the base classes@endlink + * for examples of their use. + * + * @{ + */ + /// One of the @link arithmetic_functors math functors@endlink. + template + struct plus : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x + __y; } + }; + + /// One of the @link arithmetic_functors math functors@endlink. + template + struct minus : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x - __y; } + }; + + /// One of the @link arithmetic_functors math functors@endlink. + template + struct multiplies : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x * __y; } + }; + + /// One of the @link arithmetic_functors math functors@endlink. + template + struct divides : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x / __y; } + }; + + /// One of the @link arithmetic_functors math functors@endlink. + template + struct modulus : public binary_function<_Tp, _Tp, _Tp> + { + _Tp + operator()(const _Tp& __x, const _Tp& __y) const + { return __x % __y; } + }; + + /// One of the @link arithmetic_functors math functors@endlink. + template + struct negate : public unary_function<_Tp, _Tp> + { + _Tp + operator()(const _Tp& __x) const + { return -__x; } + }; + /** @} */ + + // 20.3.3 comparisons + /** @defgroup comparison_functors Comparison Classes + * @ingroup functors + * + * The library provides six wrapper functors for all the basic comparisons + * in C++, like @c <. + * + * @{ + */ + /// One of the @link comparison_functors comparison functors@endlink. + template + struct equal_to : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x == __y; } + }; + + /// One of the @link comparison_functors comparison functors@endlink. + template + struct not_equal_to : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x != __y; } + }; + + /// One of the @link comparison_functors comparison functors@endlink. + template + struct greater : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x > __y; } + }; + + /// One of the @link comparison_functors comparison functors@endlink. + template + struct less : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x < __y; } + }; + + /// One of the @link comparison_functors comparison functors@endlink. + template + struct greater_equal : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x >= __y; } + }; + + /// One of the @link comparison_functors comparison functors@endlink. + template + struct less_equal : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x <= __y; } + }; + /** @} */ + + // 20.3.4 logical operations + /** @defgroup logical_functors Boolean Operations Classes + * @ingroup functors + * + * Here are wrapper functors for Boolean operations: @c &&, @c ||, + * and @c !. + * + * @{ + */ + /// One of the @link logical_functors Boolean operations functors@endlink. + template + struct logical_and : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x && __y; } + }; + + /// One of the @link logical_functors Boolean operations functors@endlink. + template + struct logical_or : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __x, const _Tp& __y) const + { return __x || __y; } + }; + + /// One of the @link logical_functors Boolean operations functors@endlink. + template + struct logical_not : public unary_function<_Tp, bool> + { + bool + operator()(const _Tp& __x) const + { return !__x; } + }; + /** @} */ + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 660. Missing Bitwise Operations. + 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; } + }; + + // 20.3.5 negators + /** @defgroup negators Negators + * @ingroup functors + * + * The functions @c not1 and @c not2 each take a predicate functor + * and return an instance of @c unary_negate or + * @c binary_negate, respectively. These classes are functors whose + * @c operator() performs the stored predicate function and then returns + * the negation of the result. + * + * For example, given a vector of integers and a trivial predicate, + * \code + * struct IntGreaterThanThree + * : public std::unary_function + * { + * bool operator() (int x) { return x > 3; } + * }; + * + * std::find_if (v.begin(), v.end(), not1(IntGreaterThanThree())); + * \endcode + * The call to @c find_if will locate the first index (i) of @c v for which + * !(v[i] > 3) is true. + * + * The not1/unary_negate combination works on predicates taking a single + * argument. The not2/binary_negate combination works on predicates which + * take two arguments. + * + * @{ + */ + /// One of the @link negators negation functors@endlink. + template + 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); } + }; + + /// One of the @link negators negation functors@endlink. + template + inline unary_negate<_Predicate> + not1(const _Predicate& __pred) + { return unary_negate<_Predicate>(__pred); } + + /// One of the @link negators negation functors@endlink. + 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); } + }; + + /// One of the @link negators negation functors@endlink. + template + inline binary_negate<_Predicate> + not2(const _Predicate& __pred) + { return binary_negate<_Predicate>(__pred); } + /** @} */ + + // 20.3.7 adaptors pointers functions + /** @defgroup pointer_adaptors Adaptors for pointers to functions + * @ingroup functors + * + * The advantage of function objects over pointers to functions is that + * the objects in the standard library declare nested typedefs describing + * their argument and result types with uniform names (e.g., @c result_type + * from the base classes @c unary_function and @c binary_function). + * Sometimes those typedefs are required, not just optional. + * + * Adaptors are provided to turn pointers to unary (single-argument) and + * binary (double-argument) functions into function objects. The + * long-winded functor @c pointer_to_unary_function is constructed with a + * function pointer @c f, and its @c operator() called with argument @c x + * returns @c f(x). The functor @c pointer_to_binary_function does the same + * thing, but with a double-argument @c f and @c operator(). + * + * The function @c ptr_fun takes a pointer-to-function @c f and constructs + * an instance of the appropriate functor. + * + * @{ + */ + /// One of the @link pointer_adaptors adaptors for function pointers@endlink. + template + class pointer_to_unary_function : public unary_function<_Arg, _Result> + { + protected: + _Result (*_M_ptr)(_Arg); + + public: + pointer_to_unary_function() { } + + explicit + pointer_to_unary_function(_Result (*__x)(_Arg)) + : _M_ptr(__x) { } + + _Result + operator()(_Arg __x) const + { return _M_ptr(__x); } + }; + + /// One of the @link pointer_adaptors adaptors for function pointers@endlink. + template + inline pointer_to_unary_function<_Arg, _Result> + ptr_fun(_Result (*__x)(_Arg)) + { return pointer_to_unary_function<_Arg, _Result>(__x); } + + /// One of the @link pointer_adaptors adaptors for function pointers@endlink. + template + class pointer_to_binary_function + : public binary_function<_Arg1, _Arg2, _Result> + { + protected: + _Result (*_M_ptr)(_Arg1, _Arg2); + + public: + pointer_to_binary_function() { } + + explicit + pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) + : _M_ptr(__x) { } + + _Result + operator()(_Arg1 __x, _Arg2 __y) const + { return _M_ptr(__x, __y); } + }; + + /// One of the @link pointer_adaptors adaptors for function pointers@endlink. + template + 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; } + +#if __cplusplus >= 201103L + 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; } +#endif + }; + + 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; } + }; + + // 20.3.8 adaptors pointers members + /** @defgroup memory_adaptors Adaptors for pointers to members + * @ingroup functors + * + * There are a total of 8 = 2^3 function objects in this family. + * (1) Member functions taking no arguments vs member functions taking + * one argument. + * (2) Call through pointer vs call through reference. + * (3) Const vs non-const member function. + * + * All of this complexity is in the function objects themselves. You can + * ignore it by using the helper function mem_fun and mem_fun_ref, + * which create whichever type of adaptor is appropriate. + * + * @{ + */ + /// One of the @link memory_adaptors adaptors for member + /// pointers@endlink. + template + class mem_fun_t : public unary_function<_Tp*, _Ret> + { + public: + explicit + mem_fun_t(_Ret (_Tp::*__pf)()) + : _M_f(__pf) { } + + _Ret + operator()(_Tp* __p) const + { return (__p->*_M_f)(); } + + private: + _Ret (_Tp::*_M_f)(); + }; + + /// One of the @link memory_adaptors adaptors for member + /// pointers@endlink. + template + 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; + }; + + /// One of the @link memory_adaptors adaptors for member + /// pointers@endlink. + 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)(); + }; + + /// One of the @link memory_adaptors adaptors for member + /// pointers@endlink. + 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; + }; + + /// One of the @link memory_adaptors adaptors for member + /// pointers@endlink. + 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); + }; + + /// One of the @link memory_adaptors adaptors for member + /// pointers@endlink. + 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; + }; + + /// One of the @link memory_adaptors adaptors for member + /// pointers@endlink. + 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); + }; + + /// One of the @link memory_adaptors adaptors for member + /// pointers@endlink. + 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; + }; + + // Mem_fun adaptor helper functions. There are only two: + // mem_fun and mem_fun_ref. + 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); } + + /** @} */ + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED +# include +#endif + +#endif /* _STL_FUNCTION_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_heap.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_heap.h new file mode 100644 index 0000000..807a8cf --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_heap.h @@ -0,0 +1,592 @@ +// Heap implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * Copyright (c) 1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_heap.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{queue} + */ + +#ifndef _STL_HEAP_H +#define _STL_HEAP_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup heap_algorithms Heap + * @ingroup sorting_algorithms + */ + + 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; + } + + // __is_heap, a predicate testing whether or not a range is a heap. + // This function is an extension, not part of the C++ standard. + 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)); } + + // Heap-manipulation functions: push_heap, pop_heap, make_heap, sort_heap, + // + is_heap and is_heap_until in C++0x. + + 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) = _GLIBCXX_MOVE(*(__first + __parent)); + __holeIndex = __parent; + __parent = (__holeIndex - 1) / 2; + } + *(__first + __holeIndex) = _GLIBCXX_MOVE(__value); + } + + /** + * @brief Push an element onto a heap. + * @param __first Start of heap. + * @param __last End of heap + element. + * @ingroup heap_algorithms + * + * This operation pushes the element at last-1 onto the valid heap + * over the range [__first,__last-1). After completion, + * [__first,__last) is a valid heap. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_heap(__first, __last - 1); + + _ValueType __value = _GLIBCXX_MOVE(*(__last - 1)); + std::__push_heap(__first, _DistanceType((__last - __first) - 1), + _DistanceType(0), _GLIBCXX_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) = _GLIBCXX_MOVE(*(__first + __parent)); + __holeIndex = __parent; + __parent = (__holeIndex - 1) / 2; + } + *(__first + __holeIndex) = _GLIBCXX_MOVE(__value); + } + + /** + * @brief Push an element onto a heap using comparison functor. + * @param __first Start of heap. + * @param __last End of heap + element. + * @param __comp Comparison functor. + * @ingroup heap_algorithms + * + * This operation pushes the element at __last-1 onto the valid + * heap over the range [__first,__last-1). After completion, + * [__first,__last) is a valid heap. Compare operations are + * performed using comp. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_heap_pred(__first, __last - 1, __comp); + + _ValueType __value = _GLIBCXX_MOVE(*(__last - 1)); + std::__push_heap(__first, _DistanceType((__last - __first) - 1), + _DistanceType(0), _GLIBCXX_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) = _GLIBCXX_MOVE(*(__first + __secondChild)); + __holeIndex = __secondChild; + } + if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) + { + __secondChild = 2 * (__secondChild + 1); + *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + + (__secondChild - 1))); + __holeIndex = __secondChild - 1; + } + std::__push_heap(__first, __holeIndex, __topIndex, + _GLIBCXX_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 = _GLIBCXX_MOVE(*__result); + *__result = _GLIBCXX_MOVE(*__first); + std::__adjust_heap(__first, _DistanceType(0), + _DistanceType(__last - __first), + _GLIBCXX_MOVE(__value)); + } + + /** + * @brief Pop an element off a heap. + * @param __first Start of heap. + * @param __last End of heap. + * @pre [__first, __last) is a valid, non-empty range. + * @ingroup heap_algorithms + * + * This operation pops the top of the heap. The elements __first + * and __last-1 are swapped and [__first,__last-1) is made into a + * heap. + */ + template + inline void + pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) + __glibcxx_requires_non_empty_range(__first, __last); + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_heap(__first, __last); + + 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) = _GLIBCXX_MOVE(*(__first + __secondChild)); + __holeIndex = __secondChild; + } + if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) + { + __secondChild = 2 * (__secondChild + 1); + *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + + (__secondChild - 1))); + __holeIndex = __secondChild - 1; + } + std::__push_heap(__first, __holeIndex, __topIndex, + _GLIBCXX_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 = _GLIBCXX_MOVE(*__result); + *__result = _GLIBCXX_MOVE(*__first); + std::__adjust_heap(__first, _DistanceType(0), + _DistanceType(__last - __first), + _GLIBCXX_MOVE(__value), __comp); + } + + /** + * @brief Pop an element off a heap using comparison functor. + * @param __first Start of heap. + * @param __last End of heap. + * @param __comp Comparison functor to use. + * @ingroup heap_algorithms + * + * This operation pops the top of the heap. The elements __first + * and __last-1 are swapped and [__first,__last-1) is made into a + * heap. Comparisons are made using comp. + */ + template + inline void + pop_heap(_RandomAccessIterator __first, + _RandomAccessIterator __last, _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_non_empty_range(__first, __last); + __glibcxx_requires_heap_pred(__first, __last, __comp); + + if (__last - __first > 1) + { + --__last; + std::__pop_heap(__first, __last, __last, __comp); + } + } + + /** + * @brief Construct a heap over a range. + * @param __first Start of heap. + * @param __last End of heap. + * @ingroup heap_algorithms + * + * This operation makes the elements in [__first,__last) into a heap. + */ + template + void + make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _ValueType; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type + _DistanceType; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) + __glibcxx_requires_valid_range(__first, __last); + + if (__last - __first < 2) + return; + + const _DistanceType __len = __last - __first; + _DistanceType __parent = (__len - 2) / 2; + while (true) + { + _ValueType __value = _GLIBCXX_MOVE(*(__first + __parent)); + std::__adjust_heap(__first, __parent, __len, _GLIBCXX_MOVE(__value)); + if (__parent == 0) + return; + __parent--; + } + } + + /** + * @brief Construct a heap over a range using comparison functor. + * @param __first Start of heap. + * @param __last End of heap. + * @param __comp Comparison functor to use. + * @ingroup heap_algorithms + * + * This operation makes the elements in [__first,__last) into a heap. + * Comparisons are made using __comp. + */ + 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; + + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + + if (__last - __first < 2) + return; + + const _DistanceType __len = __last - __first; + _DistanceType __parent = (__len - 2) / 2; + while (true) + { + _ValueType __value = _GLIBCXX_MOVE(*(__first + __parent)); + std::__adjust_heap(__first, __parent, __len, _GLIBCXX_MOVE(__value), + __comp); + if (__parent == 0) + return; + __parent--; + } + } + + /** + * @brief Sort a heap. + * @param __first Start of heap. + * @param __last End of heap. + * @ingroup heap_algorithms + * + * This operation sorts the valid heap in the range [__first,__last). + */ + template + void + sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_RandomAccessIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_heap(__first, __last); + + while (__last - __first > 1) + { + --__last; + std::__pop_heap(__first, __last, __last); + } + } + + /** + * @brief Sort a heap using comparison functor. + * @param __first Start of heap. + * @param __last End of heap. + * @param __comp Comparison functor to use. + * @ingroup heap_algorithms + * + * This operation sorts the valid heap in the range [__first,__last). + * Comparisons are made using __comp. + */ + template + void + sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_heap_pred(__first, __last, __comp); + + while (__last - __first > 1) + { + --__last; + std::__pop_heap(__first, __last, __last, __comp); + } + } + +#if __cplusplus >= 201103L + /** + * @brief Search the end of a heap. + * @param __first Start of range. + * @param __last End of range. + * @return An iterator pointing to the first element not in the heap. + * @ingroup heap_algorithms + * + * This operation returns the last iterator i in [__first, __last) for which + * the range [__first, i) is a heap. + */ + template + inline _RandomAccessIterator + is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_RandomAccessIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return __first + std::__is_heap_until(__first, std::distance(__first, + __last)); + } + + /** + * @brief Search the end of a heap using comparison functor. + * @param __first Start of range. + * @param __last End of range. + * @param __comp Comparison functor to use. + * @return An iterator pointing to the first element not in the heap. + * @ingroup heap_algorithms + * + * This operation returns the last iterator i in [__first, __last) for which + * the range [__first, i) is a heap. Comparisons are made using __comp. + */ + template + inline _RandomAccessIterator + is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + + return __first + std::__is_heap_until(__first, std::distance(__first, + __last), + __comp); + } + + /** + * @brief Determines whether a range is a heap. + * @param __first Start of range. + * @param __last End of range. + * @return True if range is a heap, false otherwise. + * @ingroup heap_algorithms + */ + template + inline bool + is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { return std::is_heap_until(__first, __last) == __last; } + + /** + * @brief Determines whether a range is a heap using comparison functor. + * @param __first Start of range. + * @param __last End of range. + * @param __comp Comparison functor to use. + * @return True if range is a heap, false otherwise. + * @ingroup heap_algorithms + */ + template + inline bool + is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Compare __comp) + { return std::is_heap_until(__first, __last, __comp) == __last; } +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _STL_HEAP_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator.h new file mode 100644 index 0000000..214f37f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator.h @@ -0,0 +1,1148 @@ +// Iterators -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_iterator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iterator} + * + * This file implements reverse_iterator, back_insert_iterator, + * front_insert_iterator, insert_iterator, __normal_iterator, and their + * supporting functions and overloaded operators. + */ + +#ifndef _STL_ITERATOR_H +#define _STL_ITERATOR_H 1 + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup iterators + * @{ + */ + + // 24.4.1 Reverse iterators + /** + * Bidirectional and random access iterators have corresponding reverse + * %iterator adaptors that iterate through the data structure in the + * opposite direction. They have the same signatures as the corresponding + * iterators. The fundamental relation between a reverse %iterator and its + * corresponding %iterator @c i is established by the identity: + * @code + * &*(reverse_iterator(i)) == &*(i - 1) + * @endcode + * + * This mapping is dictated by the fact that while there is always a + * pointer past the end of an array, there might not be a valid pointer + * before the beginning of an array. [24.4.1]/1,2 + * + * Reverse iterators can be tricky and surprising at first. Their + * semantics make sense, however, and the trickiness is a side effect of + * the requirement that the iterators must be safe. + */ + template + class reverse_iterator + : public iterator::iterator_category, + typename iterator_traits<_Iterator>::value_type, + typename iterator_traits<_Iterator>::difference_type, + typename iterator_traits<_Iterator>::pointer, + typename iterator_traits<_Iterator>::reference> + { + protected: + _Iterator current; + + typedef iterator_traits<_Iterator> __traits_type; + + public: + typedef _Iterator iterator_type; + typedef typename __traits_type::difference_type difference_type; + typedef typename __traits_type::pointer pointer; + typedef typename __traits_type::reference reference; + + /** + * The default constructor value-initializes member @p current. + * If it is a pointer, that means it is zero-initialized. + */ + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 235 No specification of default ctor for reverse_iterator + reverse_iterator() : current() { } + + /** + * This %iterator will move in the opposite direction that @p x does. + */ + explicit + reverse_iterator(iterator_type __x) : current(__x) { } + + /** + * The copy constructor is normal. + */ + reverse_iterator(const reverse_iterator& __x) + : current(__x.current) { } + + /** + * A %reverse_iterator across other types can be copied if the + * underlying %iterator can be converted to the type of @c current. + */ + template + reverse_iterator(const reverse_iterator<_Iter>& __x) + : current(__x.base()) { } + + /** + * @return @c current, the %iterator used for underlying work. + */ + iterator_type + base() const + { return current; } + + /** + * @return A reference to the value at @c --current + * + * This requires that @c --current is dereferenceable. + * + * @warning This implementation requires that for an iterator of the + * underlying iterator type, @c x, a reference obtained by + * @c *x remains valid after @c x has been modified or + * destroyed. This is a bug: http://gcc.gnu.org/PR51823 + */ + reference + operator*() const + { + _Iterator __tmp = current; + return *--__tmp; + } + + /** + * @return A pointer to the value at @c --current + * + * This requires that @c --current is dereferenceable. + */ + pointer + operator->() const + { return &(operator*()); } + + /** + * @return @c *this + * + * Decrements the underlying iterator. + */ + reverse_iterator& + operator++() + { + --current; + return *this; + } + + /** + * @return The original value of @c *this + * + * Decrements the underlying iterator. + */ + reverse_iterator + operator++(int) + { + reverse_iterator __tmp = *this; + --current; + return __tmp; + } + + /** + * @return @c *this + * + * Increments the underlying iterator. + */ + reverse_iterator& + operator--() + { + ++current; + return *this; + } + + /** + * @return A reverse_iterator with the previous value of @c *this + * + * Increments the underlying iterator. + */ + reverse_iterator + operator--(int) + { + reverse_iterator __tmp = *this; + ++current; + return __tmp; + } + + /** + * @return A reverse_iterator that refers to @c current - @a __n + * + * The underlying iterator must be a Random Access Iterator. + */ + reverse_iterator + operator+(difference_type __n) const + { return reverse_iterator(current - __n); } + + /** + * @return *this + * + * Moves the underlying iterator backwards @a __n steps. + * The underlying iterator must be a Random Access Iterator. + */ + reverse_iterator& + operator+=(difference_type __n) + { + current -= __n; + return *this; + } + + /** + * @return A reverse_iterator that refers to @c current - @a __n + * + * The underlying iterator must be a Random Access Iterator. + */ + reverse_iterator + operator-(difference_type __n) const + { return reverse_iterator(current + __n); } + + /** + * @return *this + * + * Moves the underlying iterator forwards @a __n steps. + * The underlying iterator must be a Random Access Iterator. + */ + reverse_iterator& + operator-=(difference_type __n) + { + current += __n; + return *this; + } + + /** + * @return The value at @c current - @a __n - 1 + * + * The underlying iterator must be a Random Access Iterator. + */ + reference + operator[](difference_type __n) const + { return *(*this + __n); } + }; + + //@{ + /** + * @param __x A %reverse_iterator. + * @param __y A %reverse_iterator. + * @return A simple bool. + * + * Reverse iterators forward many operations to their underlying base() + * iterators. Others are implemented in terms of one another. + * + */ + template + inline 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); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 280. Comparison of reverse_iterator to const reverse_iterator. + 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 +#if __cplusplus >= 201103L + // DR 685. + inline auto + operator-(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + -> decltype(__y.base() - __x.base()) +#else + inline typename reverse_iterator<_IteratorL>::difference_type + operator-(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) +#endif + { return __y.base() - __x.base(); } + //@} + + // 24.4.2.2.1 back_insert_iterator + /** + * @brief Turns assignment into insertion. + * + * These are output iterators, constructed from a container-of-T. + * Assigning a T to the iterator appends it to the container using + * push_back. + * + * Tip: Using the back_inserter function to create these iterators can + * save typing. + */ + template + class back_insert_iterator + : public iterator + { + protected: + _Container* container; + + public: + /// A nested typedef for the type of whatever container you used. + typedef _Container container_type; + + /// The only way to create this %iterator is with a container. + explicit + back_insert_iterator(_Container& __x) : container(&__x) { } + + /** + * @param __value An instance of whatever type + * container_type::const_reference is; presumably a + * reference-to-const T for container. + * @return This %iterator, for chained operations. + * + * This kind of %iterator doesn't really have a @a position in the + * container (you can think of the position as being permanently at + * the end, if you like). Assigning a value to the %iterator will + * always append the value to the end of the container. + */ +#if __cplusplus < 201103L + back_insert_iterator& + operator=(typename _Container::const_reference __value) + { + container->push_back(__value); + return *this; + } +#else + back_insert_iterator& + operator=(const typename _Container::value_type& __value) + { + container->push_back(__value); + return *this; + } + + back_insert_iterator& + operator=(typename _Container::value_type&& __value) + { + container->push_back(std::move(__value)); + return *this; + } +#endif + + /// Simply returns *this. + back_insert_iterator& + operator*() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + back_insert_iterator& + operator++() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + back_insert_iterator + operator++(int) + { return *this; } + }; + + /** + * @param __x A container of arbitrary type. + * @return An instance of back_insert_iterator working on @p __x. + * + * This wrapper function helps in creating back_insert_iterator instances. + * Typing the name of the %iterator requires knowing the precise full + * type of the container, which can be tedious and impedes generic + * programming. Using this function lets you take advantage of automatic + * template parameter deduction, making the compiler match the correct + * types for you. + */ + template + inline back_insert_iterator<_Container> + back_inserter(_Container& __x) + { return back_insert_iterator<_Container>(__x); } + + /** + * @brief Turns assignment into insertion. + * + * These are output iterators, constructed from a container-of-T. + * Assigning a T to the iterator prepends it to the container using + * push_front. + * + * Tip: Using the front_inserter function to create these iterators can + * save typing. + */ + template + class front_insert_iterator + : public iterator + { + protected: + _Container* container; + + public: + /// A nested typedef for the type of whatever container you used. + typedef _Container container_type; + + /// The only way to create this %iterator is with a container. + explicit front_insert_iterator(_Container& __x) : container(&__x) { } + + /** + * @param __value An instance of whatever type + * container_type::const_reference is; presumably a + * reference-to-const T for container. + * @return This %iterator, for chained operations. + * + * This kind of %iterator doesn't really have a @a position in the + * container (you can think of the position as being permanently at + * the front, if you like). Assigning a value to the %iterator will + * always prepend the value to the front of the container. + */ +#if __cplusplus < 201103L + front_insert_iterator& + operator=(typename _Container::const_reference __value) + { + container->push_front(__value); + return *this; + } +#else + front_insert_iterator& + operator=(const typename _Container::value_type& __value) + { + container->push_front(__value); + return *this; + } + + front_insert_iterator& + operator=(typename _Container::value_type&& __value) + { + container->push_front(std::move(__value)); + return *this; + } +#endif + + /// Simply returns *this. + front_insert_iterator& + operator*() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + front_insert_iterator& + operator++() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + front_insert_iterator + operator++(int) + { return *this; } + }; + + /** + * @param __x A container of arbitrary type. + * @return An instance of front_insert_iterator working on @p x. + * + * This wrapper function helps in creating front_insert_iterator instances. + * Typing the name of the %iterator requires knowing the precise full + * type of the container, which can be tedious and impedes generic + * programming. Using this function lets you take advantage of automatic + * template parameter deduction, making the compiler match the correct + * types for you. + */ + template + inline front_insert_iterator<_Container> + front_inserter(_Container& __x) + { return front_insert_iterator<_Container>(__x); } + + /** + * @brief Turns assignment into insertion. + * + * These are output iterators, constructed from a container-of-T. + * Assigning a T to the iterator inserts it in the container at the + * %iterator's position, rather than overwriting the value at that + * position. + * + * (Sequences will actually insert a @e copy of the value before the + * %iterator's position.) + * + * Tip: Using the inserter function to create these iterators can + * save typing. + */ + template + class insert_iterator + : public iterator + { + protected: + _Container* container; + typename _Container::iterator iter; + + public: + /// A nested typedef for the type of whatever container you used. + typedef _Container container_type; + + /** + * The only way to create this %iterator is with a container and an + * initial position (a normal %iterator into the container). + */ + insert_iterator(_Container& __x, typename _Container::iterator __i) + : container(&__x), iter(__i) {} + + /** + * @param __value An instance of whatever type + * container_type::const_reference is; presumably a + * reference-to-const T for container. + * @return This %iterator, for chained operations. + * + * This kind of %iterator maintains its own position in the + * container. Assigning a value to the %iterator will insert the + * value into the container at the place before the %iterator. + * + * The position is maintained such that subsequent assignments will + * insert values immediately after one another. For example, + * @code + * // vector v contains A and Z + * + * insert_iterator i (v, ++v.begin()); + * i = 1; + * i = 2; + * i = 3; + * + * // vector v contains A, 1, 2, 3, and Z + * @endcode + */ +#if __cplusplus < 201103L + insert_iterator& + operator=(typename _Container::const_reference __value) + { + iter = container->insert(iter, __value); + ++iter; + return *this; + } +#else + insert_iterator& + operator=(const typename _Container::value_type& __value) + { + iter = container->insert(iter, __value); + ++iter; + return *this; + } + + insert_iterator& + operator=(typename _Container::value_type&& __value) + { + iter = container->insert(iter, std::move(__value)); + ++iter; + return *this; + } +#endif + + /// Simply returns *this. + insert_iterator& + operator*() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + insert_iterator& + operator++() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + insert_iterator& + operator++(int) + { return *this; } + }; + + /** + * @param __x A container of arbitrary type. + * @return An instance of insert_iterator working on @p __x. + * + * This wrapper function helps in creating insert_iterator instances. + * Typing the name of the %iterator requires knowing the precise full + * type of the container, which can be tedious and impedes generic + * programming. Using this function lets you take advantage of automatic + * template parameter deduction, making the compiler match the correct + * types for you. + */ + template + inline insert_iterator<_Container> + inserter(_Container& __x, _Iterator __i) + { + return insert_iterator<_Container>(__x, + typename _Container::iterator(__i)); + } + + // @} group iterators + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // This iterator adapter is @a normal in the sense that it does not + // change the semantics of any of the operators of its iterator + // parameter. Its primary purpose is to convert an iterator that is + // not a class, e.g. a pointer, into an iterator that is a class. + // The _Container parameter exists solely so that different containers + // using this template can instantiate different types, even if the + // _Iterator parameter is the same. + using std::iterator_traits; + using std::iterator; + template + class __normal_iterator + { + protected: + _Iterator _M_current; + + typedef iterator_traits<_Iterator> __traits_type; + + public: + typedef _Iterator iterator_type; + typedef typename __traits_type::iterator_category iterator_category; + typedef typename __traits_type::value_type value_type; + typedef typename __traits_type::difference_type difference_type; + typedef typename __traits_type::reference reference; + typedef typename __traits_type::pointer pointer; + + _GLIBCXX_CONSTEXPR __normal_iterator() : _M_current(_Iterator()) { } + + explicit + __normal_iterator(const _Iterator& __i) : _M_current(__i) { } + + // Allow iterator to const_iterator conversion + template + __normal_iterator(const __normal_iterator<_Iter, + typename __enable_if< + (std::__are_same<_Iter, typename _Container::pointer>::__value), + _Container>::__type>& __i) + : _M_current(__i.base()) { } + + // Forward iterator requirements + 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++); } + + // Bidirectional iterator requirements + __normal_iterator& + operator--() + { + --_M_current; + return *this; + } + + __normal_iterator + operator--(int) + { return __normal_iterator(_M_current--); } + + // Random access iterator requirements + 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; } + }; + + // Note: In what follows, the left- and right-hand-side iterators are + // allowed to vary in types (conceptually in cv-qualification) so that + // comparison between cv-qualified and non-cv-qualified iterators be + // valid. However, the greedy and unfriendly operators in std::rel_ops + // will make overload resolution ambiguous (when in scope) if we don't + // provide overloads whose operands are of the same type. Can someone + // remind me what generic programming is about? -- Gaby + + // Forward iterator requirements + template + inline bool + operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + { 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(); } + + // Random access iterator requirements + 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(); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // According to the resolution of DR179 not only the various comparison + // operators but also operator- must accept mixed iterator/const_iterator + // parameters. + template +#if __cplusplus >= 201103L + // DR 685. + inline auto + operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + -> decltype(__lhs.base() - __rhs.base()) +#else + inline typename __normal_iterator<_IteratorL, _Container>::difference_type + operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) +#endif + { return __lhs.base() - __rhs.base(); } + + template + inline typename __normal_iterator<_Iterator, _Container>::difference_type + operator-(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + { 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); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if __cplusplus >= 201103L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup iterators + * @{ + */ + + // 24.4.3 Move iterators + /** + * Class template move_iterator is an iterator adapter with the same + * behavior as the underlying iterator except that its dereference + * operator implicitly converts the value returned by the underlying + * iterator's dereference operator to an rvalue reference. Some + * generic algorithms can be called with move iterators to replace + * copying with moving. + */ + template + class move_iterator + { + protected: + _Iterator _M_current; + + typedef iterator_traits<_Iterator> __traits_type; + + public: + typedef _Iterator iterator_type; + typedef typename __traits_type::iterator_category iterator_category; + typedef typename __traits_type::value_type value_type; + typedef typename __traits_type::difference_type difference_type; + // NB: DR 680. + typedef _Iterator pointer; + 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]); } + }; + + // Note: See __normal_iterator operators note from Gaby to understand + // why there are always 2 versions for most of the move_iterator + // operators. + template + inline 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); } + + // DR 685. + 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); } + + // @} group iterators + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) std::make_move_iterator(_Iter) +#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) \ + std::__make_move_if_noexcept_iterator(_Iter) +#else +#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) (_Iter) +#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) (_Iter) +#endif // C++11 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator_base_funcs.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator_base_funcs.h new file mode 100644 index 0000000..2571e27 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator_base_funcs.h @@ -0,0 +1,205 @@ +// Functions used by iterators -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_iterator_base_funcs.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iterator} + * + * This file contains all of the general iterator-related utility + * functions, such as distance() and advance(). + */ + +#ifndef _STL_ITERATOR_BASE_FUNCS_H +#define _STL_ITERATOR_BASE_FUNCS_H 1 + +#pragma GCC system_header + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + inline typename iterator_traits<_InputIterator>::difference_type + __distance(_InputIterator __first, _InputIterator __last, + input_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + + typename iterator_traits<_InputIterator>::difference_type __n = 0; + while (__first != __last) + { + ++__first; + ++__n; + } + return __n; + } + + template + inline typename iterator_traits<_RandomAccessIterator>::difference_type + __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, + random_access_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + return __last - __first; + } + + /** + * @brief A generalization of pointer arithmetic. + * @param __first An input iterator. + * @param __last An input iterator. + * @return The distance between them. + * + * Returns @c n such that __first + n == __last. This requires + * that @p __last must be reachable from @p __first. Note that @c + * n may be negative. + * + * For random access iterators, this uses their @c + and @c - operations + * and are constant time. For other %iterator classes they are linear time. + */ + template + inline typename iterator_traits<_InputIterator>::difference_type + distance(_InputIterator __first, _InputIterator __last) + { + // concept requirements -- taken care of in __distance + return std::__distance(__first, __last, + std::__iterator_category(__first)); + } + + template + inline void + __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + _GLIBCXX_DEBUG_ASSERT(__n >= 0); + while (__n--) + ++__i; + } + + template + inline void + __advance(_BidirectionalIterator& __i, _Distance __n, + bidirectional_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_BidirectionalIteratorConcept< + _BidirectionalIterator>) + if (__n > 0) + while (__n--) + ++__i; + else + while (__n++) + --__i; + } + + template + inline void + __advance(_RandomAccessIterator& __i, _Distance __n, + random_access_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __i += __n; + } + + /** + * @brief A generalization of pointer arithmetic. + * @param __i An input iterator. + * @param __n The @a delta by which to change @p __i. + * @return Nothing. + * + * This increments @p i by @p n. For bidirectional and random access + * iterators, @p __n may be negative, in which case @p __i is decremented. + * + * For random access iterators, this uses their @c + and @c - operations + * and are constant time. For other %iterator classes they are linear time. + */ + template + inline void + advance(_InputIterator& __i, _Distance __n) + { + // concept requirements -- taken care of in __advance + typename iterator_traits<_InputIterator>::difference_type __d = __n; + std::__advance(__i, __d, std::__iterator_category(__i)); + } + +#if __cplusplus >= 201103L + + template + 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; + } + +#endif // C++11 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _STL_ITERATOR_BASE_FUNCS_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator_base_types.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator_base_types.h new file mode 100644 index 0000000..c6e5f7b --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_iterator_base_types.h @@ -0,0 +1,236 @@ +// Types used in iterator implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_iterator_base_types.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iterator} + * + * This file contains all of the general iterator-related utility types, + * such as iterator_traits and struct iterator. + */ + +#ifndef _STL_ITERATOR_BASE_TYPES_H +#define _STL_ITERATOR_BASE_TYPES_H 1 + +#pragma GCC system_header + +#include + +#if __cplusplus >= 201103L +# include // For _GLIBCXX_HAS_NESTED_TYPE, is_convertible +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup iterators Iterators + * Abstractions for uniform iterating through various underlying types. + */ + //@{ + + /** + * @defgroup iterator_tags Iterator Tags + * These are empty types, used to distinguish different iterators. The + * distinction is not made by what they contain, but simply by what they + * are. Different underlying algorithms can then be used based on the + * different operations supported by different iterator types. + */ + //@{ + /// Marking input iterators. + struct input_iterator_tag { }; + + /// Marking output iterators. + struct output_iterator_tag { }; + + /// Forward iterators support a superset of input iterator operations. + struct forward_iterator_tag : public input_iterator_tag { }; + + /// Bidirectional iterators support a superset of forward iterator + /// operations. + struct bidirectional_iterator_tag : public forward_iterator_tag { }; + + /// Random-access iterators support a superset of bidirectional + /// iterator operations. + struct random_access_iterator_tag : public bidirectional_iterator_tag { }; + //@} + + /** + * @brief Common %iterator class. + * + * This class does nothing but define nested typedefs. %Iterator classes + * can inherit from this class to save some work. The typedefs are then + * used in specializations and overloading. + * + * In particular, there are no default implementations of requirements + * such as @c operator++ and the like. (How could there be?) + */ + template + struct iterator + { + /// One of the @link iterator_tags tag types@endlink. + typedef _Category iterator_category; + /// The type "pointed to" by the iterator. + typedef _Tp value_type; + /// Distance between iterators is represented as this type. + typedef _Distance difference_type; + /// This type represents a pointer-to-value_type. + typedef _Pointer pointer; + /// This type represents a reference-to-value_type. + typedef _Reference reference; + }; + + /** + * @brief Traits class for iterators. + * + * This class does nothing but define nested typedefs. The general + * version simply @a forwards the nested typedefs from the Iterator + * argument. Specialized versions for pointers and pointers-to-const + * provide tighter, more correct semantics. + */ +#if __cplusplus >= 201103L + +_GLIBCXX_HAS_NESTED_TYPE(iterator_category) + + 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> { }; +#else + template + struct iterator_traits + { + typedef typename _Iterator::iterator_category iterator_category; + typedef typename _Iterator::value_type value_type; + typedef typename _Iterator::difference_type difference_type; + typedef typename _Iterator::pointer pointer; + typedef typename _Iterator::reference reference; + }; +#endif + + /// Partial specialization for pointer types. + 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; + }; + + /// Partial specialization for const pointer types. + 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; + }; + + /** + * This function is not a part of the C++ standard but is syntactic + * sugar for internal library use only. + */ + template + inline typename iterator_traits<_Iter>::iterator_category + __iterator_category(const _Iter&) + { return typename iterator_traits<_Iter>::iterator_category(); } + + //@} + + // If _Iterator has a base returns it otherwise _Iterator is returned + // untouched + 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(); } + }; + +#if __cplusplus >= 201103L + template + using _RequireInputIter = typename + enable_if::iterator_category, + input_iterator_tag>::value>::type; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _STL_ITERATOR_BASE_TYPES_H */ + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_list.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_list.h new file mode 100644 index 0000000..596760c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_list.h @@ -0,0 +1,1668 @@ +// List implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_list.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{list} + */ + +#ifndef _STL_LIST_H +#define _STL_LIST_H 1 + +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ + namespace __detail + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Supporting structures are split into common and templated + // types; the latter publicly inherits from the former in an + // effort to reduce code duplication. This results in some + // "needless" static_cast'ing later on, but it's all safe + // downcasting. + + /// Common part of a node in the %list. + 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) _GLIBCXX_USE_NOEXCEPT; + + void + _M_transfer(_List_node_base* const __first, + _List_node_base* const __last) _GLIBCXX_USE_NOEXCEPT; + + void + _M_reverse() _GLIBCXX_USE_NOEXCEPT; + + void + _M_hook(_List_node_base* const __position) _GLIBCXX_USE_NOEXCEPT; + + void + _M_unhook() _GLIBCXX_USE_NOEXCEPT; + }; + + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace detail + +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /// An actual node in the %list. + template + struct _List_node : public __detail::_List_node_base + { + ///< User's data. + _Tp _M_data; + +#if __cplusplus >= 201103L + template + _List_node(_Args&&... __args) + : __detail::_List_node_base(), _M_data(std::forward<_Args>(__args)...) + { } +#endif + }; + + /** + * @brief A list::iterator. + * + * All the functions are op overloads. + */ + 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) { } + + // Must downcast from _List_node_base to _List_node to get to _M_data. + 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; } + + // The only member points to the %list element. + __detail::_List_node_base* _M_node; + }; + + /** + * @brief A list::const_iterator. + * + * All the functions are op overloads. + */ + 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) { } + + // Must downcast from List_node_base to _List_node to get to + // _M_data. + 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; } + + // The only member points to the %list element. + 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; } + + + /// See bits/stl_deque.h's _Deque_base for an explanation. + template + class _List_base + { + protected: + // NOTA BENE + // The stored instance is not actually of "allocator_type"'s + // type. Instead we rebind the type to + // Allocator>, which according to [20.1.5]/4 + // should probably be the same. List_node is not the same + // size as Tp (it's two pointers larger), and specializations on + // Tp may go unused because List_node is being bound + // instead. + // + // We put this to the test in the constructors and in + // get_allocator, where we use conversions between + // allocator_type and _Node_alloc_type. The conversion is + // required by table 32 in [20.1.5]. + 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() + { } + +#if __cplusplus >= 201103L + _List_impl(_Node_alloc_type&& __a) + : _Node_alloc_type(std::move(__a)), _M_node() + { } +#endif + }; + + _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() _GLIBCXX_NOEXCEPT + { return *static_cast<_Node_alloc_type*>(&_M_impl); } + + const _Node_alloc_type& + _M_get_Node_allocator() const _GLIBCXX_NOEXCEPT + { return *static_cast(&_M_impl); } + + _Tp_alloc_type + _M_get_Tp_allocator() const _GLIBCXX_NOEXCEPT + { return _Tp_alloc_type(_M_get_Node_allocator()); } + + allocator_type + get_allocator() const _GLIBCXX_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(); } + +#if __cplusplus >= 201103L + _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); + } +#endif + + // This is what actually destroys the list. + ~_List_base() _GLIBCXX_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; + } + }; + + /** + * @brief A standard container with linear time access to elements, + * and fixed time insertion/deletion at any point in the sequence. + * + * @ingroup sequences + * + * @tparam _Tp Type of element. + * @tparam _Alloc Allocator type, defaults to allocator<_Tp>. + * + * Meets the requirements of a container, a + * reversible container, and a + * sequence, including the + * optional sequence requirements with the + * %exception of @c at and @c operator[]. + * + * This is a @e doubly @e linked %list. Traversal up and down the + * %list requires linear time, but adding and removing elements (or + * @e nodes) is done in constant time, regardless of where the + * change takes place. Unlike std::vector and std::deque, + * random-access iterators are not provided, so subscripting ( @c + * [] ) access is not allowed. For algorithms which only need + * sequential access, this lack makes no difference. + * + * Also unlike the other standard containers, std::list provides + * specialized algorithms %unique to linked lists, such as + * splicing, sorting, and in-place reversal. + * + * A couple points on memory allocation for list: + * + * First, we never actually allocate a Tp, we allocate + * List_node's and trust [20.1.5]/4 to DTRT. This is to ensure + * that after elements from %list are spliced into + * %list, destroying the memory of the second %list is a + * valid operation, i.e., Alloc1 giveth and Alloc2 taketh away. + * + * Second, a %list conceptually represented as + * @code + * A <---> B <---> C <---> D + * @endcode + * is actually circular; a link exists between A and D. The %list + * class holds (as its only data member) a private list::iterator + * pointing to @e D, not to @e A! To get to the head of the %list, + * we start at the tail and move forward by one. When this member + * iterator's next/previous pointers refer to itself, the %list is + * %empty. + */ + template > + class list : protected _List_base<_Tp, _Alloc> + { + // concept requirements + typedef typename _Alloc::value_type _Alloc_value_type; + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) + + 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: + // Note that pointers-to-_Node's can be ctor-converted to + // iterator types. + 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; + + /** + * @param __args An instance of user data. + * + * Allocates space for a new node and constructs a copy of + * @a __args in it. + */ +#if __cplusplus < 201103L + _Node* + _M_create_node(const value_type& __x) + { + _Node* __p = this->_M_get_node(); + __try + { + _M_get_Tp_allocator().construct + (std::__addressof(__p->_M_data), __x); + } + __catch(...) + { + _M_put_node(__p); + __throw_exception_again; + } + return __p; + } +#else + template + _Node* + _M_create_node(_Args&&... __args) + { + _Node* __p = this->_M_get_node(); + __try + { + _M_get_Node_allocator().construct(__p, + std::forward<_Args>(__args)...); + } + __catch(...) + { + _M_put_node(__p); + __throw_exception_again; + } + return __p; + } +#endif + + public: + // [23.2.2.1] construct/copy/destroy + // (assign() and get_allocator() are also listed in this section) + /** + * @brief Default constructor creates no elements. + */ + list() + : _Base() { } + + /** + * @brief Creates a %list with no elements. + * @param __a An allocator object. + */ + explicit + list(const allocator_type& __a) + : _Base(_Node_alloc_type(__a)) { } + +#if __cplusplus >= 201103L + /** + * @brief Creates a %list with default constructed elements. + * @param __n The number of elements to initially create. + * + * This constructor fills the %list with @a __n default + * constructed elements. + */ + explicit + list(size_type __n) + : _Base() + { _M_default_initialize(__n); } + + /** + * @brief Creates a %list with copies of an exemplar element. + * @param __n The number of elements to initially create. + * @param __value An element to copy. + * @param __a An allocator object. + * + * This constructor fills the %list with @a __n copies of @a __value. + */ + list(size_type __n, const value_type& __value, + const allocator_type& __a = allocator_type()) + : _Base(_Node_alloc_type(__a)) + { _M_fill_initialize(__n, __value); } +#else + /** + * @brief Creates a %list with copies of an exemplar element. + * @param __n The number of elements to initially create. + * @param __value An element to copy. + * @param __a An allocator object. + * + * This constructor fills the %list with @a __n copies of @a __value. + */ + explicit + list(size_type __n, const value_type& __value = value_type(), + const allocator_type& __a = allocator_type()) + : _Base(_Node_alloc_type(__a)) + { _M_fill_initialize(__n, __value); } +#endif + + /** + * @brief %List copy constructor. + * @param __x A %list of identical element and allocator types. + * + * The newly-created %list uses a copy of the allocation object used + * by @a __x. + */ + list(const list& __x) + : _Base(__x._M_get_Node_allocator()) + { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } + +#if __cplusplus >= 201103L + /** + * @brief %List move constructor. + * @param __x A %list of identical element and allocator types. + * + * The newly-created %list contains the exact contents of @a __x. + * The contents of @a __x are a valid, but unspecified %list. + */ + list(list&& __x) noexcept + : _Base(std::move(__x)) { } + + /** + * @brief Builds a %list from an initializer_list + * @param __l An initializer_list of value_type. + * @param __a An allocator object. + * + * Create a %list consisting of copies of the elements in the + * initializer_list @a __l. This is linear in __l.size(). + */ + list(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(_Node_alloc_type(__a)) + { _M_initialize_dispatch(__l.begin(), __l.end(), __false_type()); } +#endif + + /** + * @brief Builds a %list from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __a An allocator object. + * + * Create a %list consisting of copies of the elements from + * [@a __first,@a __last). This is linear in N (where N is + * distance(@a __first,@a __last)). + */ +#if __cplusplus >= 201103L + template> + list(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(_Node_alloc_type(__a)) + { _M_initialize_dispatch(__first, __last, __false_type()); } +#else + template + list(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(_Node_alloc_type(__a)) + { + // Check whether it's an integral type. If so, it's not an iterator. + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_initialize_dispatch(__first, __last, _Integral()); + } +#endif + + /** + * No explicit dtor needed as the _Base dtor takes care of + * things. The _Base dtor only erases the elements, and note + * that if the elements themselves are pointers, the pointed-to + * memory is not touched in any way. Managing the pointer is + * the user's responsibility. + */ + + /** + * @brief %List assignment operator. + * @param __x A %list of identical element and allocator types. + * + * All the elements of @a __x are copied, but unlike the copy + * constructor, the allocator object is not copied. + */ + list& + operator=(const list& __x); + +#if __cplusplus >= 201103L + /** + * @brief %List move assignment operator. + * @param __x A %list of identical element and allocator types. + * + * The contents of @a __x are moved into this %list (without copying). + * @a __x is a valid, but unspecified %list + */ + list& + operator=(list&& __x) + { + // NB: DR 1204. + // NB: DR 675. + this->clear(); + this->swap(__x); + return *this; + } + + /** + * @brief %List initializer list assignment operator. + * @param __l An initializer_list of value_type. + * + * Replace the contents of the %list with copies of the elements + * in the initializer_list @a __l. This is linear in l.size(). + */ + list& + operator=(initializer_list __l) + { + this->assign(__l.begin(), __l.end()); + return *this; + } +#endif + + /** + * @brief Assigns a given value to a %list. + * @param __n Number of elements to be assigned. + * @param __val Value to be assigned. + * + * This function fills a %list with @a __n copies of the given + * value. Note that the assignment completely changes the %list + * and that the resulting %list's size is the same as the number + * of elements assigned. Old data may be lost. + */ + void + assign(size_type __n, const value_type& __val) + { _M_fill_assign(__n, __val); } + + /** + * @brief Assigns a range to a %list. + * @param __first An input iterator. + * @param __last An input iterator. + * + * This function fills a %list with copies of the elements in the + * range [@a __first,@a __last). + * + * Note that the assignment completely changes the %list and + * that the resulting %list's size is the same as the number of + * elements assigned. Old data may be lost. + */ +#if __cplusplus >= 201103L + template> + void + assign(_InputIterator __first, _InputIterator __last) + { _M_assign_dispatch(__first, __last, __false_type()); } +#else + template + void + assign(_InputIterator __first, _InputIterator __last) + { + // Check whether it's an integral type. If so, it's not an iterator. + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_assign_dispatch(__first, __last, _Integral()); + } +#endif + +#if __cplusplus >= 201103L + /** + * @brief Assigns an initializer_list to a %list. + * @param __l An initializer_list of value_type. + * + * Replace the contents of the %list with copies of the elements + * in the initializer_list @a __l. This is linear in __l.size(). + */ + void + assign(initializer_list __l) + { this->assign(__l.begin(), __l.end()); } +#endif + + /// Get a copy of the memory allocation object. + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return _Base::get_allocator(); } + + // iterators + /** + * Returns a read/write iterator that points to the first element in the + * %list. Iteration is done in ordinary element order. + */ + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(this->_M_impl._M_node._M_next); } + + /** + * Returns a read-only (constant) iterator that points to the + * first element in the %list. Iteration is done in ordinary + * element order. + */ + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(this->_M_impl._M_node._M_next); } + + /** + * Returns a read/write iterator that points one past the last + * element in the %list. Iteration is done in ordinary element + * order. + */ + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(&this->_M_impl._M_node); } + + /** + * Returns a read-only (constant) iterator that points one past + * the last element in the %list. Iteration is done in ordinary + * element order. + */ + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(&this->_M_impl._M_node); } + + /** + * Returns a read/write reverse iterator that points to the last + * element in the %list. Iteration is done in reverse element + * order. + */ + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + /** + * Returns a read-only (constant) reverse iterator that points to + * the last element in the %list. Iteration is done in reverse + * element order. + */ + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + /** + * Returns a read/write reverse iterator that points to one + * before the first element in the %list. Iteration is done in + * reverse element order. + */ + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + /** + * Returns a read-only (constant) reverse iterator that points to one + * before the first element in the %list. Iteration is done in reverse + * element order. + */ + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + /** + * Returns a read-only (constant) iterator that points to the + * first element in the %list. Iteration is done in ordinary + * element order. + */ + const_iterator + cbegin() const noexcept + { return const_iterator(this->_M_impl._M_node._M_next); } + + /** + * Returns a read-only (constant) iterator that points one past + * the last element in the %list. Iteration is done in ordinary + * element order. + */ + const_iterator + cend() const noexcept + { return const_iterator(&this->_M_impl._M_node); } + + /** + * Returns a read-only (constant) reverse iterator that points to + * the last element in the %list. Iteration is done in reverse + * element order. + */ + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + /** + * Returns a read-only (constant) reverse iterator that points to one + * before the first element in the %list. Iteration is done in reverse + * element order. + */ + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // [23.2.2.2] capacity + /** + * Returns true if the %list is empty. (Thus begin() would equal + * end().) + */ + bool + empty() const _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; } + + /** Returns the number of elements in the %list. */ + size_type + size() const _GLIBCXX_NOEXCEPT + { return std::distance(begin(), end()); } + + /** Returns the size() of the largest possible %list. */ + size_type + max_size() const _GLIBCXX_NOEXCEPT + { return _M_get_Node_allocator().max_size(); } + +#if __cplusplus >= 201103L + /** + * @brief Resizes the %list to the specified number of elements. + * @param __new_size Number of elements the %list should contain. + * + * This function will %resize the %list to the specified number + * of elements. If the number is smaller than the %list's + * current size the %list is truncated, otherwise default + * constructed elements are appended. + */ + void + resize(size_type __new_size); + + /** + * @brief Resizes the %list to the specified number of elements. + * @param __new_size Number of elements the %list should contain. + * @param __x Data with which new elements should be populated. + * + * This function will %resize the %list to the specified number + * of elements. If the number is smaller than the %list's + * current size the %list is truncated, otherwise the %list is + * extended and new elements are populated with given data. + */ + void + resize(size_type __new_size, const value_type& __x); +#else + /** + * @brief Resizes the %list to the specified number of elements. + * @param __new_size Number of elements the %list should contain. + * @param __x Data with which new elements should be populated. + * + * This function will %resize the %list to the specified number + * of elements. If the number is smaller than the %list's + * current size the %list is truncated, otherwise the %list is + * extended and new elements are populated with given data. + */ + void + resize(size_type __new_size, value_type __x = value_type()); +#endif + + // element access + /** + * Returns a read/write reference to the data at the first + * element of the %list. + */ + reference + front() + { return *begin(); } + + /** + * Returns a read-only (constant) reference to the data at the first + * element of the %list. + */ + const_reference + front() const + { return *begin(); } + + /** + * Returns a read/write reference to the data at the last element + * of the %list. + */ + reference + back() + { + iterator __tmp = end(); + --__tmp; + return *__tmp; + } + + /** + * Returns a read-only (constant) reference to the data at the last + * element of the %list. + */ + const_reference + back() const + { + const_iterator __tmp = end(); + --__tmp; + return *__tmp; + } + + // [23.2.2.3] modifiers + /** + * @brief Add data to the front of the %list. + * @param __x Data to be added. + * + * This is a typical stack operation. The function creates an + * element at the front of the %list and assigns the given data + * to it. Due to the nature of a %list this operation can be + * done in constant time, and does not invalidate iterators and + * references. + */ + void + push_front(const value_type& __x) + { this->_M_insert(begin(), __x); } + +#if __cplusplus >= 201103L + 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)...); } +#endif + + /** + * @brief Removes first element. + * + * This is a typical stack operation. It shrinks the %list by + * one. Due to the nature of a %list this operation can be done + * in constant time, and only invalidates iterators/references to + * the element being removed. + * + * Note that no data is returned, and if the first element's data + * is needed, it should be retrieved before pop_front() is + * called. + */ + void + pop_front() + { this->_M_erase(begin()); } + + /** + * @brief Add data to the end of the %list. + * @param __x Data to be added. + * + * This is a typical stack operation. The function creates an + * element at the end of the %list and assigns the given data to + * it. Due to the nature of a %list this operation can be done + * in constant time, and does not invalidate iterators and + * references. + */ + void + push_back(const value_type& __x) + { this->_M_insert(end(), __x); } + +#if __cplusplus >= 201103L + 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)...); } +#endif + + /** + * @brief Removes last element. + * + * This is a typical stack operation. It shrinks the %list by + * one. Due to the nature of a %list this operation can be done + * in constant time, and only invalidates iterators/references to + * the element being removed. + * + * Note that no data is returned, and if the last element's data + * is needed, it should be retrieved before pop_back() is called. + */ + void + pop_back() + { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); } + +#if __cplusplus >= 201103L + /** + * @brief Constructs object in %list before specified iterator. + * @param __position A const_iterator into the %list. + * @param __args Arguments. + * @return An iterator that points to the inserted data. + * + * This function will insert an object of type T constructed + * with T(std::forward(args)...) before the specified + * location. Due to the nature of a %list this operation can + * be done in constant time, and does not invalidate iterators + * and references. + */ + template + iterator + emplace(iterator __position, _Args&&... __args); +#endif + + /** + * @brief Inserts given value into %list before specified iterator. + * @param __position An iterator into the %list. + * @param __x Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given value before + * the specified location. Due to the nature of a %list this + * operation can be done in constant time, and does not + * invalidate iterators and references. + */ + iterator + insert(iterator __position, const value_type& __x); + +#if __cplusplus >= 201103L + /** + * @brief Inserts given rvalue into %list before specified iterator. + * @param __position An iterator into the %list. + * @param __x Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given rvalue before + * the specified location. Due to the nature of a %list this + * operation can be done in constant time, and does not + * invalidate iterators and references. + */ + iterator + insert(iterator __position, value_type&& __x) + { return emplace(__position, std::move(__x)); } + + /** + * @brief Inserts the contents of an initializer_list into %list + * before specified iterator. + * @param __p An iterator into the %list. + * @param __l An initializer_list of value_type. + * + * This function will insert copies of the data in the + * initializer_list @a l into the %list before the location + * specified by @a p. + * + * This operation is linear in the number of elements inserted and + * does not invalidate iterators and references. + */ + void + insert(iterator __p, initializer_list __l) + { this->insert(__p, __l.begin(), __l.end()); } +#endif + + /** + * @brief Inserts a number of copies of given data into the %list. + * @param __position An iterator into the %list. + * @param __n Number of elements to be inserted. + * @param __x Data to be inserted. + * + * This function will insert a specified number of copies of the + * given data before the location specified by @a position. + * + * This operation is linear in the number of elements inserted and + * does not invalidate iterators and references. + */ + void + insert(iterator __position, size_type __n, const value_type& __x) + { + list __tmp(__n, __x, get_allocator()); + splice(__position, __tmp); + } + + /** + * @brief Inserts a range into the %list. + * @param __position An iterator into the %list. + * @param __first An input iterator. + * @param __last An input iterator. + * + * This function will insert copies of the data in the range [@a + * first,@a last) into the %list before the location specified by + * @a position. + * + * This operation is linear in the number of elements inserted and + * does not invalidate iterators and references. + */ +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + insert(iterator __position, _InputIterator __first, + _InputIterator __last) + { + list __tmp(__first, __last, get_allocator()); + splice(__position, __tmp); + } + + /** + * @brief Remove element at given position. + * @param __position Iterator pointing to element to be erased. + * @return An iterator pointing to the next element (or end()). + * + * This function will erase the element at the given position and thus + * shorten the %list by one. + * + * Due to the nature of a %list this operation can be done in + * constant time, and only invalidates iterators/references to + * the element being removed. The user is also cautioned that + * this function only erases the element, and that if the element + * is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(iterator __position); + + /** + * @brief Remove a range of elements. + * @param __first Iterator pointing to the first element to be erased. + * @param __last Iterator pointing to one past the last element to be + * erased. + * @return An iterator pointing to the element pointed to by @a last + * prior to erasing (or end()). + * + * This function will erase the elements in the range @a + * [first,last) and shorten the %list accordingly. + * + * This operation is linear time in the size of the range and only + * invalidates iterators/references to the element being removed. + * The user is also cautioned that this function only erases the + * elements, and that if the elements themselves are pointers, the + * pointed-to memory is not touched in any way. Managing the pointer + * is the user's responsibility. + */ + iterator + erase(iterator __first, iterator __last) + { + while (__first != __last) + __first = erase(__first); + return __last; + } + + /** + * @brief Swaps data with another %list. + * @param __x A %list of the same element and allocator types. + * + * This exchanges the elements between two lists in constant + * time. Note that the global std::swap() function is + * specialized such that std::swap(l1,l2) will feed to this + * function. + */ + void + swap(list& __x) + { + __detail::_List_node_base::swap(this->_M_impl._M_node, + __x._M_impl._M_node); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 431. Swapping containers with unequal allocators. + std::__alloc_swap:: + _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()); + } + + /** + * Erases all the elements. Note that this function only erases + * the elements, and that if the elements themselves are + * pointers, the pointed-to memory is not touched in any way. + * Managing the pointer is the user's responsibility. + */ + void + clear() _GLIBCXX_NOEXCEPT + { + _Base::_M_clear(); + _Base::_M_init(); + } + + // [23.2.2.4] list operations + /** + * @brief Insert contents of another %list. + * @param __position Iterator referencing the element to insert before. + * @param __x Source list. + * + * The elements of @a __x are inserted in constant time in front of + * the element referenced by @a __position. @a __x becomes an empty + * list. + * + * Requires this != @a __x. + */ + void +#if __cplusplus >= 201103L + splice(iterator __position, list&& __x) +#else + splice(iterator __position, list& __x) +#endif + { + if (!__x.empty()) + { + _M_check_equal_allocators(__x); + + this->_M_transfer(__position, __x.begin(), __x.end()); + } + } + +#if __cplusplus >= 201103L + void + splice(iterator __position, list& __x) + { splice(__position, std::move(__x)); } +#endif + + /** + * @brief Insert element from another %list. + * @param __position Iterator referencing the element to insert before. + * @param __x Source list. + * @param __i Iterator referencing the element to move. + * + * Removes the element in list @a __x referenced by @a __i and + * inserts it into the current list before @a __position. + */ + void +#if __cplusplus >= 201103L + splice(iterator __position, list&& __x, iterator __i) +#else + splice(iterator __position, list& __x, iterator __i) +#endif + { + iterator __j = __i; + ++__j; + if (__position == __i || __position == __j) + return; + + if (this != &__x) + _M_check_equal_allocators(__x); + + this->_M_transfer(__position, __i, __j); + } + +#if __cplusplus >= 201103L + void + splice(iterator __position, list& __x, iterator __i) + { splice(__position, std::move(__x), __i); } +#endif + + /** + * @brief Insert range from another %list. + * @param __position Iterator referencing the element to insert before. + * @param __x Source list. + * @param __first Iterator referencing the start of range in x. + * @param __last Iterator referencing the end of range in x. + * + * Removes elements in the range [__first,__last) and inserts them + * before @a __position in constant time. + * + * Undefined if @a __position is in [__first,__last). + */ + void +#if __cplusplus >= 201103L + splice(iterator __position, list&& __x, iterator __first, + iterator __last) +#else + splice(iterator __position, list& __x, iterator __first, + iterator __last) +#endif + { + if (__first != __last) + { + if (this != &__x) + _M_check_equal_allocators(__x); + + this->_M_transfer(__position, __first, __last); + } + } + +#if __cplusplus >= 201103L + void + splice(iterator __position, list& __x, iterator __first, iterator __last) + { splice(__position, std::move(__x), __first, __last); } +#endif + + /** + * @brief Remove all elements equal to value. + * @param __value The value to remove. + * + * Removes every element in the list equal to @a value. + * Remaining elements stay in list order. Note that this + * function only erases the elements, and that if the elements + * themselves are pointers, the pointed-to memory is not + * touched in any way. Managing the pointer is the user's + * responsibility. + */ + void + remove(const _Tp& __value); + + /** + * @brief Remove all elements satisfying a predicate. + * @tparam _Predicate Unary predicate function or object. + * + * Removes every element in the list for which the predicate + * returns true. Remaining elements stay in list order. Note + * that this function only erases the elements, and that if the + * elements themselves are pointers, the pointed-to memory is + * not touched in any way. Managing the pointer is the user's + * responsibility. + */ + template + void + remove_if(_Predicate); + + /** + * @brief Remove consecutive duplicate elements. + * + * For each consecutive set of elements with the same value, + * remove all but the first one. Remaining elements stay in + * list order. Note that this function only erases the + * elements, and that if the elements themselves are pointers, + * the pointed-to memory is not touched in any way. Managing + * the pointer is the user's responsibility. + */ + void + unique(); + + /** + * @brief Remove consecutive elements satisfying a predicate. + * @tparam _BinaryPredicate Binary predicate function or object. + * + * For each consecutive set of elements [first,last) that + * satisfy predicate(first,i) where i is an iterator in + * [first,last), remove all but the first one. Remaining + * elements stay in list order. Note that this function only + * erases the elements, and that if the elements themselves are + * pointers, the pointed-to memory is not touched in any way. + * Managing the pointer is the user's responsibility. + */ + template + void + unique(_BinaryPredicate); + + /** + * @brief Merge sorted lists. + * @param __x Sorted list to merge. + * + * Assumes that both @a __x and this list are sorted according to + * operator<(). Merges elements of @a __x into this list in + * sorted order, leaving @a __x empty when complete. Elements in + * this list precede elements in @a __x that are equal. + */ +#if __cplusplus >= 201103L + void + merge(list&& __x); + + void + merge(list& __x) + { merge(std::move(__x)); } +#else + void + merge(list& __x); +#endif + + /** + * @brief Merge sorted lists according to comparison function. + * @tparam _StrictWeakOrdering Comparison function defining + * sort order. + * @param __x Sorted list to merge. + * @param __comp Comparison functor. + * + * Assumes that both @a __x and this list are sorted according to + * StrictWeakOrdering. Merges elements of @a __x into this list + * in sorted order, leaving @a __x empty when complete. Elements + * in this list precede elements in @a __x that are equivalent + * according to StrictWeakOrdering(). + */ +#if __cplusplus >= 201103L + template + void + merge(list&& __x, _StrictWeakOrdering __comp); + + template + void + merge(list& __x, _StrictWeakOrdering __comp) + { merge(std::move(__x), __comp); } +#else + template + void + merge(list& __x, _StrictWeakOrdering __comp); +#endif + + /** + * @brief Reverse the elements in list. + * + * Reverse the order of elements in the list in linear time. + */ + void + reverse() _GLIBCXX_NOEXCEPT + { this->_M_impl._M_node._M_reverse(); } + + /** + * @brief Sort the elements. + * + * Sorts the elements of this list in NlogN time. Equivalent + * elements remain in list order. + */ + void + sort(); + + /** + * @brief Sort the elements according to comparison function. + * + * Sorts the elements of this list in NlogN time. Equivalent + * elements remain in list order. + */ + template + void + sort(_StrictWeakOrdering); + + protected: + // Internal constructor functions follow. + + // Called by the range constructor to implement [23.1.1]/9 + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) + { _M_fill_initialize(static_cast(__n), __x); } + + // Called by the range constructor to implement [23.1.1]/9 + template + void + _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, + __false_type) + { + for (; __first != __last; ++__first) +#if __cplusplus >= 201103L + emplace_back(*__first); +#else + push_back(*__first); +#endif + } + + // Called by list(n,v,a), and the range constructor when it turns out + // to be the same thing. + void + _M_fill_initialize(size_type __n, const value_type& __x) + { + for (; __n; --__n) + push_back(__x); + } + +#if __cplusplus >= 201103L + // Called by list(n). + void + _M_default_initialize(size_type __n) + { + for (; __n; --__n) + emplace_back(); + } + + // Called by resize(sz). + void + _M_default_append(size_type __n); +#endif + + // Internal assign functions follow. + + // Called by the range assign to implement [23.1.1]/9 + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + // Called by the range assign to implement [23.1.1]/9 + template + void + _M_assign_dispatch(_InputIterator __first, _InputIterator __last, + __false_type); + + // Called by assign(n,t), and the range assign when it turns out + // to be the same thing. + void + _M_fill_assign(size_type __n, const value_type& __val); + + + // Moves the elements from [first,last) before position. + void + _M_transfer(iterator __position, iterator __first, iterator __last) + { __position._M_node->_M_transfer(__first._M_node, __last._M_node); } + + // Inserts new element at position given and with value given. +#if __cplusplus < 201103L + void + _M_insert(iterator __position, const value_type& __x) + { + _Node* __tmp = _M_create_node(__x); + __tmp->_M_hook(__position._M_node); + } +#else + template + void + _M_insert(iterator __position, _Args&&... __args) + { + _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); + __tmp->_M_hook(__position._M_node); + } +#endif + + // Erases element at position given. + void + _M_erase(iterator __position) + { + __position._M_node->_M_unhook(); + _Node* __n = static_cast<_Node*>(__position._M_node); +#if __cplusplus >= 201103L + _M_get_Node_allocator().destroy(__n); +#else + _M_get_Tp_allocator().destroy(std::__addressof(__n->_M_data)); +#endif + _M_put_node(__n); + } + + // To implement the splice (and merge) bits of N1599. + 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(__N("list::_M_check_equal_allocators")); + } + }; + + /** + * @brief List equality comparison. + * @param __x A %list. + * @param __y A %list of the same type as @a __x. + * @return True iff the size and elements of the lists are equal. + * + * This is an equivalence relation. It is linear in the size of + * the lists. Lists are considered equivalent if their sizes are + * equal, and if corresponding elements compare equal. + */ + 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; + } + + /** + * @brief List ordering relation. + * @param __x A %list. + * @param __y A %list of the same type as @a __x. + * @return True iff @a __x is lexicographically less than @a __y. + * + * This is a total ordering relation. It is linear in the size of the + * lists. The elements must be comparable with @c <. + * + * See std::lexicographical_compare() for how the determination is made. + */ + 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()); } + + /// Based on operator== + template + inline bool + operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return !(__x == __y); } + + /// Based on operator< + template + inline bool + operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return __y < __x; } + + /// Based on operator< + template + inline bool + operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return !(__y < __x); } + + /// Based on operator< + template + inline bool + operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) + { return !(__x < __y); } + + /// See std::list::swap(). + template + inline void + swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) + { __x.swap(__y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _STL_LIST_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_map.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_map.h new file mode 100644 index 0000000..d05e4b9 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_map.h @@ -0,0 +1,1021 @@ +// Map implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_map.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{map} + */ + +#ifndef _STL_MAP_H +#define _STL_MAP_H 1 + +#include +#include +#if __cplusplus >= 201103L +#include +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * @brief A standard container made up of (key,value) pairs, which can be + * retrieved based on a key, in logarithmic time. + * + * @ingroup associative_containers + * + * @tparam _Key Type of key objects. + * @tparam _Tp Type of mapped objects. + * @tparam _Compare Comparison function object type, defaults to less<_Key>. + * @tparam _Alloc Allocator type, defaults to + * allocator. + * + * Meets the requirements of a container, a + * reversible container, and an + * associative container (using unique keys). + * For a @c map the key_type is Key, the mapped_type is T, and the + * value_type is std::pair. + * + * Maps support bidirectional iterators. + * + * The private tree data is declared exactly the same way for map and + * multimap; the distinction is made entirely in how the tree functions are + * called (*_unique versus *_equal, same as the standard). + */ + 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: + // concept requirements + typedef typename _Alloc::value_type _Alloc_value_type; + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires4(_Compare, bool, _Key, _Key, + _BinaryFunctionConcept) + __glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept) + + 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: + /// This turns a red-black tree into a [multi]map. + typedef typename _Alloc::template rebind::other + _Pair_alloc_type; + + typedef _Rb_tree, + key_compare, _Pair_alloc_type> _Rep_type; + + /// The actual tree structure. + _Rep_type _M_t; + + public: + // many of these are specified differently in ISO, but the following are + // "functionally equivalent" + 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; + + // [23.3.1.1] construct/copy/destroy + // (get_allocator() is normally listed in this section, but seems to have + // been accidentally omitted in the printed standard) + /** + * @brief Default constructor creates no elements. + */ + map() + : _M_t() { } + + /** + * @brief Creates a %map with no elements. + * @param __comp A comparison object. + * @param __a An allocator object. + */ + explicit + map(const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Pair_alloc_type(__a)) { } + + /** + * @brief %Map copy constructor. + * @param __x A %map of identical element and allocator types. + * + * The newly-created %map uses a copy of the allocation object + * used by @a __x. + */ + map(const map& __x) + : _M_t(__x._M_t) { } + +#if __cplusplus >= 201103L + /** + * @brief %Map move constructor. + * @param __x A %map of identical element and allocator types. + * + * The newly-created %map contains the exact contents of @a __x. + * The contents of @a __x are a valid, but unspecified %map. + */ + map(map&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _M_t(std::move(__x._M_t)) { } + + /** + * @brief Builds a %map from an initializer_list. + * @param __l An initializer_list. + * @param __comp A comparison object. + * @param __a An allocator object. + * + * Create a %map consisting of copies of the elements in the + * initializer_list @a __l. + * This is linear in N if the range is already sorted, and NlogN + * otherwise (where N is @a __l.size()). + */ + 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()); } +#endif + + /** + * @brief Builds a %map from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * + * Create a %map consisting of copies of the elements from + * [__first,__last). This is linear in N if the range is + * already sorted, and NlogN otherwise (where N is + * distance(__first,__last)). + */ + template + map(_InputIterator __first, _InputIterator __last) + : _M_t() + { _M_t._M_insert_unique(__first, __last); } + + /** + * @brief Builds a %map from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __comp A comparison functor. + * @param __a An allocator object. + * + * Create a %map consisting of copies of the elements from + * [__first,__last). This is linear in N if the range is + * already sorted, and NlogN otherwise (where N is + * distance(__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); } + + // FIXME There is no dtor declared, but we should have something + // generated by Doxygen. I don't know what tags to add to this + // paragraph to make that happen: + /** + * The dtor only erases the elements, and note that if the elements + * themselves are pointers, the pointed-to memory is not touched in any + * way. Managing the pointer is the user's responsibility. + */ + + /** + * @brief %Map assignment operator. + * @param __x A %map of identical element and allocator types. + * + * All the elements of @a __x are copied, but unlike the copy + * constructor, the allocator object is not copied. + */ + map& + operator=(const map& __x) + { + _M_t = __x._M_t; + return *this; + } + +#if __cplusplus >= 201103L + /** + * @brief %Map move assignment operator. + * @param __x A %map of identical element and allocator types. + * + * The contents of @a __x are moved into this map (without copying). + * @a __x is a valid, but unspecified %map. + */ + map& + operator=(map&& __x) + { + // NB: DR 1204. + // NB: DR 675. + this->clear(); + this->swap(__x); + return *this; + } + + /** + * @brief %Map list assignment operator. + * @param __l An initializer_list. + * + * This function fills a %map with copies of the elements in the + * initializer list @a __l. + * + * Note that the assignment completely changes the %map and + * that the resulting %map's size is the same as the number + * of elements assigned. Old data may be lost. + */ + map& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l.begin(), __l.end()); + return *this; + } +#endif + + /// Get a copy of the memory allocation object. + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return allocator_type(_M_t.get_allocator()); } + + // iterators + /** + * Returns a read/write iterator that points to the first pair in the + * %map. + * Iteration is done in ascending order according to the keys. + */ + iterator + begin() _GLIBCXX_NOEXCEPT + { return _M_t.begin(); } + + /** + * Returns a read-only (constant) iterator that points to the first pair + * in the %map. Iteration is done in ascending order according to the + * keys. + */ + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return _M_t.begin(); } + + /** + * Returns a read/write iterator that points one past the last + * pair in the %map. Iteration is done in ascending order + * according to the keys. + */ + iterator + end() _GLIBCXX_NOEXCEPT + { return _M_t.end(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * pair in the %map. Iteration is done in ascending order according to + * the keys. + */ + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return _M_t.end(); } + + /** + * Returns a read/write reverse iterator that points to the last pair in + * the %map. Iteration is done in descending order according to the + * keys. + */ + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return _M_t.rbegin(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last pair in the %map. Iteration is done in descending order + * according to the keys. + */ + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return _M_t.rbegin(); } + + /** + * Returns a read/write reverse iterator that points to one before the + * first pair in the %map. Iteration is done in descending order + * according to the keys. + */ + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return _M_t.rend(); } + + /** + * Returns a read-only (constant) reverse iterator that points to one + * before the first pair in the %map. Iteration is done in descending + * order according to the keys. + */ + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return _M_t.rend(); } + +#if __cplusplus >= 201103L + /** + * Returns a read-only (constant) iterator that points to the first pair + * in the %map. Iteration is done in ascending order according to the + * keys. + */ + const_iterator + cbegin() const noexcept + { return _M_t.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * pair in the %map. Iteration is done in ascending order according to + * the keys. + */ + const_iterator + cend() const noexcept + { return _M_t.end(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last pair in the %map. Iteration is done in descending order + * according to the keys. + */ + const_reverse_iterator + crbegin() const noexcept + { return _M_t.rbegin(); } + + /** + * Returns a read-only (constant) reverse iterator that points to one + * before the first pair in the %map. Iteration is done in descending + * order according to the keys. + */ + const_reverse_iterator + crend() const noexcept + { return _M_t.rend(); } +#endif + + // capacity + /** Returns true if the %map is empty. (Thus begin() would equal + * end().) + */ + bool + empty() const _GLIBCXX_NOEXCEPT + { return _M_t.empty(); } + + /** Returns the size of the %map. */ + size_type + size() const _GLIBCXX_NOEXCEPT + { return _M_t.size(); } + + /** Returns the maximum size of the %map. */ + size_type + max_size() const _GLIBCXX_NOEXCEPT + { return _M_t.max_size(); } + + // [23.3.1.2] element access + /** + * @brief Subscript ( @c [] ) access to %map data. + * @param __k The key for which data should be retrieved. + * @return A reference to the data of the (key,data) %pair. + * + * Allows for easy lookup with the subscript ( @c [] ) + * operator. Returns data associated with the key specified in + * subscript. If the key does not exist, a pair with that key + * is created using default values, which is then returned. + * + * Lookup requires logarithmic time. + */ + mapped_type& + operator[](const key_type& __k) + { + // concept requirements + __glibcxx_function_requires(_DefaultConstructibleConcept) + + iterator __i = lower_bound(__k); + // __i->first is greater than or equivalent to __k. + if (__i == end() || key_comp()(__k, (*__i).first)) +#if __cplusplus >= 201103L + __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, + std::tuple(__k), + std::tuple<>()); +#else + __i = insert(__i, value_type(__k, mapped_type())); +#endif + return (*__i).second; + } + +#if __cplusplus >= 201103L + mapped_type& + operator[](key_type&& __k) + { + // concept requirements + __glibcxx_function_requires(_DefaultConstructibleConcept) + + iterator __i = lower_bound(__k); + // __i->first is greater than or equivalent to __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; + } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 464. Suggestion for new member functions in standard containers. + /** + * @brief Access to %map data. + * @param __k The key for which data should be retrieved. + * @return A reference to the data whose key is equivalent to @a __k, if + * such a data is present in the %map. + * @throw std::out_of_range If no such data is present. + */ + mapped_type& + at(const key_type& __k) + { + iterator __i = lower_bound(__k); + if (__i == end() || key_comp()(__k, (*__i).first)) + __throw_out_of_range(__N("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(__N("map::at")); + return (*__i).second; + } + + // modifiers +#if __cplusplus >= 201103L + /** + * @brief Attempts to build and insert a std::pair into the %map. + * + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted pair, and the second is a bool that + * is true if the pair was actually inserted. + * + * This function attempts to build and insert a (key, value) %pair into + * the %map. + * A %map relies on unique keys and thus a %pair is only inserted if its + * first element (the key) is not already present in the %map. + * + * Insertion requires logarithmic time. + */ + template + std::pair + emplace(_Args&&... __args) + { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } + + /** + * @brief Attempts to build and insert a std::pair into the %map. + * + * @param __pos An iterator that serves as a hint as to where the pair + * should be inserted. + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * @return An iterator that points to the element with key of the + * std::pair built from @a __args (may or may not be that + * std::pair). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument emplace() + * does. + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * for more on @a hinting. + * + * Insertion requires logarithmic time (if the hint is not taken). + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + return _M_t._M_emplace_hint_unique(__pos, + std::forward<_Args>(__args)...); + } +#endif + + /** + * @brief Attempts to insert a std::pair into the %map. + + * @param __x Pair to be inserted (see std::make_pair for easy + * creation of pairs). + * + * @return A pair, of which the first element is an iterator that + * points to the possibly inserted pair, and the second is + * a bool that is true if the pair was actually inserted. + * + * This function attempts to insert a (key, value) %pair into the %map. + * A %map relies on unique keys and thus a %pair is only inserted if its + * first element (the key) is not already present in the %map. + * + * Insertion requires logarithmic time. + */ + std::pair + insert(const value_type& __x) + { return _M_t._M_insert_unique(__x); } + +#if __cplusplus >= 201103L + template::value>::type> + std::pair + insert(_Pair&& __x) + { return _M_t._M_insert_unique(std::forward<_Pair>(__x)); } +#endif + +#if __cplusplus >= 201103L + /** + * @brief Attempts to insert a list of std::pairs into the %map. + * @param __list A std::initializer_list of pairs to be + * inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(std::initializer_list __list) + { insert(__list.begin(), __list.end()); } +#endif + + /** + * @brief Attempts to insert a std::pair into the %map. + * @param __position An iterator that serves as a hint as to where the + * pair should be inserted. + * @param __x Pair to be inserted (see std::make_pair for easy creation + * of pairs). + * @return An iterator that points to the element with key of + * @a __x (may or may not be the %pair passed in). + * + + * This function is not concerned about whether the insertion + * took place, and thus does not return a boolean like the + * single-argument insert() does. Note that the first + * parameter is only a hint and can potentially improve the + * performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * for more on @a hinting. + * + * Insertion requires logarithmic time (if the hint is not taken). + */ + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const value_type& __x) +#else + insert(iterator __position, const value_type& __x) +#endif + { return _M_t._M_insert_unique_(__position, __x); } + +#if __cplusplus >= 201103L + template::value>::type> + iterator + insert(const_iterator __position, _Pair&& __x) + { return _M_t._M_insert_unique_(__position, + std::forward<_Pair>(__x)); } +#endif + + /** + * @brief Template function that attempts to insert a range of elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_t._M_insert_unique(__first, __last); } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + /** + * @brief Erases an element from a %map. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given + * iterator, from a %map. Note that this function only erases + * the element, and that if the element is itself a pointer, + * the pointed-to memory is not touched in any way. Managing + * the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_t.erase(__position); } + + // LWG 2059 + _GLIBCXX_ABI_TAG_CXX11 + iterator + erase(iterator __position) + { return _M_t.erase(__position); } +#else + /** + * @brief Erases an element from a %map. + * @param __position An iterator pointing to the element to be erased. + * + * This function erases an element, pointed to by the given + * iterator, from a %map. Note that this function only erases + * the element, and that if the element is itself a pointer, + * the pointed-to memory is not touched in any way. Managing + * the pointer is the user's responsibility. + */ + void + erase(iterator __position) + { _M_t.erase(__position); } +#endif + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * a %map. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_t.erase(__x); } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + /** + * @brief Erases a [first,last) range of elements from a %map. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from a %map. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_t.erase(__first, __last); } +#else + /** + * @brief Erases a [__first,__last) range of elements from a %map. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * + * This function erases a sequence of elements from a %map. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + void + erase(iterator __first, iterator __last) + { _M_t.erase(__first, __last); } +#endif + + /** + * @brief Swaps data with another %map. + * @param __x A %map of the same element and allocator types. + * + * This exchanges the elements between two maps in constant + * time. (It is only swapping a pointer, an integer, and an + * instance of the @c Compare type (which itself is often + * stateless and empty), so it should be quite fast.) Note + * that the global std::swap() function is specialized such + * that std::swap(m1,m2) will feed to this function. + */ + void + swap(map& __x) + { _M_t.swap(__x._M_t); } + + /** + * Erases all elements in a %map. Note that this function only + * erases the elements, and that if the elements themselves are + * pointers, the pointed-to memory is not touched in any way. + * Managing the pointer is the user's responsibility. + */ + void + clear() _GLIBCXX_NOEXCEPT + { _M_t.clear(); } + + // observers + /** + * Returns the key comparison object out of which the %map was + * constructed. + */ + key_compare + key_comp() const + { return _M_t.key_comp(); } + + /** + * Returns a value comparison object, built from the key comparison + * object out of which the %map was constructed. + */ + value_compare + value_comp() const + { return value_compare(_M_t.key_comp()); } + + // [23.3.1.3] map operations + /** + * @brief Tries to locate an element in a %map. + * @param __x Key of (key, value) %pair to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after %pair. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_t.find(__x); } + + /** + * @brief Tries to locate an element in a %map. + * @param __x Key of (key, value) %pair to be located. + * @return Read-only (constant) iterator pointing to sought-after + * element, or end() if not found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns a constant + * iterator pointing to the sought after %pair. If unsuccessful it + * returns the past-the-end ( @c end() ) iterator. + */ + const_iterator + find(const key_type& __x) const + { return _M_t.find(__x); } + + /** + * @brief Finds the number of elements with given key. + * @param __x Key of (key, value) pairs to be located. + * @return Number of elements with specified key. + * + * This function only makes sense for multimaps; for map the result will + * either be 0 (not present) or 1 (present). + */ + size_type + count(const key_type& __x) const + { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } + + /** + * @brief Finds the beginning of a subsequence matching given key. + * @param __x Key of (key, value) pair to be located. + * @return Iterator pointing to first element equal to or greater + * than key, or end(). + * + * This function returns the first element of a subsequence of elements + * that matches the given key. If unsuccessful it returns an iterator + * pointing to the first element that has a greater value than given key + * or end() if no such element exists. + */ + iterator + lower_bound(const key_type& __x) + { return _M_t.lower_bound(__x); } + + /** + * @brief Finds the beginning of a subsequence matching given key. + * @param __x Key of (key, value) pair to be located. + * @return Read-only (constant) iterator pointing to first element + * equal to or greater than key, or end(). + * + * This function returns the first element of a subsequence of elements + * that matches the given key. If unsuccessful it returns an iterator + * pointing to the first element that has a greater value than given key + * or end() if no such element exists. + */ + const_iterator + lower_bound(const key_type& __x) const + { return _M_t.lower_bound(__x); } + + /** + * @brief Finds the end of a subsequence matching given key. + * @param __x Key of (key, value) pair to be located. + * @return Iterator pointing to the first element + * greater than key, or end(). + */ + iterator + upper_bound(const key_type& __x) + { return _M_t.upper_bound(__x); } + + /** + * @brief Finds the end of a subsequence matching given key. + * @param __x Key of (key, value) pair to be located. + * @return Read-only (constant) iterator pointing to first iterator + * greater than key, or end(). + */ + const_iterator + upper_bound(const key_type& __x) const + { return _M_t.upper_bound(__x); } + + /** + * @brief Finds a subsequence matching given key. + * @param __x Key of (key, value) pairs to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + * + * This function is equivalent to + * @code + * std::make_pair(c.lower_bound(val), + * c.upper_bound(val)) + * @endcode + * (but is faster than making the calls separately). + * + * This function probably only makes sense for multimaps. + */ + std::pair + equal_range(const key_type& __x) + { return _M_t.equal_range(__x); } + + /** + * @brief Finds a subsequence matching given key. + * @param __x Key of (key, value) pairs to be located. + * @return Pair of read-only (constant) iterators that possibly points + * to the subsequence matching given key. + * + * This function is equivalent to + * @code + * std::make_pair(c.lower_bound(val), + * c.upper_bound(val)) + * @endcode + * (but is faster than making the calls separately). + * + * This function probably only makes sense for multimaps. + */ + 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>&); + }; + + /** + * @brief Map equality comparison. + * @param __x A %map. + * @param __y A %map of the same type as @a x. + * @return True iff the size and elements of the maps are equal. + * + * This is an equivalence relation. It is linear in the size of the + * maps. Maps are considered equivalent if their sizes are equal, + * and if corresponding elements compare equal. + */ + 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; } + + /** + * @brief Map ordering relation. + * @param __x A %map. + * @param __y A %map of the same type as @a x. + * @return True iff @a x is lexicographically less than @a y. + * + * This is a total ordering relation. It is linear in the size of the + * maps. The elements must be comparable with @c <. + * + * See std::lexicographical_compare() for how the determination is made. + */ + 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; } + + /// Based on operator== + template + inline bool + operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x == __y); } + + /// Based on operator< + template + inline bool + operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return __y < __x; } + + /// Based on operator< + template + inline bool + operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__y < __x); } + + /// Based on operator< + template + inline bool + operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, + const map<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x < __y); } + + /// See std::map::swap(). + template + inline void + swap(map<_Key, _Tp, _Compare, _Alloc>& __x, + map<_Key, _Tp, _Compare, _Alloc>& __y) + { __x.swap(__y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _STL_MAP_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_multimap.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_multimap.h new file mode 100644 index 0000000..809ea54 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_multimap.h @@ -0,0 +1,923 @@ +// Multimap implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_multimap.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{map} + */ + +#ifndef _STL_MULTIMAP_H +#define _STL_MULTIMAP_H 1 + +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * @brief A standard container made up of (key,value) pairs, which can be + * retrieved based on a key, in logarithmic time. + * + * @ingroup associative_containers + * + * @tparam _Key Type of key objects. + * @tparam _Tp Type of mapped objects. + * @tparam _Compare Comparison function object type, defaults to less<_Key>. + * @tparam _Alloc Allocator type, defaults to + * allocator. + * + * Meets the requirements of a container, a + * reversible container, and an + * associative container (using equivalent + * keys). For a @c multimap the key_type is Key, the mapped_type + * is T, and the value_type is std::pair. + * + * Multimaps support bidirectional iterators. + * + * The private tree data is declared exactly the same way for map and + * multimap; the distinction is made entirely in how the tree functions are + * called (*_unique versus *_equal, same as the standard). + */ + 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: + // concept requirements + typedef typename _Alloc::value_type _Alloc_value_type; + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires4(_Compare, bool, _Key, _Key, + _BinaryFunctionConcept) + __glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept) + + 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: + /// This turns a red-black tree into a [multi]map. + typedef typename _Alloc::template rebind::other + _Pair_alloc_type; + + typedef _Rb_tree, + key_compare, _Pair_alloc_type> _Rep_type; + /// The actual tree structure. + _Rep_type _M_t; + + public: + // many of these are specified differently in ISO, but the following are + // "functionally equivalent" + 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; + + // [23.3.2] construct/copy/destroy + // (get_allocator() is also listed in this section) + /** + * @brief Default constructor creates no elements. + */ + multimap() + : _M_t() { } + + /** + * @brief Creates a %multimap with no elements. + * @param __comp A comparison object. + * @param __a An allocator object. + */ + explicit + multimap(const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Pair_alloc_type(__a)) { } + + /** + * @brief %Multimap copy constructor. + * @param __x A %multimap of identical element and allocator types. + * + * The newly-created %multimap uses a copy of the allocation object + * used by @a __x. + */ + multimap(const multimap& __x) + : _M_t(__x._M_t) { } + +#if __cplusplus >= 201103L + /** + * @brief %Multimap move constructor. + * @param __x A %multimap of identical element and allocator types. + * + * The newly-created %multimap contains the exact contents of @a __x. + * The contents of @a __x are a valid, but unspecified %multimap. + */ + multimap(multimap&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _M_t(std::move(__x._M_t)) { } + + /** + * @brief Builds a %multimap from an initializer_list. + * @param __l An initializer_list. + * @param __comp A comparison functor. + * @param __a An allocator object. + * + * Create a %multimap consisting of copies of the elements from + * the initializer_list. This is linear in N if the list is already + * sorted, and NlogN otherwise (where N is @a __l.size()). + */ + 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()); } +#endif + + /** + * @brief Builds a %multimap from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * + * Create a %multimap consisting of copies of the elements from + * [__first,__last). This is linear in N if the range is already sorted, + * and NlogN otherwise (where N is distance(__first,__last)). + */ + template + multimap(_InputIterator __first, _InputIterator __last) + : _M_t() + { _M_t._M_insert_equal(__first, __last); } + + /** + * @brief Builds a %multimap from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __comp A comparison functor. + * @param __a An allocator object. + * + * Create a %multimap consisting of copies of the elements from + * [__first,__last). This is linear in N if the range is already sorted, + * and NlogN otherwise (where N is distance(__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); } + + // FIXME There is no dtor declared, but we should have something generated + // by Doxygen. I don't know what tags to add to this paragraph to make + // that happen: + /** + * The dtor only erases the elements, and note that if the elements + * themselves are pointers, the pointed-to memory is not touched in any + * way. Managing the pointer is the user's responsibility. + */ + + /** + * @brief %Multimap assignment operator. + * @param __x A %multimap of identical element and allocator types. + * + * All the elements of @a __x are copied, but unlike the copy + * constructor, the allocator object is not copied. + */ + multimap& + operator=(const multimap& __x) + { + _M_t = __x._M_t; + return *this; + } + +#if __cplusplus >= 201103L + /** + * @brief %Multimap move assignment operator. + * @param __x A %multimap of identical element and allocator types. + * + * The contents of @a __x are moved into this multimap (without copying). + * @a __x is a valid, but unspecified multimap. + */ + multimap& + operator=(multimap&& __x) + { + // NB: DR 1204. + // NB: DR 675. + this->clear(); + this->swap(__x); + return *this; + } + + /** + * @brief %Multimap list assignment operator. + * @param __l An initializer_list. + * + * This function fills a %multimap with copies of the elements + * in the initializer list @a __l. + * + * Note that the assignment completely changes the %multimap and + * that the resulting %multimap's size is the same as the number + * of elements assigned. Old data may be lost. + */ + multimap& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l.begin(), __l.end()); + return *this; + } +#endif + + /// Get a copy of the memory allocation object. + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return allocator_type(_M_t.get_allocator()); } + + // iterators + /** + * Returns a read/write iterator that points to the first pair in the + * %multimap. Iteration is done in ascending order according to the + * keys. + */ + iterator + begin() _GLIBCXX_NOEXCEPT + { return _M_t.begin(); } + + /** + * Returns a read-only (constant) iterator that points to the first pair + * in the %multimap. Iteration is done in ascending order according to + * the keys. + */ + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return _M_t.begin(); } + + /** + * Returns a read/write iterator that points one past the last pair in + * the %multimap. Iteration is done in ascending order according to the + * keys. + */ + iterator + end() _GLIBCXX_NOEXCEPT + { return _M_t.end(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * pair in the %multimap. Iteration is done in ascending order according + * to the keys. + */ + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return _M_t.end(); } + + /** + * Returns a read/write reverse iterator that points to the last pair in + * the %multimap. Iteration is done in descending order according to the + * keys. + */ + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return _M_t.rbegin(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last pair in the %multimap. Iteration is done in descending order + * according to the keys. + */ + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return _M_t.rbegin(); } + + /** + * Returns a read/write reverse iterator that points to one before the + * first pair in the %multimap. Iteration is done in descending order + * according to the keys. + */ + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return _M_t.rend(); } + + /** + * Returns a read-only (constant) reverse iterator that points to one + * before the first pair in the %multimap. Iteration is done in + * descending order according to the keys. + */ + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return _M_t.rend(); } + +#if __cplusplus >= 201103L + /** + * Returns a read-only (constant) iterator that points to the first pair + * in the %multimap. Iteration is done in ascending order according to + * the keys. + */ + const_iterator + cbegin() const noexcept + { return _M_t.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * pair in the %multimap. Iteration is done in ascending order according + * to the keys. + */ + const_iterator + cend() const noexcept + { return _M_t.end(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last pair in the %multimap. Iteration is done in descending order + * according to the keys. + */ + const_reverse_iterator + crbegin() const noexcept + { return _M_t.rbegin(); } + + /** + * Returns a read-only (constant) reverse iterator that points to one + * before the first pair in the %multimap. Iteration is done in + * descending order according to the keys. + */ + const_reverse_iterator + crend() const noexcept + { return _M_t.rend(); } +#endif + + // capacity + /** Returns true if the %multimap is empty. */ + bool + empty() const _GLIBCXX_NOEXCEPT + { return _M_t.empty(); } + + /** Returns the size of the %multimap. */ + size_type + size() const _GLIBCXX_NOEXCEPT + { return _M_t.size(); } + + /** Returns the maximum size of the %multimap. */ + size_type + max_size() const _GLIBCXX_NOEXCEPT + { return _M_t.max_size(); } + + // modifiers +#if __cplusplus >= 201103L + /** + * @brief Build and insert a std::pair into the %multimap. + * + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * + * @return An iterator that points to the inserted (key,value) pair. + * + * This function builds and inserts a (key, value) %pair into the + * %multimap. + * Contrary to a std::map the %multimap does not rely on unique keys and + * thus multiple pairs with the same key can be inserted. + * + * Insertion requires logarithmic time. + */ + template + iterator + emplace(_Args&&... __args) + { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } + + /** + * @brief Builds and inserts a std::pair into the %multimap. + * + * @param __pos An iterator that serves as a hint as to where the pair + * should be inserted. + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * @return An iterator that points to the inserted (key,value) pair. + * + * This function inserts a (key, value) pair into the %multimap. + * Contrary to a std::map the %multimap does not rely on unique keys and + * thus multiple pairs with the same key can be inserted. + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * For more on @a hinting, see: + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * + * Insertion requires logarithmic time (if the hint is not taken). + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + return _M_t._M_emplace_hint_equal(__pos, + std::forward<_Args>(__args)...); + } +#endif + + /** + * @brief Inserts a std::pair into the %multimap. + * @param __x Pair to be inserted (see std::make_pair for easy creation + * of pairs). + * @return An iterator that points to the inserted (key,value) pair. + * + * This function inserts a (key, value) pair into the %multimap. + * Contrary to a std::map the %multimap does not rely on unique keys and + * thus multiple pairs with the same key can be inserted. + * + * Insertion requires logarithmic time. + */ + iterator + insert(const value_type& __x) + { return _M_t._M_insert_equal(__x); } + +#if __cplusplus >= 201103L + template::value>::type> + iterator + insert(_Pair&& __x) + { return _M_t._M_insert_equal(std::forward<_Pair>(__x)); } +#endif + + /** + * @brief Inserts a std::pair into the %multimap. + * @param __position An iterator that serves as a hint as to where the + * pair should be inserted. + * @param __x Pair to be inserted (see std::make_pair for easy creation + * of pairs). + * @return An iterator that points to the inserted (key,value) pair. + * + * This function inserts a (key, value) pair into the %multimap. + * Contrary to a std::map the %multimap does not rely on unique keys and + * thus multiple pairs with the same key can be inserted. + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * For more on @a hinting, see: + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * + * Insertion requires logarithmic time (if the hint is not taken). + */ + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const value_type& __x) +#else + insert(iterator __position, const value_type& __x) +#endif + { return _M_t._M_insert_equal_(__position, __x); } + +#if __cplusplus >= 201103L + template::value>::type> + iterator + insert(const_iterator __position, _Pair&& __x) + { return _M_t._M_insert_equal_(__position, + std::forward<_Pair>(__x)); } +#endif + + /** + * @brief A template function that attempts to insert a range + * of elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_t._M_insert_equal(__first, __last); } + +#if __cplusplus >= 201103L + /** + * @brief Attempts to insert a list of std::pairs into the %multimap. + * @param __l A std::initializer_list of pairs to be + * inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { this->insert(__l.begin(), __l.end()); } +#endif + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + /** + * @brief Erases an element from a %multimap. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from a %multimap. Note that this function only erases the element, + * and that if the element is itself a pointer, the pointed-to memory is + * not touched in any way. Managing the pointer is the user's + * responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_t.erase(__position); } + + // LWG 2059. + _GLIBCXX_ABI_TAG_CXX11 + iterator + erase(iterator __position) + { return _M_t.erase(__position); } +#else + /** + * @brief Erases an element from a %multimap. + * @param __position An iterator pointing to the element to be erased. + * + * This function erases an element, pointed to by the given iterator, + * from a %multimap. Note that this function only erases the element, + * and that if the element is itself a pointer, the pointed-to memory is + * not touched in any way. Managing the pointer is the user's + * responsibility. + */ + void + erase(iterator __position) + { _M_t.erase(__position); } +#endif + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all elements located by the given key from a + * %multimap. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_t.erase(__x); } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + /** + * @brief Erases a [first,last) range of elements from a %multimap. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to be + * erased . + * @return The iterator @a __last. + * + * This function erases a sequence of elements from a %multimap. + * Note that this function only erases the elements, and that if + * the elements themselves are pointers, the pointed-to memory is not + * touched in any way. Managing the pointer is the user's + * responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_t.erase(__first, __last); } +#else + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + /** + * @brief Erases a [first,last) range of elements from a %multimap. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * + * This function erases a sequence of elements from a %multimap. + * Note that this function only erases the elements, and that if + * the elements themselves are pointers, the pointed-to memory is not + * touched in any way. Managing the pointer is the user's + * responsibility. + */ + void + erase(iterator __first, iterator __last) + { _M_t.erase(__first, __last); } +#endif + + /** + * @brief Swaps data with another %multimap. + * @param __x A %multimap of the same element and allocator types. + * + * This exchanges the elements between two multimaps in constant time. + * (It is only swapping a pointer, an integer, and an instance of + * the @c Compare type (which itself is often stateless and empty), so it + * should be quite fast.) + * Note that the global std::swap() function is specialized such that + * std::swap(m1,m2) will feed to this function. + */ + void + swap(multimap& __x) + { _M_t.swap(__x._M_t); } + + /** + * Erases all elements in a %multimap. Note that this function only + * erases the elements, and that if the elements themselves are pointers, + * the pointed-to memory is not touched in any way. Managing the pointer + * is the user's responsibility. + */ + void + clear() _GLIBCXX_NOEXCEPT + { _M_t.clear(); } + + // observers + /** + * Returns the key comparison object out of which the %multimap + * was constructed. + */ + key_compare + key_comp() const + { return _M_t.key_comp(); } + + /** + * Returns a value comparison object, built from the key comparison + * object out of which the %multimap was constructed. + */ + value_compare + value_comp() const + { return value_compare(_M_t.key_comp()); } + + // multimap operations + /** + * @brief Tries to locate an element in a %multimap. + * @param __x Key of (key, value) pair to be located. + * @return Iterator pointing to sought-after element, + * or end() if not found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after %pair. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_t.find(__x); } + + /** + * @brief Tries to locate an element in a %multimap. + * @param __x Key of (key, value) pair to be located. + * @return Read-only (constant) iterator pointing to sought-after + * element, or end() if not found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns a constant + * iterator pointing to the sought after %pair. If unsuccessful it + * returns the past-the-end ( @c end() ) iterator. + */ + const_iterator + find(const key_type& __x) const + { return _M_t.find(__x); } + + /** + * @brief Finds the number of elements with given key. + * @param __x Key of (key, value) pairs to be located. + * @return Number of elements with specified key. + */ + size_type + count(const key_type& __x) const + { return _M_t.count(__x); } + + /** + * @brief Finds the beginning of a subsequence matching given key. + * @param __x Key of (key, value) pair to be located. + * @return Iterator pointing to first element equal to or greater + * than key, or end(). + * + * This function returns the first element of a subsequence of elements + * that matches the given key. If unsuccessful it returns an iterator + * pointing to the first element that has a greater value than given key + * or end() if no such element exists. + */ + iterator + lower_bound(const key_type& __x) + { return _M_t.lower_bound(__x); } + + /** + * @brief Finds the beginning of a subsequence matching given key. + * @param __x Key of (key, value) pair to be located. + * @return Read-only (constant) iterator pointing to first element + * equal to or greater than key, or end(). + * + * This function returns the first element of a subsequence of + * elements that matches the given key. If unsuccessful the + * iterator will point to the next greatest element or, if no + * such greater element exists, to end(). + */ + const_iterator + lower_bound(const key_type& __x) const + { return _M_t.lower_bound(__x); } + + /** + * @brief Finds the end of a subsequence matching given key. + * @param __x Key of (key, value) pair to be located. + * @return Iterator pointing to the first element + * greater than key, or end(). + */ + iterator + upper_bound(const key_type& __x) + { return _M_t.upper_bound(__x); } + + /** + * @brief Finds the end of a subsequence matching given key. + * @param __x Key of (key, value) pair to be located. + * @return Read-only (constant) iterator pointing to first iterator + * greater than key, or end(). + */ + const_iterator + upper_bound(const key_type& __x) const + { return _M_t.upper_bound(__x); } + + /** + * @brief Finds a subsequence matching given key. + * @param __x Key of (key, value) pairs to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + * + * This function is equivalent to + * @code + * std::make_pair(c.lower_bound(val), + * c.upper_bound(val)) + * @endcode + * (but is faster than making the calls separately). + */ + std::pair + equal_range(const key_type& __x) + { return _M_t.equal_range(__x); } + + /** + * @brief Finds a subsequence matching given key. + * @param __x Key of (key, value) pairs to be located. + * @return Pair of read-only (constant) iterators that possibly points + * to the subsequence matching given key. + * + * This function is equivalent to + * @code + * std::make_pair(c.lower_bound(val), + * c.upper_bound(val)) + * @endcode + * (but is faster than making the calls separately). + */ + 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>&); + }; + + /** + * @brief Multimap equality comparison. + * @param __x A %multimap. + * @param __y A %multimap of the same type as @a __x. + * @return True iff the size and elements of the maps are equal. + * + * This is an equivalence relation. It is linear in the size of the + * multimaps. Multimaps are considered equivalent if their sizes are equal, + * and if corresponding elements compare equal. + */ + 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; } + + /** + * @brief Multimap ordering relation. + * @param __x A %multimap. + * @param __y A %multimap of the same type as @a __x. + * @return True iff @a x is lexicographically less than @a y. + * + * This is a total ordering relation. It is linear in the size of the + * multimaps. The elements must be comparable with @c <. + * + * See std::lexicographical_compare() for how the determination is made. + */ + 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; } + + /// Based on operator== + template + inline bool + operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x == __y); } + + /// Based on operator< + template + inline bool + operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return __y < __x; } + + /// Based on operator< + template + inline bool + operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__y < __x); } + + /// Based on operator< + template + inline bool + operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, + const multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { return !(__x < __y); } + + /// See std::multimap::swap(). + template + inline void + swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, + multimap<_Key, _Tp, _Compare, _Alloc>& __y) + { __x.swap(__y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _STL_MULTIMAP_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_multiset.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_multiset.h new file mode 100644 index 0000000..8ceb02a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_multiset.h @@ -0,0 +1,798 @@ +// Multiset implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_multiset.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{set} + */ + +#ifndef _STL_MULTISET_H +#define _STL_MULTISET_H 1 + +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * @brief A standard container made up of elements, which can be retrieved + * in logarithmic time. + * + * @ingroup associative_containers + * + * + * @tparam _Key Type of key objects. + * @tparam _Compare Comparison function object type, defaults to less<_Key>. + * @tparam _Alloc Allocator type, defaults to allocator<_Key>. + * + * Meets the requirements of a container, a + * reversible container, and an + * associative container (using equivalent + * keys). For a @c multiset the key_type and value_type are Key. + * + * Multisets support bidirectional iterators. + * + * The private tree data is declared exactly the same way for set and + * multiset; the distinction is made entirely in how the tree functions are + * called (*_unique versus *_equal, same as the standard). + */ + template , + typename _Alloc = std::allocator<_Key> > + class multiset + { + // concept requirements + typedef typename _Alloc::value_type _Alloc_value_type; + __glibcxx_class_requires(_Key, _SGIAssignableConcept) + __glibcxx_class_requires4(_Compare, bool, _Key, _Key, + _BinaryFunctionConcept) + __glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept) + + public: + // typedefs: + typedef _Key key_type; + typedef _Key value_type; + typedef _Compare key_compare; + typedef _Compare value_compare; + typedef _Alloc allocator_type; + + private: + /// This turns a red-black tree into a [multi]set. + typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type; + + typedef _Rb_tree, + key_compare, _Key_alloc_type> _Rep_type; + /// The actual tree structure. + _Rep_type _M_t; + + public: + typedef typename _Key_alloc_type::pointer pointer; + typedef typename _Key_alloc_type::const_pointer const_pointer; + typedef typename _Key_alloc_type::reference reference; + typedef typename _Key_alloc_type::const_reference const_reference; + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 103. set::iterator is required to be modifiable, + // but this allows modification of keys. + typedef typename _Rep_type::const_iterator iterator; + typedef typename _Rep_type::const_iterator const_iterator; + typedef typename _Rep_type::const_reverse_iterator reverse_iterator; + typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; + typedef typename _Rep_type::size_type size_type; + typedef typename _Rep_type::difference_type difference_type; + + // allocation/deallocation + /** + * @brief Default constructor creates no elements. + */ + multiset() + : _M_t() { } + + /** + * @brief Creates a %multiset with no elements. + * @param __comp Comparator to use. + * @param __a An allocator object. + */ + explicit + multiset(const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Key_alloc_type(__a)) { } + + /** + * @brief Builds a %multiset from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * + * Create a %multiset consisting of copies of the elements from + * [first,last). This is linear in N if the range is already sorted, + * and NlogN otherwise (where N is distance(__first,__last)). + */ + template + multiset(_InputIterator __first, _InputIterator __last) + : _M_t() + { _M_t._M_insert_equal(__first, __last); } + + /** + * @brief Builds a %multiset from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __comp A comparison functor. + * @param __a An allocator object. + * + * Create a %multiset consisting of copies of the elements from + * [__first,__last). This is linear in N if the range is already sorted, + * and NlogN otherwise (where N is distance(__first,__last)). + */ + template + multiset(_InputIterator __first, _InputIterator __last, + const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Key_alloc_type(__a)) + { _M_t._M_insert_equal(__first, __last); } + + /** + * @brief %Multiset copy constructor. + * @param __x A %multiset of identical element and allocator types. + * + * The newly-created %multiset uses a copy of the allocation object used + * by @a __x. + */ + multiset(const multiset& __x) + : _M_t(__x._M_t) { } + +#if __cplusplus >= 201103L + /** + * @brief %Multiset move constructor. + * @param __x A %multiset of identical element and allocator types. + * + * The newly-created %multiset contains the exact contents of @a __x. + * The contents of @a __x are a valid, but unspecified %multiset. + */ + multiset(multiset&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _M_t(std::move(__x._M_t)) { } + + /** + * @brief Builds a %multiset from an initializer_list. + * @param __l An initializer_list. + * @param __comp A comparison functor. + * @param __a An allocator object. + * + * Create a %multiset consisting of copies of the elements from + * the list. This is linear in N if the list is already sorted, + * and NlogN otherwise (where N is @a __l.size()). + */ + multiset(initializer_list __l, + const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Key_alloc_type(__a)) + { _M_t._M_insert_equal(__l.begin(), __l.end()); } +#endif + + /** + * @brief %Multiset assignment operator. + * @param __x A %multiset of identical element and allocator types. + * + * All the elements of @a __x are copied, but unlike the copy + * constructor, the allocator object is not copied. + */ + multiset& + operator=(const multiset& __x) + { + _M_t = __x._M_t; + return *this; + } + +#if __cplusplus >= 201103L + /** + * @brief %Multiset move assignment operator. + * @param __x A %multiset of identical element and allocator types. + * + * The contents of @a __x are moved into this %multiset + * (without copying). @a __x is a valid, but unspecified + * %multiset. + */ + multiset& + operator=(multiset&& __x) + { + // NB: DR 1204. + // NB: DR 675. + this->clear(); + this->swap(__x); + return *this; + } + + /** + * @brief %Multiset list assignment operator. + * @param __l An initializer_list. + * + * This function fills a %multiset with copies of the elements in the + * initializer list @a __l. + * + * Note that the assignment completely changes the %multiset and + * that the resulting %multiset's size is the same as the number + * of elements assigned. Old data may be lost. + */ + multiset& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l.begin(), __l.end()); + return *this; + } +#endif + + // accessors: + + /// Returns the comparison object. + key_compare + key_comp() const + { return _M_t.key_comp(); } + /// Returns the comparison object. + value_compare + value_comp() const + { return _M_t.key_comp(); } + /// Returns the memory allocation object. + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return allocator_type(_M_t.get_allocator()); } + + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %multiset. Iteration is done in ascending order + * according to the keys. + */ + iterator + begin() const _GLIBCXX_NOEXCEPT + { return _M_t.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %multiset. Iteration is done in ascending order + * according to the keys. + */ + iterator + end() const _GLIBCXX_NOEXCEPT + { return _M_t.end(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last element in the %multiset. Iteration is done in descending order + * according to the keys. + */ + reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return _M_t.rbegin(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last element in the %multiset. Iteration is done in descending order + * according to the keys. + */ + reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return _M_t.rend(); } + +#if __cplusplus >= 201103L + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %multiset. Iteration is done in ascending order + * according to the keys. + */ + iterator + cbegin() const noexcept + { return _M_t.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %multiset. Iteration is done in ascending order + * according to the keys. + */ + iterator + cend() const noexcept + { return _M_t.end(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last element in the %multiset. Iteration is done in descending order + * according to the keys. + */ + reverse_iterator + crbegin() const noexcept + { return _M_t.rbegin(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last element in the %multiset. Iteration is done in descending order + * according to the keys. + */ + reverse_iterator + crend() const noexcept + { return _M_t.rend(); } +#endif + + /// Returns true if the %set is empty. + bool + empty() const _GLIBCXX_NOEXCEPT + { return _M_t.empty(); } + + /// Returns the size of the %set. + size_type + size() const _GLIBCXX_NOEXCEPT + { return _M_t.size(); } + + /// Returns the maximum size of the %set. + size_type + max_size() const _GLIBCXX_NOEXCEPT + { return _M_t.max_size(); } + + /** + * @brief Swaps data with another %multiset. + * @param __x A %multiset of the same element and allocator types. + * + * This exchanges the elements between two multisets in constant time. + * (It is only swapping a pointer, an integer, and an instance of the @c + * Compare type (which itself is often stateless and empty), so it should + * be quite fast.) + * Note that the global std::swap() function is specialized such that + * std::swap(s1,s2) will feed to this function. + */ + void + swap(multiset& __x) + { _M_t.swap(__x._M_t); } + + // insert/erase +#if __cplusplus >= 201103L + /** + * @brief Builds and inserts an element into the %multiset. + * @param __args Arguments used to generate the element instance to be + * inserted. + * @return An iterator that points to the inserted element. + * + * This function inserts an element into the %multiset. Contrary + * to a std::set the %multiset does not rely on unique keys and thus + * multiple copies of the same element can be inserted. + * + * Insertion requires logarithmic time. + */ + template + iterator + emplace(_Args&&... __args) + { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } + + /** + * @brief Builds and inserts an element into the %multiset. + * @param __pos An iterator that serves as a hint as to where the + * element should be inserted. + * @param __args Arguments used to generate the element instance to be + * inserted. + * @return An iterator that points to the inserted element. + * + * This function inserts an element into the %multiset. Contrary + * to a std::set the %multiset does not rely on unique keys and thus + * multiple copies of the same element can be inserted. + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * for more on @a hinting. + * + * Insertion requires logarithmic time (if the hint is not taken). + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + return _M_t._M_emplace_hint_equal(__pos, + std::forward<_Args>(__args)...); + } +#endif + + /** + * @brief Inserts an element into the %multiset. + * @param __x Element to be inserted. + * @return An iterator that points to the inserted element. + * + * This function inserts an element into the %multiset. Contrary + * to a std::set the %multiset does not rely on unique keys and thus + * multiple copies of the same element can be inserted. + * + * Insertion requires logarithmic time. + */ + iterator + insert(const value_type& __x) + { return _M_t._M_insert_equal(__x); } + +#if __cplusplus >= 201103L + iterator + insert(value_type&& __x) + { return _M_t._M_insert_equal(std::move(__x)); } +#endif + + /** + * @brief Inserts an element into the %multiset. + * @param __position An iterator that serves as a hint as to where the + * element should be inserted. + * @param __x Element to be inserted. + * @return An iterator that points to the inserted element. + * + * This function inserts an element into the %multiset. Contrary + * to a std::set the %multiset does not rely on unique keys and thus + * multiple copies of the same element can be inserted. + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * for more on @a hinting. + * + * Insertion requires logarithmic time (if the hint is not taken). + */ + iterator + insert(const_iterator __position, const value_type& __x) + { return _M_t._M_insert_equal_(__position, __x); } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, value_type&& __x) + { return _M_t._M_insert_equal_(__position, std::move(__x)); } +#endif + + /** + * @brief A template function that tries to insert a range of elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_t._M_insert_equal(__first, __last); } + +#if __cplusplus >= 201103L + /** + * @brief Attempts to insert a list of elements into the %multiset. + * @param __l A std::initializer_list of elements + * to be inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { this->insert(__l.begin(), __l.end()); } +#endif + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + /** + * @brief Erases an element from a %multiset. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from a %multiset. Note that this function only erases the element, + * and that if the element is itself a pointer, the pointed-to memory is + * not touched in any way. Managing the pointer is the user's + * responsibility. + */ + _GLIBCXX_ABI_TAG_CXX11 + iterator + erase(const_iterator __position) + { return _M_t.erase(__position); } +#else + /** + * @brief Erases an element from a %multiset. + * @param __position An iterator pointing to the element to be erased. + * + * This function erases an element, pointed to by the given iterator, + * from a %multiset. Note that this function only erases the element, + * and that if the element is itself a pointer, the pointed-to memory is + * not touched in any way. Managing the pointer is the user's + * responsibility. + */ + void + erase(iterator __position) + { _M_t.erase(__position); } +#endif + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all elements located by the given key from a + * %multiset. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_t.erase(__x); } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + /** + * @brief Erases a [first,last) range of elements from a %multiset. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a last. + * + * This function erases a sequence of elements from a %multiset. + * Note that this function only erases the elements, and that if + * the elements themselves are pointers, the pointed-to memory is not + * touched in any way. Managing the pointer is the user's + * responsibility. + */ + _GLIBCXX_ABI_TAG_CXX11 + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_t.erase(__first, __last); } +#else + /** + * @brief Erases a [first,last) range of elements from a %multiset. + * @param first Iterator pointing to the start of the range to be + * erased. + * @param last Iterator pointing to the end of the range to be erased. + * + * This function erases a sequence of elements from a %multiset. + * Note that this function only erases the elements, and that if + * the elements themselves are pointers, the pointed-to memory is not + * touched in any way. Managing the pointer is the user's + * responsibility. + */ + void + erase(iterator __first, iterator __last) + { _M_t.erase(__first, __last); } +#endif + + /** + * Erases all elements in a %multiset. Note that this function only + * erases the elements, and that if the elements themselves are pointers, + * the pointed-to memory is not touched in any way. Managing the pointer + * is the user's responsibility. + */ + void + clear() _GLIBCXX_NOEXCEPT + { _M_t.clear(); } + + // multiset operations: + + /** + * @brief Finds the number of elements with given key. + * @param __x Key of elements to be located. + * @return Number of elements with specified key. + */ + size_type + count(const key_type& __x) const + { return _M_t.count(__x); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + //@{ + /** + * @brief Tries to locate an element in a %set. + * @param __x Element to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_t.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_t.find(__x); } + //@} + + //@{ + /** + * @brief Finds the beginning of a subsequence matching given key. + * @param __x Key to be located. + * @return Iterator pointing to first element equal to or greater + * than key, or end(). + * + * This function returns the first element of a subsequence of elements + * that matches the given key. If unsuccessful it returns an iterator + * pointing to the first element that has a greater value than given key + * or end() if no such element exists. + */ + 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); } + //@} + + //@{ + /** + * @brief Finds the end of a subsequence matching given key. + * @param __x Key to be located. + * @return Iterator pointing to the first element + * greater than key, or end(). + */ + 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); } + //@} + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + * + * This function is equivalent to + * @code + * std::make_pair(c.lower_bound(val), + * c.upper_bound(val)) + * @endcode + * (but is faster than making the calls separately). + * + * This function probably only makes sense for multisets. + */ + 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 multiset<_K1, _C1, _A1>&, + const multiset<_K1, _C1, _A1>&); + + template + friend bool + operator< (const multiset<_K1, _C1, _A1>&, + const multiset<_K1, _C1, _A1>&); + }; + + /** + * @brief Multiset equality comparison. + * @param __x A %multiset. + * @param __y A %multiset of the same type as @a __x. + * @return True iff the size and elements of the multisets are equal. + * + * This is an equivalence relation. It is linear in the size of the + * multisets. + * Multisets are considered equivalent if their sizes are equal, and if + * corresponding elements compare equal. + */ + template + inline bool + operator==(const multiset<_Key, _Compare, _Alloc>& __x, + const multiset<_Key, _Compare, _Alloc>& __y) + { return __x._M_t == __y._M_t; } + + /** + * @brief Multiset ordering relation. + * @param __x A %multiset. + * @param __y A %multiset of the same type as @a __x. + * @return True iff @a __x is lexicographically less than @a __y. + * + * This is a total ordering relation. It is linear in the size of the + * maps. The elements must be comparable with @c <. + * + * See std::lexicographical_compare() for how the determination is made. + */ + template + inline bool + operator<(const multiset<_Key, _Compare, _Alloc>& __x, + const multiset<_Key, _Compare, _Alloc>& __y) + { return __x._M_t < __y._M_t; } + + /// Returns !(x == y). + template + inline bool + operator!=(const multiset<_Key, _Compare, _Alloc>& __x, + const multiset<_Key, _Compare, _Alloc>& __y) + { return !(__x == __y); } + + /// Returns y < x. + template + inline bool + operator>(const multiset<_Key,_Compare,_Alloc>& __x, + const multiset<_Key,_Compare,_Alloc>& __y) + { return __y < __x; } + + /// Returns !(y < x) + template + inline bool + operator<=(const multiset<_Key, _Compare, _Alloc>& __x, + const multiset<_Key, _Compare, _Alloc>& __y) + { return !(__y < __x); } + + /// Returns !(x < y) + template + inline bool + operator>=(const multiset<_Key, _Compare, _Alloc>& __x, + const multiset<_Key, _Compare, _Alloc>& __y) + { return !(__x < __y); } + + /// See std::multiset::swap(). + template + inline void + swap(multiset<_Key, _Compare, _Alloc>& __x, + multiset<_Key, _Compare, _Alloc>& __y) + { __x.swap(__y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _STL_MULTISET_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_numeric.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_numeric.h new file mode 100644 index 0000000..8e88c1b --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_numeric.h @@ -0,0 +1,387 @@ +// Numeric functions implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_numeric.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{numeric} + */ + +#ifndef _STL_NUMERIC_H +#define _STL_NUMERIC_H 1 + +#include +#include +#include // For _GLIBCXX_MOVE + +#if __cplusplus >= 201103L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief Create a range of sequentially increasing values. + * + * For each element in the range @p [first,last) assigns @p value and + * increments @p value as if by @p ++value. + * + * @param __first Start of range. + * @param __last End of range. + * @param __value Starting value. + * @return Nothing. + */ + template + void + iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + __glibcxx_function_requires(_ConvertibleConcept<_Tp, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first) + { + *__first = __value; + ++__value; + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_ALGO + + /** + * @brief Accumulate values in a range. + * + * Accumulates the values in the range [first,last) using operator+(). The + * initial value is @a init. The values are processed in order. + * + * @param __first Start of range. + * @param __last End of range. + * @param __init Starting value to add other values to. + * @return The final sum. + */ + template + inline _Tp + accumulate(_InputIterator __first, _InputIterator __last, _Tp __init) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first) + __init = __init + *__first; + return __init; + } + + /** + * @brief Accumulate values in a range with operation. + * + * Accumulates the values in the range [first,last) using the function + * object @p __binary_op. The initial value is @p __init. The values are + * processed in order. + * + * @param __first Start of range. + * @param __last End of range. + * @param __init Starting value to add other values to. + * @param __binary_op Function object to accumulate with. + * @return The final sum. + */ + template + inline _Tp + accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, + _BinaryOperation __binary_op) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_requires_valid_range(__first, __last); + + for (; __first != __last; ++__first) + __init = __binary_op(__init, *__first); + return __init; + } + + /** + * @brief Compute inner product of two ranges. + * + * Starting with an initial value of @p __init, multiplies successive + * elements from the two ranges and adds each product into the accumulated + * value using operator+(). The values in the ranges are processed in + * order. + * + * @param __first1 Start of range 1. + * @param __last1 End of range 1. + * @param __first2 Start of range 2. + * @param __init Starting value to add other values to. + * @return The final inner product. + */ + template + inline _Tp + inner_product(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _Tp __init) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_requires_valid_range(__first1, __last1); + + for (; __first1 != __last1; ++__first1, ++__first2) + __init = __init + (*__first1 * *__first2); + return __init; + } + + /** + * @brief Compute inner product of two ranges. + * + * Starting with an initial value of @p __init, applies @p __binary_op2 to + * successive elements from the two ranges and accumulates each result into + * the accumulated value using @p __binary_op1. The values in the ranges are + * processed in order. + * + * @param __first1 Start of range 1. + * @param __last1 End of range 1. + * @param __first2 Start of range 2. + * @param __init Starting value to add other values to. + * @param __binary_op1 Function object to accumulate with. + * @param __binary_op2 Function object to apply to pairs of input values. + * @return The final inner product. + */ + template + inline _Tp + inner_product(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _Tp __init, + _BinaryOperation1 __binary_op1, + _BinaryOperation2 __binary_op2) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_requires_valid_range(__first1, __last1); + + for (; __first1 != __last1; ++__first1, ++__first2) + __init = __binary_op1(__init, __binary_op2(*__first1, *__first2)); + return __init; + } + + /** + * @brief Return list of partial sums + * + * Accumulates the values in the range [first,last) using the @c + operator. + * As each successive input value is added into the total, that partial sum + * is written to @p __result. Therefore, the first value in @p __result is + * the first value of the input, the second value in @p __result is the sum + * of the first and second input values, and so on. + * + * @param __first Start of input range. + * @param __last End of input range. + * @param __result Output sum. + * @return Iterator pointing just beyond the values written to __result. + */ + template + _OutputIterator + partial_sum(_InputIterator __first, _InputIterator __last, + _OutputIterator __result) + { + typedef typename iterator_traits<_InputIterator>::value_type _ValueType; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __result; + _ValueType __value = *__first; + *__result = __value; + while (++__first != __last) + { + __value = __value + *__first; + *++__result = __value; + } + return ++__result; + } + + /** + * @brief Return list of partial sums + * + * Accumulates the values in the range [first,last) using @p __binary_op. + * As each successive input value is added into the total, that partial sum + * is written to @p __result. Therefore, the first value in @p __result is + * the first value of the input, the second value in @p __result is the sum + * of the first and second input values, and so on. + * + * @param __first Start of input range. + * @param __last End of input range. + * @param __result Output sum. + * @param __binary_op Function object. + * @return Iterator pointing just beyond the values written to __result. + */ + template + _OutputIterator + partial_sum(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _BinaryOperation __binary_op) + { + typedef typename iterator_traits<_InputIterator>::value_type _ValueType; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __result; + _ValueType __value = *__first; + *__result = __value; + while (++__first != __last) + { + __value = __binary_op(__value, *__first); + *++__result = __value; + } + return ++__result; + } + + /** + * @brief Return differences between adjacent values. + * + * Computes the difference between adjacent values in the range + * [first,last) using operator-() and writes the result to @p __result. + * + * @param __first Start of input range. + * @param __last End of input range. + * @param __result Output sums. + * @return Iterator pointing just beyond the values written to result. + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS + * DR 539. partial_sum and adjacent_difference should mention requirements + */ + template + _OutputIterator + adjacent_difference(_InputIterator __first, + _InputIterator __last, _OutputIterator __result) + { + typedef typename iterator_traits<_InputIterator>::value_type _ValueType; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __result; + _ValueType __value = *__first; + *__result = __value; + while (++__first != __last) + { + _ValueType __tmp = *__first; + *++__result = __tmp - __value; + __value = _GLIBCXX_MOVE(__tmp); + } + return ++__result; + } + + /** + * @brief Return differences between adjacent values. + * + * Computes the difference between adjacent values in the range + * [__first,__last) using the function object @p __binary_op and writes the + * result to @p __result. + * + * @param __first Start of input range. + * @param __last End of input range. + * @param __result Output sum. + * @param __binary_op Function object. + * @return Iterator pointing just beyond the values written to result. + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS + * DR 539. partial_sum and adjacent_difference should mention requirements + */ + template + _OutputIterator + adjacent_difference(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _BinaryOperation __binary_op) + { + typedef typename iterator_traits<_InputIterator>::value_type _ValueType; + + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + _ValueType>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return __result; + _ValueType __value = *__first; + *__result = __value; + while (++__first != __last) + { + _ValueType __tmp = *__first; + *++__result = __binary_op(__tmp, __value); + __value = _GLIBCXX_MOVE(__tmp); + } + return ++__result; + } + +_GLIBCXX_END_NAMESPACE_ALGO +} // namespace std + +#endif /* _STL_NUMERIC_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_pair.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_pair.h new file mode 100644 index 0000000..9225016 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_pair.h @@ -0,0 +1,295 @@ +// Pair implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_pair.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{utility} + */ + +#ifndef _STL_PAIR_H +#define _STL_PAIR_H 1 + +#include // for std::move / std::forward, and std::swap + +#if __cplusplus >= 201103L +#include // for std::__decay_and_strip too +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup utilities + * @{ + */ + +#if __cplusplus >= 201103L + /// piecewise_construct_t + struct piecewise_construct_t { }; + + /// piecewise_construct + constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); + + // Forward declarations. + template + class tuple; + + template + struct _Index_tuple; +#endif + + /** + * @brief Struct holding two objects of arbitrary type. + * + * @tparam _T1 Type of first object. + * @tparam _T2 Type of second object. + */ + template + struct pair + { + typedef _T1 first_type; /// @c first_type is the first bound type + typedef _T2 second_type; /// @c second_type is the second bound type + + _T1 first; /// @c first is a copy of the first object + _T2 second; /// @c second is a copy of the second object + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 265. std::pair::pair() effects overly restrictive + /** The default constructor creates @c first and @c second using their + * respective default constructors. */ + _GLIBCXX_CONSTEXPR pair() + : first(), second() { } + + /** Two objects may be passed to a @c pair constructor to be copied. */ + _GLIBCXX_CONSTEXPR pair(const _T1& __a, const _T2& __b) + : first(__a), second(__b) { } + + /** There is also a templated copy ctor for the @c pair class itself. */ +#if __cplusplus < 201103L + template + pair(const pair<_U1, _U2>& __p) + : first(__p.first), second(__p.second) { } +#else + 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; + + // DR 811. + 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...>); +#endif + }; + + /// Two pairs of the same type are equal iff their members are equal. + template + inline _GLIBCXX_CONSTEXPR bool + operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return __x.first == __y.first && __x.second == __y.second; } + + /// + template + inline _GLIBCXX_CONSTEXPR bool + operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return __x.first < __y.first + || (!(__y.first < __x.first) && __x.second < __y.second); } + + /// Uses @c operator== to find the result. + template + inline _GLIBCXX_CONSTEXPR bool + operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return !(__x == __y); } + + /// Uses @c operator< to find the result. + template + inline _GLIBCXX_CONSTEXPR bool + operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return __y < __x; } + + /// Uses @c operator< to find the result. + template + inline _GLIBCXX_CONSTEXPR bool + operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return !(__y < __x); } + + /// Uses @c operator< to find the result. + template + inline _GLIBCXX_CONSTEXPR bool + operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) + { return !(__x < __y); } + +#if __cplusplus >= 201103L + /// See std::pair::swap(). + // Note: no std::swap overloads in C++03 mode, this has performance + // implications, see, eg, libstdc++/38466. + template + inline void + swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } +#endif + + /** + * @brief A convenience wrapper for creating a pair from two objects. + * @param __x The first object. + * @param __y The second object. + * @return A newly-constructed pair<> object of the appropriate type. + * + * The standard requires that the objects be passed by reference-to-const, + * but LWG issue #181 says they should be passed by const value. We follow + * the LWG by default. + */ + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 181. make_pair() unintended behavior +#if __cplusplus >= 201103L + // NB: DR 706. + template + 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)); + } +#else + template + inline pair<_T1, _T2> + make_pair(_T1 __x, _T2 __y) + { return pair<_T1, _T2>(__x, __y); } +#endif + + /// @} + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif /* _STL_PAIR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_queue.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_queue.h new file mode 100644 index 0000000..2a2c053 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_queue.h @@ -0,0 +1,569 @@ +// Queue implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_queue.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{queue} + */ + +#ifndef _STL_QUEUE_H +#define _STL_QUEUE_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief A standard container giving FIFO behavior. + * + * @ingroup sequences + * + * @tparam _Tp Type of element. + * @tparam _Sequence Type of underlying sequence, defaults to deque<_Tp>. + * + * Meets many of the requirements of a + * container, + * but does not define anything to do with iterators. Very few of the + * other standard container interfaces are defined. + * + * This is not a true container, but an @e adaptor. It holds another + * container, and provides a wrapper interface to that container. The + * wrapper is what enforces strict first-in-first-out %queue behavior. + * + * The second template parameter defines the type of the underlying + * sequence/container. It defaults to std::deque, but it can be any type + * that supports @c front, @c back, @c push_back, and @c pop_front, + * such as std::list or an appropriate user-defined type. + * + * Members not found in @a normal containers are @c container_type, + * which is a typedef for the second Sequence parameter, and @c push and + * @c pop, which are standard %queue/FIFO operations. + */ + template > + class queue + { + // concept requirements + typedef typename _Sequence::value_type _Sequence_value_type; + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires(_Sequence, _FrontInsertionSequenceConcept) + __glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept) + __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept) + + template + friend bool + operator==(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&); + + template + friend bool + operator<(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&); + + public: + typedef typename _Sequence::value_type value_type; + typedef typename _Sequence::reference reference; + typedef typename _Sequence::const_reference const_reference; + typedef typename _Sequence::size_type size_type; + typedef _Sequence container_type; + + protected: + /** + * 'c' is the underlying container. Maintainers wondering why + * this isn't uglified as per style guidelines should note that + * this name is specified in the standard, [23.2.3.1]. (Why? + * Presumably for the same reason that it's protected instead + * of private: to allow derivation. But none of the other + * containers allow for derivation. Odd.) + */ + _Sequence c; + + public: + /** + * @brief Default constructor creates no elements. + */ +#if __cplusplus < 201103L + explicit + queue(const _Sequence& __c = _Sequence()) + : c(__c) { } +#else + explicit + queue(const _Sequence& __c) + : c(__c) { } + + explicit + queue(_Sequence&& __c = _Sequence()) + : c(std::move(__c)) { } +#endif + + /** + * Returns true if the %queue is empty. + */ + bool + empty() const + { return c.empty(); } + + /** Returns the number of elements in the %queue. */ + size_type + size() const + { return c.size(); } + + /** + * Returns a read/write reference to the data at the first + * element of the %queue. + */ + reference + front() + { + __glibcxx_requires_nonempty(); + return c.front(); + } + + /** + * Returns a read-only (constant) reference to the data at the first + * element of the %queue. + */ + const_reference + front() const + { + __glibcxx_requires_nonempty(); + return c.front(); + } + + /** + * Returns a read/write reference to the data at the last + * element of the %queue. + */ + reference + back() + { + __glibcxx_requires_nonempty(); + return c.back(); + } + + /** + * Returns a read-only (constant) reference to the data at the last + * element of the %queue. + */ + const_reference + back() const + { + __glibcxx_requires_nonempty(); + return c.back(); + } + + /** + * @brief Add data to the end of the %queue. + * @param __x Data to be added. + * + * This is a typical %queue operation. The function creates an + * element at the end of the %queue and assigns the given data + * to it. The time complexity of the operation depends on the + * underlying sequence. + */ + void + push(const value_type& __x) + { c.push_back(__x); } + +#if __cplusplus >= 201103L + void + push(value_type&& __x) + { c.push_back(std::move(__x)); } + + template + void + emplace(_Args&&... __args) + { c.emplace_back(std::forward<_Args>(__args)...); } +#endif + + /** + * @brief Removes first element. + * + * This is a typical %queue operation. It shrinks the %queue by one. + * The time complexity of the operation depends on the underlying + * sequence. + * + * Note that no data is returned, and if the first element's + * data is needed, it should be retrieved before pop() is + * called. + */ + void + pop() + { + __glibcxx_requires_nonempty(); + c.pop_front(); + } + +#if __cplusplus >= 201103L + void + swap(queue& __q) + noexcept(noexcept(swap(c, __q.c))) + { + using std::swap; + swap(c, __q.c); + } +#endif + }; + + /** + * @brief Queue equality comparison. + * @param __x A %queue. + * @param __y A %queue of the same type as @a __x. + * @return True iff the size and elements of the queues are equal. + * + * This is an equivalence relation. Complexity and semantics depend on the + * underlying sequence type, but the expected rules are: this relation is + * linear in the size of the sequences, and queues are considered equivalent + * if their sequences compare equal. + */ + template + inline bool + operator==(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y) + { return __x.c == __y.c; } + + /** + * @brief Queue ordering relation. + * @param __x A %queue. + * @param __y A %queue of the same type as @a x. + * @return True iff @a __x is lexicographically less than @a __y. + * + * This is an total ordering relation. Complexity and semantics + * depend on the underlying sequence type, but the expected rules + * are: this relation is linear in the size of the sequences, the + * elements must be comparable with @c <, and + * std::lexicographical_compare() is usually used to make the + * determination. + */ + template + inline bool + operator<(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y) + { return __x.c < __y.c; } + + /// Based on operator== + template + inline bool + operator!=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y) + { return !(__x == __y); } + + /// Based on operator< + template + inline bool + operator>(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y) + { return __y < __x; } + + /// Based on operator< + template + inline bool + operator<=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y) + { return !(__y < __x); } + + /// Based on operator< + template + inline bool + operator>=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y) + { return !(__x < __y); } + +#if __cplusplus >= 201103L + template + inline void + swap(queue<_Tp, _Seq>& __x, queue<_Tp, _Seq>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + struct uses_allocator, _Alloc> + : public uses_allocator<_Seq, _Alloc>::type { }; +#endif + + /** + * @brief A standard container automatically sorting its contents. + * + * @ingroup sequences + * + * @tparam _Tp Type of element. + * @tparam _Sequence Type of underlying sequence, defaults to vector<_Tp>. + * @tparam _Compare Comparison function object type, defaults to + * less<_Sequence::value_type>. + * + * This is not a true container, but an @e adaptor. It holds + * another container, and provides a wrapper interface to that + * container. The wrapper is what enforces priority-based sorting + * and %queue behavior. Very few of the standard container/sequence + * interface requirements are met (e.g., iterators). + * + * The second template parameter defines the type of the underlying + * sequence/container. It defaults to std::vector, but it can be + * any type that supports @c front(), @c push_back, @c pop_back, + * and random-access iterators, such as std::deque or an + * appropriate user-defined type. + * + * The third template parameter supplies the means of making + * priority comparisons. It defaults to @c less but + * can be anything defining a strict weak ordering. + * + * Members not found in @a normal containers are @c container_type, + * which is a typedef for the second Sequence parameter, and @c + * push, @c pop, and @c top, which are standard %queue operations. + * + * @note No equality/comparison operators are provided for + * %priority_queue. + * + * @note Sorting of the elements takes place as they are added to, + * and removed from, the %priority_queue using the + * %priority_queue's member functions. If you access the elements + * by other means, and change their data such that the sorting + * order would be different, the %priority_queue will not re-sort + * the elements for you. (How could it know to do so?) + */ + template, + typename _Compare = less > + class priority_queue + { + // concept requirements + typedef typename _Sequence::value_type _Sequence_value_type; + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires(_Sequence, _SequenceConcept) + __glibcxx_class_requires(_Sequence, _RandomAccessContainerConcept) + __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept) + __glibcxx_class_requires4(_Compare, bool, _Tp, _Tp, + _BinaryFunctionConcept) + + public: + typedef typename _Sequence::value_type value_type; + typedef typename _Sequence::reference reference; + typedef typename _Sequence::const_reference const_reference; + typedef typename _Sequence::size_type size_type; + typedef _Sequence container_type; + + protected: + // See queue::c for notes on these names. + _Sequence c; + _Compare comp; + + public: + /** + * @brief Default constructor creates no elements. + */ +#if __cplusplus < 201103L + explicit + priority_queue(const _Compare& __x = _Compare(), + const _Sequence& __s = _Sequence()) + : c(__s), comp(__x) + { std::make_heap(c.begin(), c.end(), comp); } +#else + explicit + priority_queue(const _Compare& __x, + const _Sequence& __s) + : c(__s), comp(__x) + { std::make_heap(c.begin(), c.end(), comp); } + + explicit + priority_queue(const _Compare& __x = _Compare(), + _Sequence&& __s = _Sequence()) + : c(std::move(__s)), comp(__x) + { std::make_heap(c.begin(), c.end(), comp); } +#endif + + /** + * @brief Builds a %queue from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __x A comparison functor describing a strict weak ordering. + * @param __s An initial sequence with which to start. + * + * Begins by copying @a __s, inserting a copy of the elements + * from @a [first,last) into the copy of @a __s, then ordering + * the copy according to @a __x. + * + * For more information on function objects, see the + * documentation on @link functors functor base + * classes@endlink. + */ +#if __cplusplus < 201103L + template + priority_queue(_InputIterator __first, _InputIterator __last, + const _Compare& __x = _Compare(), + const _Sequence& __s = _Sequence()) + : c(__s), comp(__x) + { + __glibcxx_requires_valid_range(__first, __last); + c.insert(c.end(), __first, __last); + std::make_heap(c.begin(), c.end(), comp); + } +#else + template + priority_queue(_InputIterator __first, _InputIterator __last, + const _Compare& __x, + const _Sequence& __s) + : c(__s), comp(__x) + { + __glibcxx_requires_valid_range(__first, __last); + c.insert(c.end(), __first, __last); + std::make_heap(c.begin(), c.end(), comp); + } + + template + priority_queue(_InputIterator __first, _InputIterator __last, + const _Compare& __x = _Compare(), + _Sequence&& __s = _Sequence()) + : c(std::move(__s)), comp(__x) + { + __glibcxx_requires_valid_range(__first, __last); + c.insert(c.end(), __first, __last); + std::make_heap(c.begin(), c.end(), comp); + } +#endif + + /** + * Returns true if the %queue is empty. + */ + bool + empty() const + { return c.empty(); } + + /** Returns the number of elements in the %queue. */ + size_type + size() const + { return c.size(); } + + /** + * Returns a read-only (constant) reference to the data at the first + * element of the %queue. + */ + const_reference + top() const + { + __glibcxx_requires_nonempty(); + return c.front(); + } + + /** + * @brief Add data to the %queue. + * @param __x Data to be added. + * + * This is a typical %queue operation. + * The time complexity of the operation depends on the underlying + * sequence. + */ + void + push(const value_type& __x) + { + c.push_back(__x); + std::push_heap(c.begin(), c.end(), comp); + } + +#if __cplusplus >= 201103L + void + push(value_type&& __x) + { + c.push_back(std::move(__x)); + std::push_heap(c.begin(), c.end(), comp); + } + + template + void + emplace(_Args&&... __args) + { + c.emplace_back(std::forward<_Args>(__args)...); + std::push_heap(c.begin(), c.end(), comp); + } +#endif + + /** + * @brief Removes first element. + * + * This is a typical %queue operation. It shrinks the %queue + * by one. The time complexity of the operation depends on the + * underlying sequence. + * + * Note that no data is returned, and if the first element's + * data is needed, it should be retrieved before pop() is + * called. + */ + void + pop() + { + __glibcxx_requires_nonempty(); + std::pop_heap(c.begin(), c.end(), comp); + c.pop_back(); + } + +#if __cplusplus >= 201103L + void + swap(priority_queue& __pq) + noexcept(noexcept(swap(c, __pq.c)) && noexcept(swap(comp, __pq.comp))) + { + using std::swap; + swap(c, __pq.c); + swap(comp, __pq.comp); + } +#endif + }; + + // No equality/comparison operators are provided for priority_queue. + +#if __cplusplus >= 201103L + template + inline void + swap(priority_queue<_Tp, _Sequence, _Compare>& __x, + priority_queue<_Tp, _Sequence, _Compare>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + struct uses_allocator, _Alloc> + : public uses_allocator<_Sequence, _Alloc>::type { }; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _STL_QUEUE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_raw_storage_iter.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_raw_storage_iter.h new file mode 100644 index 0000000..205c11d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_raw_storage_iter.h @@ -0,0 +1,108 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_raw_storage_iter.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _STL_RAW_STORAGE_ITERATOR_H +#define _STL_RAW_STORAGE_ITERATOR_H 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * This iterator class lets algorithms store their results into + * uninitialized memory. + */ + template + class raw_storage_iterator + : public iterator + { + protected: + _OutputIterator _M_iter; + + public: + explicit + raw_storage_iterator(_OutputIterator __x) + : _M_iter(__x) {} + + raw_storage_iterator& + operator*() { return *this; } + + raw_storage_iterator& + operator=(const _Tp& __element) + { + std::_Construct(std::__addressof(*_M_iter), __element); + return *this; + } + + raw_storage_iterator<_OutputIterator, _Tp>& + operator++() + { + ++_M_iter; + return *this; + } + + raw_storage_iterator<_OutputIterator, _Tp> + operator++(int) + { + raw_storage_iterator<_OutputIterator, _Tp> __tmp = *this; + ++_M_iter; + return __tmp; + } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_relops.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_relops.h new file mode 100644 index 0000000..aa708d7 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_relops.h @@ -0,0 +1,134 @@ +// std::rel_ops implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the, 2009 Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * Copyright (c) 1996,1997 + * Silicon Graphics + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +/** @file bits/stl_relops.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{utility} + * + * Inclusion of this file has been removed from + * all of the other STL headers for safety reasons, except std_utility.h. + * For more information, see the thread of about twenty messages starting + * with http://gcc.gnu.org/ml/libstdc++/2001-01/msg00223.html, or + * http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.ambiguous_overloads + * + * Short summary: the rel_ops operators should be avoided for the present. + */ + +#ifndef _STL_RELOPS_H +#define _STL_RELOPS_H 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ + namespace rel_ops + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** @namespace std::rel_ops + * @brief The generated relational operators are sequestered here. + */ + + /** + * @brief Defines @c != for arbitrary types, in terms of @c ==. + * @param __x A thing. + * @param __y Another thing. + * @return __x != __y + * + * This function uses @c == to determine its result. + */ + template + inline bool + operator!=(const _Tp& __x, const _Tp& __y) + { return !(__x == __y); } + + /** + * @brief Defines @c > for arbitrary types, in terms of @c <. + * @param __x A thing. + * @param __y Another thing. + * @return __x > __y + * + * This function uses @c < to determine its result. + */ + template + inline bool + operator>(const _Tp& __x, const _Tp& __y) + { return __y < __x; } + + /** + * @brief Defines @c <= for arbitrary types, in terms of @c <. + * @param __x A thing. + * @param __y Another thing. + * @return __x <= __y + * + * This function uses @c < to determine its result. + */ + template + inline bool + operator<=(const _Tp& __x, const _Tp& __y) + { return !(__y < __x); } + + /** + * @brief Defines @c >= for arbitrary types, in terms of @c <. + * @param __x A thing. + * @param __y Another thing. + * @return __x >= __y + * + * This function uses @c < to determine its result. + */ + template + inline bool + operator>=(const _Tp& __x, const _Tp& __y) + { return !(__x < __y); } + + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace rel_ops + +} // namespace std + +#endif /* _STL_RELOPS_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_set.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_set.h new file mode 100644 index 0000000..44eb589 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_set.h @@ -0,0 +1,811 @@ +// Set implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_set.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{set} + */ + +#ifndef _STL_SET_H +#define _STL_SET_H 1 + +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * @brief A standard container made up of unique keys, which can be + * retrieved in logarithmic time. + * + * @ingroup associative_containers + * + * @tparam _Key Type of key objects. + * @tparam _Compare Comparison function object type, defaults to less<_Key>. + * @tparam _Alloc Allocator type, defaults to allocator<_Key>. + * + * Meets the requirements of a container, a + * reversible container, and an + * associative container (using unique keys). + * + * Sets support bidirectional iterators. + * + * The private tree data is declared exactly the same way for set and + * multiset; the distinction is made entirely in how the tree functions are + * called (*_unique versus *_equal, same as the standard). + */ + template, + typename _Alloc = std::allocator<_Key> > + class set + { + // concept requirements + typedef typename _Alloc::value_type _Alloc_value_type; + __glibcxx_class_requires(_Key, _SGIAssignableConcept) + __glibcxx_class_requires4(_Compare, bool, _Key, _Key, + _BinaryFunctionConcept) + __glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept) + + public: + // typedefs: + //@{ + /// Public typedefs. + typedef _Key key_type; + typedef _Key value_type; + typedef _Compare key_compare; + typedef _Compare value_compare; + typedef _Alloc allocator_type; + //@} + + private: + typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type; + + typedef _Rb_tree, + key_compare, _Key_alloc_type> _Rep_type; + _Rep_type _M_t; // Red-black tree representing set. + + public: + //@{ + /// Iterator-related typedefs. + typedef typename _Key_alloc_type::pointer pointer; + typedef typename _Key_alloc_type::const_pointer const_pointer; + typedef typename _Key_alloc_type::reference reference; + typedef typename _Key_alloc_type::const_reference const_reference; + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 103. set::iterator is required to be modifiable, + // but this allows modification of keys. + typedef typename _Rep_type::const_iterator iterator; + typedef typename _Rep_type::const_iterator const_iterator; + typedef typename _Rep_type::const_reverse_iterator reverse_iterator; + typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; + typedef typename _Rep_type::size_type size_type; + typedef typename _Rep_type::difference_type difference_type; + //@} + + // allocation/deallocation + /** + * @brief Default constructor creates no elements. + */ + set() + : _M_t() { } + + /** + * @brief Creates a %set with no elements. + * @param __comp Comparator to use. + * @param __a An allocator object. + */ + explicit + set(const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Key_alloc_type(__a)) { } + + /** + * @brief Builds a %set from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * + * Create a %set consisting of copies of the elements from + * [__first,__last). This is linear in N if the range is + * already sorted, and NlogN otherwise (where N is + * distance(__first,__last)). + */ + template + set(_InputIterator __first, _InputIterator __last) + : _M_t() + { _M_t._M_insert_unique(__first, __last); } + + /** + * @brief Builds a %set from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __comp A comparison functor. + * @param __a An allocator object. + * + * Create a %set consisting of copies of the elements from + * [__first,__last). This is linear in N if the range is + * already sorted, and NlogN otherwise (where N is + * distance(__first,__last)). + */ + template + set(_InputIterator __first, _InputIterator __last, + const _Compare& __comp, + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Key_alloc_type(__a)) + { _M_t._M_insert_unique(__first, __last); } + + /** + * @brief %Set copy constructor. + * @param __x A %set of identical element and allocator types. + * + * The newly-created %set uses a copy of the allocation object used + * by @a __x. + */ + set(const set& __x) + : _M_t(__x._M_t) { } + +#if __cplusplus >= 201103L + /** + * @brief %Set move constructor + * @param __x A %set of identical element and allocator types. + * + * The newly-created %set contains the exact contents of @a x. + * The contents of @a x are a valid, but unspecified %set. + */ + set(set&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _M_t(std::move(__x._M_t)) { } + + /** + * @brief Builds a %set from an initializer_list. + * @param __l An initializer_list. + * @param __comp A comparison functor. + * @param __a An allocator object. + * + * Create a %set consisting of copies of the elements in the list. + * This is linear in N if the list is already sorted, and NlogN + * otherwise (where N is @a __l.size()). + */ + set(initializer_list __l, + const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _M_t(__comp, _Key_alloc_type(__a)) + { _M_t._M_insert_unique(__l.begin(), __l.end()); } +#endif + + /** + * @brief %Set assignment operator. + * @param __x A %set of identical element and allocator types. + * + * All the elements of @a __x are copied, but unlike the copy + * constructor, the allocator object is not copied. + */ + set& + operator=(const set& __x) + { + _M_t = __x._M_t; + return *this; + } + +#if __cplusplus >= 201103L + /** + * @brief %Set move assignment operator. + * @param __x A %set of identical element and allocator types. + * + * The contents of @a __x are moved into this %set (without copying). + * @a __x is a valid, but unspecified %set. + */ + set& + operator=(set&& __x) + { + // NB: DR 1204. + // NB: DR 675. + this->clear(); + this->swap(__x); + return *this; + } + + /** + * @brief %Set list assignment operator. + * @param __l An initializer_list. + * + * This function fills a %set with copies of the elements in the + * initializer list @a __l. + * + * Note that the assignment completely changes the %set and + * that the resulting %set's size is the same as the number + * of elements assigned. Old data may be lost. + */ + set& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l.begin(), __l.end()); + return *this; + } +#endif + + // accessors: + + /// Returns the comparison object with which the %set was constructed. + key_compare + key_comp() const + { return _M_t.key_comp(); } + /// Returns the comparison object with which the %set was constructed. + value_compare + value_comp() const + { return _M_t.key_comp(); } + /// Returns the allocator object with which the %set was constructed. + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return allocator_type(_M_t.get_allocator()); } + + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %set. Iteration is done in ascending order according + * to the keys. + */ + iterator + begin() const _GLIBCXX_NOEXCEPT + { return _M_t.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %set. Iteration is done in ascending order according + * to the keys. + */ + iterator + end() const _GLIBCXX_NOEXCEPT + { return _M_t.end(); } + + /** + * Returns a read-only (constant) iterator that points to the last + * element in the %set. Iteration is done in descending order according + * to the keys. + */ + reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return _M_t.rbegin(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last pair in the %set. Iteration is done in descending order + * according to the keys. + */ + reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return _M_t.rend(); } + +#if __cplusplus >= 201103L + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %set. Iteration is done in ascending order according + * to the keys. + */ + iterator + cbegin() const noexcept + { return _M_t.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %set. Iteration is done in ascending order according + * to the keys. + */ + iterator + cend() const noexcept + { return _M_t.end(); } + + /** + * Returns a read-only (constant) iterator that points to the last + * element in the %set. Iteration is done in descending order according + * to the keys. + */ + reverse_iterator + crbegin() const noexcept + { return _M_t.rbegin(); } + + /** + * Returns a read-only (constant) reverse iterator that points to the + * last pair in the %set. Iteration is done in descending order + * according to the keys. + */ + reverse_iterator + crend() const noexcept + { return _M_t.rend(); } +#endif + + /// Returns true if the %set is empty. + bool + empty() const _GLIBCXX_NOEXCEPT + { return _M_t.empty(); } + + /// Returns the size of the %set. + size_type + size() const _GLIBCXX_NOEXCEPT + { return _M_t.size(); } + + /// Returns the maximum size of the %set. + size_type + max_size() const _GLIBCXX_NOEXCEPT + { return _M_t.max_size(); } + + /** + * @brief Swaps data with another %set. + * @param __x A %set of the same element and allocator types. + * + * This exchanges the elements between two sets in constant + * time. (It is only swapping a pointer, an integer, and an + * instance of the @c Compare type (which itself is often + * stateless and empty), so it should be quite fast.) Note + * that the global std::swap() function is specialized such + * that std::swap(s1,s2) will feed to this function. + */ + void + swap(set& __x) + { _M_t.swap(__x._M_t); } + + // insert/erase +#if __cplusplus >= 201103L + /** + * @brief Attempts to build and insert an element into the %set. + * @param __args Arguments used to generate an element. + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted element, and the second is a bool + * that is true if the element was actually inserted. + * + * This function attempts to build and insert an element into the %set. + * A %set relies on unique keys and thus an element is only inserted if + * it is not already present in the %set. + * + * Insertion requires logarithmic time. + */ + template + std::pair + emplace(_Args&&... __args) + { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } + + /** + * @brief Attempts to insert an element into the %set. + * @param __pos An iterator that serves as a hint as to where the + * element should be inserted. + * @param __args Arguments used to generate the element to be + * inserted. + * @return An iterator that points to the element with key equivalent to + * the one generated from @a __args (may or may not be the + * element itself). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument emplace() + * does. Note that the first parameter is only a hint and can + * potentially improve the performance of the insertion process. A bad + * hint would cause no gains in efficiency. + * + * For more on @a hinting, see: + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * + * Insertion requires logarithmic time (if the hint is not taken). + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + return _M_t._M_emplace_hint_unique(__pos, + std::forward<_Args>(__args)...); + } +#endif + + /** + * @brief Attempts to insert an element into the %set. + * @param __x Element to be inserted. + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted element, and the second is a bool + * that is true if the element was actually inserted. + * + * This function attempts to insert an element into the %set. A %set + * relies on unique keys and thus an element is only inserted if it is + * not already present in the %set. + * + * Insertion requires logarithmic time. + */ + std::pair + insert(const value_type& __x) + { + std::pair __p = + _M_t._M_insert_unique(__x); + return std::pair(__p.first, __p.second); + } + +#if __cplusplus >= 201103L + std::pair + insert(value_type&& __x) + { + std::pair __p = + _M_t._M_insert_unique(std::move(__x)); + return std::pair(__p.first, __p.second); + } +#endif + + /** + * @brief Attempts to insert an element into the %set. + * @param __position An iterator that serves as a hint as to where the + * element should be inserted. + * @param __x Element to be inserted. + * @return An iterator that points to the element with key of + * @a __x (may or may not be the element passed in). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument insert() + * does. Note that the first parameter is only a hint and can + * potentially improve the performance of the insertion process. A bad + * hint would cause no gains in efficiency. + * + * For more on @a hinting, see: + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * + * Insertion requires logarithmic time (if the hint is not taken). + */ + iterator + insert(const_iterator __position, const value_type& __x) + { return _M_t._M_insert_unique_(__position, __x); } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, value_type&& __x) + { return _M_t._M_insert_unique_(__position, std::move(__x)); } +#endif + + /** + * @brief A template function that attempts to insert a range + * of elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_t._M_insert_unique(__first, __last); } + +#if __cplusplus >= 201103L + /** + * @brief Attempts to insert a list of elements into the %set. + * @param __l A std::initializer_list of elements + * to be inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { this->insert(__l.begin(), __l.end()); } +#endif + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + /** + * @brief Erases an element from a %set. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a __position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from a %set. Note that this function only erases the element, and + * that if the element is itself a pointer, the pointed-to memory is not + * touched in any way. Managing the pointer is the user's + * responsibility. + */ + _GLIBCXX_ABI_TAG_CXX11 + iterator + erase(const_iterator __position) + { return _M_t.erase(__position); } +#else + /** + * @brief Erases an element from a %set. + * @param position An iterator pointing to the element to be erased. + * + * This function erases an element, pointed to by the given iterator, + * from a %set. Note that this function only erases the element, and + * that if the element is itself a pointer, the pointed-to memory is not + * touched in any way. Managing the pointer is the user's + * responsibility. + */ + void + erase(iterator __position) + { _M_t.erase(__position); } +#endif + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * a %set. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_t.erase(__x); } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + /** + * @brief Erases a [__first,__last) range of elements from a %set. + * @param __first Iterator pointing to the start of the range to be + * erased. + + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from a %set. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + _GLIBCXX_ABI_TAG_CXX11 + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_t.erase(__first, __last); } +#else + /** + * @brief Erases a [first,last) range of elements from a %set. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * + * This function erases a sequence of elements from a %set. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + void + erase(iterator __first, iterator __last) + { _M_t.erase(__first, __last); } +#endif + + /** + * Erases all elements in a %set. Note that this function only erases + * the elements, and that if the elements themselves are pointers, the + * pointed-to memory is not touched in any way. Managing the pointer is + * the user's responsibility. + */ + void + clear() _GLIBCXX_NOEXCEPT + { _M_t.clear(); } + + // set operations: + + /** + * @brief Finds the number of elements. + * @param __x Element to located. + * @return Number of elements with specified key. + * + * This function only makes sense for multisets; for set the result will + * either be 0 (not present) or 1 (present). + */ + size_type + count(const key_type& __x) const + { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + //@{ + /** + * @brief Tries to locate an element in a %set. + * @param __x Element to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_t.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_t.find(__x); } + //@} + + //@{ + /** + * @brief Finds the beginning of a subsequence matching given key. + * @param __x Key to be located. + * @return Iterator pointing to first element equal to or greater + * than key, or end(). + * + * This function returns the first element of a subsequence of elements + * that matches the given key. If unsuccessful it returns an iterator + * pointing to the first element that has a greater value than given key + * or end() if no such element exists. + */ + 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); } + //@} + + //@{ + /** + * @brief Finds the end of a subsequence matching given key. + * @param __x Key to be located. + * @return Iterator pointing to the first element + * greater than key, or end(). + */ + 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); } + //@} + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + * + * This function is equivalent to + * @code + * std::make_pair(c.lower_bound(val), + * c.upper_bound(val)) + * @endcode + * (but is faster than making the calls separately). + * + * This function probably only makes sense for multisets. + */ + 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 set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); + + template + friend bool + operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); + }; + + + /** + * @brief Set equality comparison. + * @param __x A %set. + * @param __y A %set of the same type as @a x. + * @return True iff the size and elements of the sets are equal. + * + * This is an equivalence relation. It is linear in the size of the sets. + * Sets are considered equivalent if their sizes are equal, and if + * corresponding elements compare equal. + */ + template + inline bool + operator==(const set<_Key, _Compare, _Alloc>& __x, + const set<_Key, _Compare, _Alloc>& __y) + { return __x._M_t == __y._M_t; } + + /** + * @brief Set ordering relation. + * @param __x A %set. + * @param __y A %set of the same type as @a x. + * @return True iff @a __x is lexicographically less than @a __y. + * + * This is a total ordering relation. It is linear in the size of the + * maps. The elements must be comparable with @c <. + * + * See std::lexicographical_compare() for how the determination is made. + */ + template + inline bool + operator<(const set<_Key, _Compare, _Alloc>& __x, + const set<_Key, _Compare, _Alloc>& __y) + { return __x._M_t < __y._M_t; } + + /// Returns !(x == y). + template + inline bool + operator!=(const set<_Key, _Compare, _Alloc>& __x, + const set<_Key, _Compare, _Alloc>& __y) + { return !(__x == __y); } + + /// Returns y < x. + template + inline bool + operator>(const set<_Key, _Compare, _Alloc>& __x, + const set<_Key, _Compare, _Alloc>& __y) + { return __y < __x; } + + /// Returns !(y < x) + template + inline bool + operator<=(const set<_Key, _Compare, _Alloc>& __x, + const set<_Key, _Compare, _Alloc>& __y) + { return !(__y < __x); } + + /// Returns !(x < y) + template + inline bool + operator>=(const set<_Key, _Compare, _Alloc>& __x, + const set<_Key, _Compare, _Alloc>& __y) + { return !(__x < __y); } + + /// See std::set::swap(). + template + inline void + swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y) + { __x.swap(__y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} //namespace std +#endif /* _STL_SET_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_stack.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_stack.h new file mode 100644 index 0000000..1fca04a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_stack.h @@ -0,0 +1,303 @@ +// Stack implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_stack.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{stack} + */ + +#ifndef _STL_STACK_H +#define _STL_STACK_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief A standard container giving FILO behavior. + * + * @ingroup sequences + * + * @tparam _Tp Type of element. + * @tparam _Sequence Type of underlying sequence, defaults to deque<_Tp>. + * + * Meets many of the requirements of a + * container, + * but does not define anything to do with iterators. Very few of the + * other standard container interfaces are defined. + * + * This is not a true container, but an @e adaptor. It holds + * another container, and provides a wrapper interface to that + * container. The wrapper is what enforces strict + * first-in-last-out %stack behavior. + * + * The second template parameter defines the type of the underlying + * sequence/container. It defaults to std::deque, but it can be + * any type that supports @c back, @c push_back, and @c pop_front, + * such as std::list, std::vector, or an appropriate user-defined + * type. + * + * Members not found in @a normal containers are @c container_type, + * which is a typedef for the second Sequence parameter, and @c + * push, @c pop, and @c top, which are standard %stack/FILO + * operations. + */ + template > + class stack + { + // concept requirements + typedef typename _Sequence::value_type _Sequence_value_type; + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires(_Sequence, _BackInsertionSequenceConcept) + __glibcxx_class_requires2(_Tp, _Sequence_value_type, _SameTypeConcept) + + template + friend bool + operator==(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&); + + template + friend bool + operator<(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&); + + public: + typedef typename _Sequence::value_type value_type; + typedef typename _Sequence::reference reference; + typedef typename _Sequence::const_reference const_reference; + typedef typename _Sequence::size_type size_type; + typedef _Sequence container_type; + + protected: + // See queue::c for notes on this name. + _Sequence c; + + public: + // XXX removed old def ctor, added def arg to this one to match 14882 + /** + * @brief Default constructor creates no elements. + */ +#if __cplusplus < 201103L + explicit + stack(const _Sequence& __c = _Sequence()) + : c(__c) { } +#else + explicit + stack(const _Sequence& __c) + : c(__c) { } + + explicit + stack(_Sequence&& __c = _Sequence()) + : c(std::move(__c)) { } +#endif + + /** + * Returns true if the %stack is empty. + */ + bool + empty() const + { return c.empty(); } + + /** Returns the number of elements in the %stack. */ + size_type + size() const + { return c.size(); } + + /** + * Returns a read/write reference to the data at the first + * element of the %stack. + */ + reference + top() + { + __glibcxx_requires_nonempty(); + return c.back(); + } + + /** + * Returns a read-only (constant) reference to the data at the first + * element of the %stack. + */ + const_reference + top() const + { + __glibcxx_requires_nonempty(); + return c.back(); + } + + /** + * @brief Add data to the top of the %stack. + * @param __x Data to be added. + * + * This is a typical %stack operation. The function creates an + * element at the top of the %stack and assigns the given data + * to it. The time complexity of the operation depends on the + * underlying sequence. + */ + void + push(const value_type& __x) + { c.push_back(__x); } + +#if __cplusplus >= 201103L + void + push(value_type&& __x) + { c.push_back(std::move(__x)); } + + template + void + emplace(_Args&&... __args) + { c.emplace_back(std::forward<_Args>(__args)...); } +#endif + + /** + * @brief Removes first element. + * + * This is a typical %stack operation. It shrinks the %stack + * by one. The time complexity of the operation depends on the + * underlying sequence. + * + * Note that no data is returned, and if the first element's + * data is needed, it should be retrieved before pop() is + * called. + */ + void + pop() + { + __glibcxx_requires_nonempty(); + c.pop_back(); + } + +#if __cplusplus >= 201103L + void + swap(stack& __s) + noexcept(noexcept(swap(c, __s.c))) + { + using std::swap; + swap(c, __s.c); + } +#endif + }; + + /** + * @brief Stack equality comparison. + * @param __x A %stack. + * @param __y A %stack of the same type as @a __x. + * @return True iff the size and elements of the stacks are equal. + * + * This is an equivalence relation. Complexity and semantics + * depend on the underlying sequence type, but the expected rules + * are: this relation is linear in the size of the sequences, and + * stacks are considered equivalent if their sequences compare + * equal. + */ + template + inline bool + operator==(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) + { return __x.c == __y.c; } + + /** + * @brief Stack ordering relation. + * @param __x A %stack. + * @param __y A %stack of the same type as @a x. + * @return True iff @a x is lexicographically less than @a __y. + * + * This is an total ordering relation. Complexity and semantics + * depend on the underlying sequence type, but the expected rules + * are: this relation is linear in the size of the sequences, the + * elements must be comparable with @c <, and + * std::lexicographical_compare() is usually used to make the + * determination. + */ + template + inline bool + operator<(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) + { return __x.c < __y.c; } + + /// Based on operator== + template + inline bool + operator!=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) + { return !(__x == __y); } + + /// Based on operator< + template + inline bool + operator>(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) + { return __y < __x; } + + /// Based on operator< + template + inline bool + operator<=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) + { return !(__y < __x); } + + /// Based on operator< + template + inline bool + operator>=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) + { return !(__x < __y); } + +#if __cplusplus >= 201103L + template + inline void + swap(stack<_Tp, _Seq>& __x, stack<_Tp, _Seq>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + struct uses_allocator, _Alloc> + : public uses_allocator<_Seq, _Alloc>::type { }; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _STL_STACK_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_tempbuf.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_tempbuf.h new file mode 100644 index 0000000..10e705c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_tempbuf.h @@ -0,0 +1,271 @@ +// Temporary buffer implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_tempbuf.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _STL_TEMPBUF_H +#define _STL_TEMPBUF_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief Allocates a temporary buffer. + * @param __len The number of objects of type Tp. + * @return See full description. + * + * Reinventing the wheel, but this time with prettier spokes! + * + * This function tries to obtain storage for @c __len adjacent Tp + * objects. The objects themselves are not constructed, of course. + * A pair<> is returned containing the buffer s address and + * capacity (in the units of sizeof(_Tp)), or a pair of 0 values if + * no storage can be obtained. Note that the capacity obtained + * may be less than that requested if the memory is unavailable; + * you should compare len with the .second return value. + * + * Provides the nothrow exception guarantee. + */ + template + pair<_Tp*, ptrdiff_t> + get_temporary_buffer(ptrdiff_t __len) _GLIBCXX_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); + } + + /** + * @brief The companion to get_temporary_buffer(). + * @param __p A buffer previously allocated by get_temporary_buffer. + * @return None. + * + * Frees the memory pointed to by __p. + */ + template + inline void + return_temporary_buffer(_Tp* __p) + { ::operator delete(__p, std::nothrow); } + + + /** + * This class is used in two places: stl_algo.h and ext/memory, + * where it is wrapped as the temporary_buffer class. See + * temporary_buffer docs for more notes. + */ + template + class _Temporary_buffer + { + // concept requirements + __glibcxx_class_requires(_ForwardIterator, _ForwardIteratorConcept) + + 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: + /// As per Table mumble. + size_type + size() const + { return _M_len; } + + /// Returns the size requested by the constructor; may be >size(). + size_type + requested_size() const + { return _M_original_len; } + + /// As per Table mumble. + iterator + begin() + { return _M_buffer; } + + /// As per Table mumble. + iterator + end() + { return _M_buffer + _M_len; } + + /** + * Constructs a temporary buffer of a size somewhere between + * zero and the size of the given range. + */ + _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last); + + ~_Temporary_buffer() + { + std::_Destroy(_M_buffer, _M_buffer + _M_len); + std::return_temporary_buffer(_M_buffer); + } + + private: + // Disable copy constructor and assignment operator. + _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; + __try + { + std::_Construct(std::__addressof(*__first), + _GLIBCXX_MOVE(*__seed)); + _Pointer __prev = __cur; + ++__cur; + for(; __cur != __last; ++__cur, ++__prev) + std::_Construct(std::__addressof(*__cur), + _GLIBCXX_MOVE(*__prev)); + *__seed = _GLIBCXX_MOVE(*__prev); + } + __catch(...) + { + std::_Destroy(__first, __cur); + __throw_exception_again; + } + } + }; + + template<> + struct __uninitialized_construct_buf_dispatch + { + template + static void + __ucr(_Pointer, _Pointer, _ForwardIterator) { } + }; + + // Constructs objects in the range [first, last). + // Note that while these new objects will take valid values, + // their exact value is not defined. In particular they may + // be 'moved from'. + // + // While *__seed may be altered during this algorithm, it will have + // the same value when the algorithm finishes, unless one of the + // constructions throws. + // + // Requirements: _Pointer::value_type(_Tp&&) is valid. + 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) + { + __try + { + 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); + } + __catch(...) + { + std::return_temporary_buffer(_M_buffer); + _M_buffer = 0; + _M_len = 0; + __throw_exception_again; + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _STL_TEMPBUF_H */ + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_tree.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_tree.h new file mode 100644 index 0000000..91bf4df --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_tree.h @@ -0,0 +1,1867 @@ +// RB tree implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + */ + +/** @file bits/stl_tree.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{map,set} + */ + +#ifndef _STL_TREE_H +#define _STL_TREE_H 1 + +#include +#include +#include +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Red-black tree class, designed for use in implementing STL + // associative containers (set, multiset, map, and multimap). The + // insertion and deletion algorithms are based on those in Cormen, + // Leiserson, and Rivest, Introduction to Algorithms (MIT Press, + // 1990), except that + // + // (1) the header cell is maintained with links not only to the root + // but also to the leftmost node of the tree, to enable constant + // time begin(), and to the rightmost node of the tree, to enable + // linear time performance when used with the generic set algorithms + // (set_union, etc.) + // + // (2) when a node being deleted has two children its successor node + // is relinked into its place, rather than copied, so that the only + // iterators invalidated are those referring to the deleted node. + + 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; + +#if __cplusplus >= 201103L + template + _Rb_tree_node(_Args&&... __args) + : _Rb_tree_node_base(), + _M_value_field(std::forward<_Args>(__args)...) { } +#endif + }; + + _GLIBCXX_PURE _Rb_tree_node_base* + _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); + + _GLIBCXX_PURE const _Rb_tree_node_base* + _Rb_tree_increment(const _Rb_tree_node_base* __x) throw (); + + _GLIBCXX_PURE _Rb_tree_node_base* + _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); + + _GLIBCXX_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() _GLIBCXX_NOEXCEPT + { return *static_cast<_Node_allocator*>(&this->_M_impl); } + + const _Node_allocator& + _M_get_Node_allocator() const _GLIBCXX_NOEXCEPT + { return *static_cast(&this->_M_impl); } + + allocator_type + get_allocator() const _GLIBCXX_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); } + +#if __cplusplus < 201103L + _Link_type + _M_create_node(const value_type& __x) + { + _Link_type __tmp = _M_get_node(); + __try + { get_allocator().construct + (std::__addressof(__tmp->_M_value_field), __x); } + __catch(...) + { + _M_put_node(__tmp); + __throw_exception_again; + } + return __tmp; + } + + void + _M_destroy_node(_Link_type __p) + { + get_allocator().destroy(std::__addressof(__p->_M_value_field)); + _M_put_node(__p); + } +#else + template + _Link_type + _M_create_node(_Args&&... __args) + { + _Link_type __tmp = _M_get_node(); + __try + { + allocator_traits<_Node_allocator>:: + construct(_M_get_Node_allocator(), __tmp, + std::forward<_Args>(__args)...); + } + __catch(...) + { + _M_put_node(__tmp); + __throw_exception_again; + } + return __tmp; + } + + void + _M_destroy_node(_Link_type __p) + { + _M_get_Node_allocator().destroy(__p); + _M_put_node(__p); + } +#endif + + _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; // Keeps track of size of tree. + + _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(); } + +#if __cplusplus >= 201103L + _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(); } +#endif + + 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); + +#if __cplusplus >= 201103L + 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); +#else + iterator + _M_insert_(_Base_ptr __x, _Base_ptr __y, + const value_type& __v); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 233. Insertion hints in associative containers. + iterator + _M_insert_lower(_Base_ptr __y, const value_type& __v); + + iterator + _M_insert_equal_lower(const value_type& __x); +#endif + + _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: + // allocation/deallocation + _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; + } + } + +#if __cplusplus >= 201103L + _Rb_tree(_Rb_tree&& __x); +#endif + + ~_Rb_tree() _GLIBCXX_NOEXCEPT + { _M_erase(_M_begin()); } + + _Rb_tree& + operator=(const _Rb_tree& __x); + + // Accessors. + _Compare + key_comp() const + { return _M_impl._M_key_compare; } + + iterator + begin() _GLIBCXX_NOEXCEPT + { + return iterator(static_cast<_Link_type> + (this->_M_impl._M_header._M_left)); + } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { + return const_iterator(static_cast<_Const_Link_type> + (this->_M_impl._M_header._M_left)); + } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(static_cast<_Link_type>(&this->_M_impl._M_header)); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { + return const_iterator(static_cast<_Const_Link_type> + (&this->_M_impl._M_header)); + } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + + bool + empty() const _GLIBCXX_NOEXCEPT + { return _M_impl._M_node_count == 0; } + + size_type + size() const _GLIBCXX_NOEXCEPT + { return _M_impl._M_node_count; } + + size_type + max_size() const _GLIBCXX_NOEXCEPT + { return _M_get_Node_allocator().max_size(); } + + void + swap(_Rb_tree& __t); + + // Insert/erase. +#if __cplusplus >= 201103L + 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); +#else + pair + _M_insert_unique(const value_type& __x); + + iterator + _M_insert_equal(const value_type& __x); + + iterator + _M_insert_unique_(const_iterator __position, const value_type& __x); + + iterator + _M_insert_equal_(const_iterator __position, const value_type& __x); +#endif + + 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: +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + _GLIBCXX_ABI_TAG_CXX11 + iterator + erase(const_iterator __position) + { + const_iterator __result = __position; + ++__result; + _M_erase_aux(__position); + return __result._M_const_cast(); + } + + // LWG 2059. + _GLIBCXX_ABI_TAG_CXX11 + iterator + erase(iterator __position) + { + iterator __result = __position; + ++__result; + _M_erase_aux(__position); + return __result; + } +#else + void + erase(iterator __position) + { _M_erase_aux(__position); } + + void + erase(const_iterator __position) + { _M_erase_aux(__position); } +#endif + size_type + erase(const key_type& __x); + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 130. Associative erase should return an iterator. + _GLIBCXX_ABI_TAG_CXX11 + iterator + erase(const_iterator __first, const_iterator __last) + { + _M_erase_aux(__first, __last); + return __last._M_const_cast(); + } +#else + void + erase(iterator __first, iterator __last) + { _M_erase_aux(__first, __last); } + + void + erase(const_iterator __first, const_iterator __last) + { _M_erase_aux(__first, __last); } +#endif + void + erase(const key_type* __first, const key_type* __last); + + void + clear() _GLIBCXX_NOEXCEPT + { + _M_erase(_M_begin()); + _M_leftmost() = _M_end(); + _M_root() = 0; + _M_rightmost() = _M_end(); + _M_impl._M_node_count = 0; + } + + // Set operations. + 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; + + // Debugging. + 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); } + +#if __cplusplus >= 201103L + 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; + } + } +#endif + + 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) + { + // Note that _Key may be a constant type. + 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 +#if __cplusplus >= 201103L + template +#endif + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +#if __cplusplus >= 201103L + _M_insert_(_Base_ptr __x, _Base_ptr __p, _Arg&& __v) +#else + _M_insert_(_Base_ptr __x, _Base_ptr __p, const _Val& __v) +#endif + { + bool __insert_left = (__x != 0 || __p == _M_end() + || _M_impl._M_key_compare(_KeyOfValue()(__v), + _S_key(__p))); + + _Link_type __z = _M_create_node(_GLIBCXX_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 +#if __cplusplus >= 201103L + template +#endif + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +#if __cplusplus >= 201103L + _M_insert_lower(_Base_ptr __p, _Arg&& __v) +#else + _M_insert_lower(_Base_ptr __p, const _Val& __v) +#endif + { + bool __insert_left = (__p == _M_end() + || !_M_impl._M_key_compare(_S_key(__p), + _KeyOfValue()(__v))); + + _Link_type __z = _M_create_node(_GLIBCXX_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 +#if __cplusplus >= 201103L + template +#endif + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +#if __cplusplus >= 201103L + _M_insert_equal_lower(_Arg&& __v) +#else + _M_insert_equal_lower(const _Val& __v) +#endif + { + _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, _GLIBCXX_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) + { + // Structural copy. __x and __p must be non-null. + _Link_type __top = _M_clone_node(__x); + __top->_M_parent = __p; + + __try + { + 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); + } + } + __catch(...) + { + _M_erase(__top); + __throw_exception_again; + } + return __top; + } + + template + void + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + _M_erase(_Link_type __x) + { + // Erase without rebalancing. + 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(); + } + // No need to swap header's color as it does not change. + 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); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 431. Swapping containers with unequal allocators. + 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 +#if __cplusplus >= 201103L + template +#endif + pair::iterator, bool> + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +#if __cplusplus >= 201103L + _M_insert_unique(_Arg&& __v) +#else + _M_insert_unique(const _Val& __v) +#endif + { + 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, + _GLIBCXX_FORWARD(_Arg, __v)), + true); + + return _Res(iterator(static_cast<_Link_type>(__res.first)), false); + } + + template +#if __cplusplus >= 201103L + template +#endif + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +#if __cplusplus >= 201103L + _M_insert_equal(_Arg&& __v) +#else + _M_insert_equal(const _Val& __v) +#endif + { + pair<_Base_ptr, _Base_ptr> __res + = _M_get_insert_equal_pos(_KeyOfValue()(__v)); + return _M_insert_(__res.first, __res.second, _GLIBCXX_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; + + // end() + 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))) + { + // First, try before... + iterator __before = __pos; + if (__pos._M_node == _M_leftmost()) // begin() + 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)) + { + // ... then try after. + 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 + // Equivalent keys. + return _Res(__pos._M_node, 0); + } + + template +#if __cplusplus >= 201103L + template +#endif + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +#if __cplusplus >= 201103L + _M_insert_unique_(const_iterator __position, _Arg&& __v) +#else + _M_insert_unique_(const_iterator __position, const _Val& __v) +#endif + { + 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, + _GLIBCXX_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; + + // end() + 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)) + { + // First, try before... + iterator __before = __pos; + if (__pos._M_node == _M_leftmost()) // begin() + 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 + { + // ... then try after. + 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 +#if __cplusplus >= 201103L + template +#endif + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator + _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +#if __cplusplus >= 201103L + _M_insert_equal_(const_iterator __position, _Arg&& __v) +#else + _M_insert_equal_(const_iterator __position, const _Val& __v) +#endif + { + 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, + _GLIBCXX_FORWARD(_Arg, __v)); + + return _M_insert_equal_lower(_GLIBCXX_FORWARD(_Arg, __v)); + } + +#if __cplusplus >= 201103L + 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)...); + + __try + { + 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); + } + __catch(...) + { + _M_destroy_node(__z); + __throw_exception_again; + } + } + + 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)...); + + __try + { + auto __res = _M_get_insert_equal_pos(_S_key(__z)); + return _M_insert_node(__res.first, __res.second, __z); + } + __catch(...) + { + _M_destroy_node(__z); + __throw_exception_again; + } + } + + 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)...); + + __try + { + auto __res = _M_get_insert_hint_unique_pos(__pos, _S_key(__z)); + + if (__res.second) + return _M_insert_node(__res.first, __res.second, __z); + + _M_destroy_node(__z); + return iterator(static_cast<_Link_type>(__res.first)); + } + __catch(...) + { + _M_destroy_node(__z); + __throw_exception_again; + } + } + + 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)...); + + __try + { + auto __res = _M_get_insert_hint_equal_pos(__pos, _S_key(__z)); + + if (__res.second) + return _M_insert_node(__res.first, __res.second, __z); + + return _M_insert_equal_lower_node(__z); + } + __catch(...) + { + _M_destroy_node(__z); + __throw_exception_again; + } + } +#endif + + 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; + } + + _GLIBCXX_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; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_uninitialized.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_uninitialized.h new file mode 100644 index 0000000..310b162 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_uninitialized.h @@ -0,0 +1,656 @@ +// Raw memory manipulators -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_uninitialized.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _STL_UNINITIALIZED_H +#define _STL_UNINITIALIZED_H 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + struct __uninitialized_copy + { + template + static _ForwardIterator + __uninit_copy(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result) + { + _ForwardIterator __cur = __result; + __try + { + for (; __first != __last; ++__first, ++__cur) + std::_Construct(std::__addressof(*__cur), *__first); + return __cur; + } + __catch(...) + { + std::_Destroy(__result, __cur); + __throw_exception_again; + } + } + }; + + template<> + struct __uninitialized_copy + { + template + static _ForwardIterator + __uninit_copy(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result) + { return std::copy(__first, __last, __result); } + }; + + /** + * @brief Copies the range [first,last) into result. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __result An output iterator. + * @return __result + (__first - __last) + * + * Like copy(), but does not require an initialized output range. + */ + 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; + __try + { + for (; __cur != __last; ++__cur) + std::_Construct(std::__addressof(*__cur), __x); + } + __catch(...) + { + std::_Destroy(__first, __cur); + __throw_exception_again; + } + } + }; + + template<> + struct __uninitialized_fill + { + template + static void + __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __x) + { std::fill(__first, __last, __x); } + }; + + /** + * @brief Copies the value x into the range [first,last). + * @param __first An input iterator. + * @param __last An input iterator. + * @param __x The source value. + * @return Nothing. + * + * Like fill(), but does not require an initialized output range. + */ + 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; + __try + { + for (; __n > 0; --__n, ++__cur) + std::_Construct(std::__addressof(*__cur), __x); + } + __catch(...) + { + std::_Destroy(__first, __cur); + __throw_exception_again; + } + } + }; + + template<> + struct __uninitialized_fill_n + { + template + static void + __uninit_fill_n(_ForwardIterator __first, _Size __n, + const _Tp& __x) + { std::fill_n(__first, __n, __x); } + }; + + /** + * @brief Copies the value x into the range [first,first+n). + * @param __first An input iterator. + * @param __n The number of copies to make. + * @param __x The source value. + * @return Nothing. + * + * Like fill_n(), but does not require an initialized output range. + */ + 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); + } + + // Extensions: versions of uninitialized_copy, uninitialized_fill, + // and uninitialized_fill_n that take an allocator parameter. + // We dispatch back to the standard versions when we're given the + // default allocator. For nondefault allocators we do not use + // any of the POD optimizations. + + template + _ForwardIterator + __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, + _ForwardIterator __result, _Allocator& __alloc) + { + _ForwardIterator __cur = __result; + __try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __first != __last; ++__first, ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur), *__first); + return __cur; + } + __catch(...) + { + std::_Destroy(__result, __cur, __alloc); + __throw_exception_again; + } + } + + 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(_GLIBCXX_MAKE_MOVE_ITERATOR(__first), + _GLIBCXX_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 + (_GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(__first), + _GLIBCXX_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; + __try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __cur != __last; ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur), __x); + } + __catch(...) + { + std::_Destroy(__first, __cur, __alloc); + __throw_exception_again; + } + } + + 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; + __try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __n > 0; --__n, ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur), __x); + } + __catch(...) + { + std::_Destroy(__first, __cur, __alloc); + __throw_exception_again; + } + } + + template + inline void + __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, + const _Tp& __x, allocator<_Tp2>&) + { std::uninitialized_fill_n(__first, __n, __x); } + + + // Extensions: __uninitialized_copy_move, __uninitialized_move_copy, + // __uninitialized_fill_move, __uninitialized_move_fill. + // All of these algorithms take a user-supplied allocator, which is used + // for construction and destruction. + + // __uninitialized_copy_move + // Copies [first1, last1) into [result, result + (last1 - first1)), and + // move [first2, last2) into + // [result, result + (last1 - first1) + (last2 - first2)). + 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); + __try + { + return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); + } + __catch(...) + { + std::_Destroy(__result, __mid, __alloc); + __throw_exception_again; + } + } + + // __uninitialized_move_copy + // Moves [first1, last1) into [result, result + (last1 - first1)), and + // copies [first2, last2) into + // [result, result + (last1 - first1) + (last2 - first2)). + 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); + __try + { + return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); + } + __catch(...) + { + std::_Destroy(__result, __mid, __alloc); + __throw_exception_again; + } + } + + // __uninitialized_fill_move + // Fills [result, mid) with x, and moves [first, last) into + // [mid, mid + (last - first)). + 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); + __try + { + return std::__uninitialized_move_a(__first, __last, __mid, __alloc); + } + __catch(...) + { + std::_Destroy(__result, __mid, __alloc); + __throw_exception_again; + } + } + + // __uninitialized_move_fill + // Moves [first1, last1) into [first2, first2 + (last1 - first1)), and + // fills [first2 + (last1 - first1), last2) with x. + 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); + __try + { + std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); + } + __catch(...) + { + std::_Destroy(__first2, __mid2, __alloc); + __throw_exception_again; + } + } + +#if __cplusplus >= 201103L + // Extensions: __uninitialized_default, __uninitialized_default_n, + // __uninitialized_default_a, __uninitialized_default_n_a. + + template + struct __uninitialized_default_1 + { + template + static void + __uninit_default(_ForwardIterator __first, _ForwardIterator __last) + { + _ForwardIterator __cur = __first; + __try + { + for (; __cur != __last; ++__cur) + std::_Construct(std::__addressof(*__cur)); + } + __catch(...) + { + std::_Destroy(__first, __cur); + __throw_exception_again; + } + } + }; + + 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; + __try + { + for (; __n > 0; --__n, ++__cur) + std::_Construct(std::__addressof(*__cur)); + } + __catch(...) + { + std::_Destroy(__first, __cur); + __throw_exception_again; + } + } + }; + + 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()); + } + }; + + // __uninitialized_default + // Fills [first, last) with std::distance(first, last) default + // constructed value_types(s). + 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); + } + + // __uninitialized_default_n + // Fills [first, first + n) with n default constructed value_type(s). + 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); + } + + + // __uninitialized_default_a + // Fills [first, last) with std::distance(first, last) default + // constructed value_types(s), constructed with the allocator alloc. + template + void + __uninitialized_default_a(_ForwardIterator __first, + _ForwardIterator __last, + _Allocator& __alloc) + { + _ForwardIterator __cur = __first; + __try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __cur != __last; ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur)); + } + __catch(...) + { + std::_Destroy(__first, __cur, __alloc); + __throw_exception_again; + } + } + + template + inline void + __uninitialized_default_a(_ForwardIterator __first, + _ForwardIterator __last, + allocator<_Tp>&) + { std::__uninitialized_default(__first, __last); } + + + // __uninitialized_default_n_a + // Fills [first, first + n) with n default constructed value_types(s), + // constructed with the allocator alloc. + template + void + __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, + _Allocator& __alloc) + { + _ForwardIterator __cur = __first; + __try + { + typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; + for (; __n > 0; --__n, ++__cur) + __traits::construct(__alloc, std::__addressof(*__cur)); + } + __catch(...) + { + std::_Destroy(__first, __cur, __alloc); + __throw_exception_again; + } + } + + 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; + __try + { + for (; __n > 0; --__n, ++__first, ++__cur) + std::_Construct(std::__addressof(*__cur), *__first); + return __cur; + } + __catch(...) + { + std::_Destroy(__result, __cur); + __throw_exception_again; + } + } + + template + inline _ForwardIterator + __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, + _ForwardIterator __result, + random_access_iterator_tag) + { return std::uninitialized_copy(__first, __first + __n, __result); } + + /** + * @brief Copies the range [first,first+n) into result. + * @param __first An input iterator. + * @param __n The number of elements to copy. + * @param __result An output iterator. + * @return __result + __n + * + * Like copy_n(), but does not require an initialized output range. + */ + template + inline _ForwardIterator + uninitialized_copy_n(_InputIterator __first, _Size __n, + _ForwardIterator __result) + { return std::__uninitialized_copy_n(__first, __n, __result, + std::__iterator_category(__first)); } +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _STL_UNINITIALIZED_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_vector.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_vector.h new file mode 100644 index 0000000..69c6e27 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stl_vector.h @@ -0,0 +1,1457 @@ +// Vector implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_vector.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{vector} + */ + +#ifndef _STL_VECTOR_H +#define _STL_VECTOR_H 1 + +#include +#include +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /// See bits/stl_deque.h's _Deque_base for an explanation. + 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) + { } + +#if __cplusplus >= 201103L + _Vector_impl(_Tp_alloc_type&& __a) + : _Tp_alloc_type(std::move(__a)), + _M_start(0), _M_finish(0), _M_end_of_storage(0) + { } +#endif + + 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() _GLIBCXX_NOEXCEPT + { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } + + const _Tp_alloc_type& + _M_get_Tp_allocator() const _GLIBCXX_NOEXCEPT + { return *static_cast(&this->_M_impl); } + + allocator_type + get_allocator() const _GLIBCXX_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); } + +#if __cplusplus >= 201103L + _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); + } + } +#endif + + ~_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; + } + }; + + + /** + * @brief A standard container which offers fixed time access to + * individual elements in any order. + * + * @ingroup sequences + * + * @tparam _Tp Type of element. + * @tparam _Alloc Allocator type, defaults to allocator<_Tp>. + * + * Meets the requirements of a container, a + * reversible container, and a + * sequence, including the + * optional sequence requirements with the + * %exception of @c push_front and @c pop_front. + * + * In some terminology a %vector can be described as a dynamic + * C-style array, it offers fast and efficient access to individual + * elements in any order and saves the user from worrying about + * memory and size allocation. Subscripting ( @c [] ) access is + * also provided as with C-style arrays. + */ + template > + class vector : protected _Vector_base<_Tp, _Alloc> + { + // Concept requirements. + typedef typename _Alloc::value_type _Alloc_value_type; + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) + + 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: + // [23.2.4.1] construct/copy/destroy + // (assign() and get_allocator() are also listed in this section) + /** + * @brief Default constructor creates no elements. + */ + vector() + : _Base() { } + + /** + * @brief Creates a %vector with no elements. + * @param __a An allocator object. + */ + explicit + vector(const allocator_type& __a) + : _Base(__a) { } + +#if __cplusplus >= 201103L + /** + * @brief Creates a %vector with default constructed elements. + * @param __n The number of elements to initially create. + * @param __a An allocator. + * + * This constructor fills the %vector with @a __n default + * constructed elements. + */ + explicit + vector(size_type __n, const allocator_type& __a = allocator_type()) + : _Base(__n, __a) + { _M_default_initialize(__n); } + + /** + * @brief Creates a %vector with copies of an exemplar element. + * @param __n The number of elements to initially create. + * @param __value An element to copy. + * @param __a An allocator. + * + * This constructor fills the %vector with @a __n copies of @a __value. + */ + vector(size_type __n, const value_type& __value, + const allocator_type& __a = allocator_type()) + : _Base(__n, __a) + { _M_fill_initialize(__n, __value); } +#else + /** + * @brief Creates a %vector with copies of an exemplar element. + * @param __n The number of elements to initially create. + * @param __value An element to copy. + * @param __a An allocator. + * + * This constructor fills the %vector with @a __n copies of @a __value. + */ + explicit + vector(size_type __n, const value_type& __value = value_type(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __a) + { _M_fill_initialize(__n, __value); } +#endif + + /** + * @brief %Vector copy constructor. + * @param __x A %vector of identical element and allocator types. + * + * The newly-created %vector uses a copy of the allocation + * object used by @a __x. All the elements of @a __x are copied, + * but any extra memory in + * @a __x (for fast expansion) will not be copied. + */ + 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()); + } + +#if __cplusplus >= 201103L + /** + * @brief %Vector move constructor. + * @param __x A %vector of identical element and allocator types. + * + * The newly-created %vector contains the exact contents of @a __x. + * The contents of @a __x are a valid, but unspecified %vector. + */ + vector(vector&& __x) noexcept + : _Base(std::move(__x)) { } + + /// Copy constructor with alternative allocator + 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()); + } + + /// Move constructor with alternative 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(); + } + } + + /** + * @brief Builds a %vector from an initializer list. + * @param __l An initializer_list. + * @param __a An allocator. + * + * Create a %vector consisting of copies of the elements in the + * initializer_list @a __l. + * + * This will call the element type's copy constructor N times + * (where N is @a __l.size()) and do no memory reallocation. + */ + vector(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + _M_range_initialize(__l.begin(), __l.end(), + random_access_iterator_tag()); + } +#endif + + /** + * @brief Builds a %vector from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __a An allocator. + * + * Create a %vector consisting of copies of the elements from + * [first,last). + * + * If the iterators are forward, bidirectional, or + * random-access, then this will call the elements' copy + * constructor N times (where N is distance(first,last)) and do + * no memory reallocation. But if only input iterators are + * used, then this will do at most 2N calls to the copy + * constructor, and logN memory reallocations. + */ +#if __cplusplus >= 201103L + template> + vector(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { _M_initialize_dispatch(__first, __last, __false_type()); } +#else + template + vector(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + // Check whether it's an integral type. If so, it's not an iterator. + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_initialize_dispatch(__first, __last, _Integral()); + } +#endif + + /** + * The dtor only erases the elements, and note that if the + * elements themselves are pointers, the pointed-to memory is + * not touched in any way. Managing the pointer is the user's + * responsibility. + */ + ~vector() _GLIBCXX_NOEXCEPT + { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, + _M_get_Tp_allocator()); } + + /** + * @brief %Vector assignment operator. + * @param __x A %vector of identical element and allocator types. + * + * All the elements of @a __x are copied, but any extra memory in + * @a __x (for fast expansion) will not be copied. Unlike the + * copy constructor, the allocator object is not copied. + */ + vector& + operator=(const vector& __x); + +#if __cplusplus >= 201103L + /** + * @brief %Vector move assignment operator. + * @param __x A %vector of identical element and allocator types. + * + * The contents of @a __x are moved into this %vector (without copying, + * if the allocators permit it). + * @a __x is a valid, but unspecified %vector. + */ + 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; + } + + /** + * @brief %Vector list assignment operator. + * @param __l An initializer_list. + * + * This function fills a %vector with copies of the elements in the + * initializer list @a __l. + * + * Note that the assignment completely changes the %vector and + * that the resulting %vector's size is the same as the number + * of elements assigned. Old data may be lost. + */ + vector& + operator=(initializer_list __l) + { + this->assign(__l.begin(), __l.end()); + return *this; + } +#endif + + /** + * @brief Assigns a given value to a %vector. + * @param __n Number of elements to be assigned. + * @param __val Value to be assigned. + * + * This function fills a %vector with @a __n copies of the given + * value. Note that the assignment completely changes the + * %vector and that the resulting %vector's size is the same as + * the number of elements assigned. Old data may be lost. + */ + void + assign(size_type __n, const value_type& __val) + { _M_fill_assign(__n, __val); } + + /** + * @brief Assigns a range to a %vector. + * @param __first An input iterator. + * @param __last An input iterator. + * + * This function fills a %vector with copies of the elements in the + * range [__first,__last). + * + * Note that the assignment completely changes the %vector and + * that the resulting %vector's size is the same as the number + * of elements assigned. Old data may be lost. + */ +#if __cplusplus >= 201103L + template> + void + assign(_InputIterator __first, _InputIterator __last) + { _M_assign_dispatch(__first, __last, __false_type()); } +#else + template + void + assign(_InputIterator __first, _InputIterator __last) + { + // Check whether it's an integral type. If so, it's not an iterator. + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_assign_dispatch(__first, __last, _Integral()); + } +#endif + +#if __cplusplus >= 201103L + /** + * @brief Assigns an initializer list to a %vector. + * @param __l An initializer_list. + * + * This function fills a %vector with copies of the elements in the + * initializer list @a __l. + * + * Note that the assignment completely changes the %vector and + * that the resulting %vector's size is the same as the number + * of elements assigned. Old data may be lost. + */ + void + assign(initializer_list __l) + { this->assign(__l.begin(), __l.end()); } +#endif + + /// Get a copy of the memory allocation object. + using _Base::get_allocator; + + // iterators + /** + * Returns a read/write iterator that points to the first + * element in the %vector. Iteration is done in ordinary + * element order. + */ + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(this->_M_impl._M_start); } + + /** + * Returns a read-only (constant) iterator that points to the + * first element in the %vector. Iteration is done in ordinary + * element order. + */ + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(this->_M_impl._M_start); } + + /** + * Returns a read/write iterator that points one past the last + * element in the %vector. Iteration is done in ordinary + * element order. + */ + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(this->_M_impl._M_finish); } + + /** + * Returns a read-only (constant) iterator that points one past + * the last element in the %vector. Iteration is done in + * ordinary element order. + */ + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(this->_M_impl._M_finish); } + + /** + * Returns a read/write reverse iterator that points to the + * last element in the %vector. Iteration is done in reverse + * element order. + */ + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to the last element in the %vector. Iteration is done in + * reverse element order. + */ + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + /** + * Returns a read/write reverse iterator that points to one + * before the first element in the %vector. Iteration is done + * in reverse element order. + */ + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to one before the first element in the %vector. Iteration + * is done in reverse element order. + */ + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + /** + * Returns a read-only (constant) iterator that points to the + * first element in the %vector. Iteration is done in ordinary + * element order. + */ + const_iterator + cbegin() const noexcept + { return const_iterator(this->_M_impl._M_start); } + + /** + * Returns a read-only (constant) iterator that points one past + * the last element in the %vector. Iteration is done in + * ordinary element order. + */ + const_iterator + cend() const noexcept + { return const_iterator(this->_M_impl._M_finish); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to the last element in the %vector. Iteration is done in + * reverse element order. + */ + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + /** + * Returns a read-only (constant) reverse iterator that points + * to one before the first element in the %vector. Iteration + * is done in reverse element order. + */ + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // [23.2.4.2] capacity + /** Returns the number of elements in the %vector. */ + size_type + size() const _GLIBCXX_NOEXCEPT + { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } + + /** Returns the size() of the largest possible %vector. */ + size_type + max_size() const _GLIBCXX_NOEXCEPT + { return _Alloc_traits::max_size(_M_get_Tp_allocator()); } + +#if __cplusplus >= 201103L + /** + * @brief Resizes the %vector to the specified number of elements. + * @param __new_size Number of elements the %vector should contain. + * + * This function will %resize the %vector to the specified + * number of elements. If the number is smaller than the + * %vector's current size the %vector is truncated, otherwise + * default constructed elements are appended. + */ + 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); + } + + /** + * @brief Resizes the %vector to the specified number of elements. + * @param __new_size Number of elements the %vector should contain. + * @param __x Data with which new elements should be populated. + * + * This function will %resize the %vector to the specified + * number of elements. If the number is smaller than the + * %vector's current size the %vector is truncated, otherwise + * the %vector is extended and new elements are populated with + * given data. + */ + 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); + } +#else + /** + * @brief Resizes the %vector to the specified number of elements. + * @param __new_size Number of elements the %vector should contain. + * @param __x Data with which new elements should be populated. + * + * This function will %resize the %vector to the specified + * number of elements. If the number is smaller than the + * %vector's current size the %vector is truncated, otherwise + * the %vector is extended and new elements are populated with + * given data. + */ + void + resize(size_type __new_size, value_type __x = value_type()) + { + 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); + } +#endif + +#if __cplusplus >= 201103L + /** A non-binding request to reduce capacity() to size(). */ + void + shrink_to_fit() + { _M_shrink_to_fit(); } +#endif + + /** + * Returns the total number of elements that the %vector can + * hold before needing to allocate more memory. + */ + size_type + capacity() const _GLIBCXX_NOEXCEPT + { return size_type(this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); } + + /** + * Returns true if the %vector is empty. (Thus begin() would + * equal end().) + */ + bool + empty() const _GLIBCXX_NOEXCEPT + { return begin() == end(); } + + /** + * @brief Attempt to preallocate enough memory for specified number of + * elements. + * @param __n Number of elements required. + * @throw std::length_error If @a n exceeds @c max_size(). + * + * This function attempts to reserve enough memory for the + * %vector to hold the specified number of elements. If the + * number requested is more than max_size(), length_error is + * thrown. + * + * The advantage of this function is that if optimal code is a + * necessity and the user can determine the number of elements + * that will be required, the user can reserve the memory in + * %advance, and thus prevent a possible reallocation of memory + * and copying of %vector data. + */ + void + reserve(size_type __n); + + // element access + /** + * @brief Subscript access to the data contained in the %vector. + * @param __n The index of the element for which data should be + * accessed. + * @return Read/write reference to data. + * + * This operator allows for easy, array-style, data access. + * Note that data access with this operator is unchecked and + * out_of_range lookups are not defined. (For checked lookups + * see at().) + */ + reference + operator[](size_type __n) + { return *(this->_M_impl._M_start + __n); } + + /** + * @brief Subscript access to the data contained in the %vector. + * @param __n The index of the element for which data should be + * accessed. + * @return Read-only (constant) reference to data. + * + * This operator allows for easy, array-style, data access. + * Note that data access with this operator is unchecked and + * out_of_range lookups are not defined. (For checked lookups + * see at().) + */ + const_reference + operator[](size_type __n) const + { return *(this->_M_impl._M_start + __n); } + + protected: + /// Safety check used only from at(). + void + _M_range_check(size_type __n) const + { + if (__n >= this->size()) + __throw_out_of_range(__N("vector::_M_range_check")); + } + + public: + /** + * @brief Provides access to the data contained in the %vector. + * @param __n The index of the element for which data should be + * accessed. + * @return Read/write reference to data. + * @throw std::out_of_range If @a __n is an invalid index. + * + * This function provides for safer data access. The parameter + * is first checked that it is in the range of the vector. The + * function throws out_of_range if the check fails. + */ + reference + at(size_type __n) + { + _M_range_check(__n); + return (*this)[__n]; + } + + /** + * @brief Provides access to the data contained in the %vector. + * @param __n The index of the element for which data should be + * accessed. + * @return Read-only (constant) reference to data. + * @throw std::out_of_range If @a __n is an invalid index. + * + * This function provides for safer data access. The parameter + * is first checked that it is in the range of the vector. The + * function throws out_of_range if the check fails. + */ + const_reference + at(size_type __n) const + { + _M_range_check(__n); + return (*this)[__n]; + } + + /** + * Returns a read/write reference to the data at the first + * element of the %vector. + */ + reference + front() + { return *begin(); } + + /** + * Returns a read-only (constant) reference to the data at the first + * element of the %vector. + */ + const_reference + front() const + { return *begin(); } + + /** + * Returns a read/write reference to the data at the last + * element of the %vector. + */ + reference + back() + { return *(end() - 1); } + + /** + * Returns a read-only (constant) reference to the data at the + * last element of the %vector. + */ + const_reference + back() const + { return *(end() - 1); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 464. Suggestion for new member functions in standard containers. + // data access + /** + * Returns a pointer such that [data(), data() + size()) is a valid + * range. For a non-empty %vector, data() == &front(). + */ +#if __cplusplus >= 201103L + _Tp* +#else + pointer +#endif + data() _GLIBCXX_NOEXCEPT + { return std::__addressof(front()); } + +#if __cplusplus >= 201103L + const _Tp* +#else + const_pointer +#endif + data() const _GLIBCXX_NOEXCEPT + { return std::__addressof(front()); } + + // [23.2.4.3] modifiers + /** + * @brief Add data to the end of the %vector. + * @param __x Data to be added. + * + * This is a typical stack operation. The function creates an + * element at the end of the %vector and assigns the given data + * to it. Due to the nature of a %vector this operation can be + * done in constant time if the %vector has preallocated space + * available. + */ + 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 +#if __cplusplus >= 201103L + _M_emplace_back_aux(__x); +#else + _M_insert_aux(end(), __x); +#endif + } + +#if __cplusplus >= 201103L + void + push_back(value_type&& __x) + { emplace_back(std::move(__x)); } + + template + void + emplace_back(_Args&&... __args); +#endif + + /** + * @brief Removes last element. + * + * This is a typical stack operation. It shrinks the %vector by one. + * + * Note that no data is returned, and if the last element's + * data is needed, it should be retrieved before pop_back() is + * called. + */ + void + pop_back() + { + --this->_M_impl._M_finish; + _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); + } + +#if __cplusplus >= 201103L + /** + * @brief Inserts an object in %vector before specified iterator. + * @param __position An iterator into the %vector. + * @param __args Arguments. + * @return An iterator that points to the inserted data. + * + * This function will insert an object of type T constructed + * with T(std::forward(args)...) before the specified location. + * Note that this kind of operation could be expensive for a %vector + * and if it is frequently used the user should consider using + * std::list. + */ + template + iterator + emplace(iterator __position, _Args&&... __args); +#endif + + /** + * @brief Inserts given value into %vector before specified iterator. + * @param __position An iterator into the %vector. + * @param __x Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given value before + * the specified location. Note that this kind of operation + * could be expensive for a %vector and if it is frequently + * used the user should consider using std::list. + */ + iterator + insert(iterator __position, const value_type& __x); + +#if __cplusplus >= 201103L + /** + * @brief Inserts given rvalue into %vector before specified iterator. + * @param __position An iterator into the %vector. + * @param __x Data to be inserted. + * @return An iterator that points to the inserted data. + * + * This function will insert a copy of the given rvalue before + * the specified location. Note that this kind of operation + * could be expensive for a %vector and if it is frequently + * used the user should consider using std::list. + */ + iterator + insert(iterator __position, value_type&& __x) + { return emplace(__position, std::move(__x)); } + + /** + * @brief Inserts an initializer_list into the %vector. + * @param __position An iterator into the %vector. + * @param __l An initializer_list. + * + * This function will insert copies of the data in the + * initializer_list @a l into the %vector before the location + * specified by @a position. + * + * Note that this kind of operation could be expensive for a + * %vector and if it is frequently used the user should + * consider using std::list. + */ + void + insert(iterator __position, initializer_list __l) + { this->insert(__position, __l.begin(), __l.end()); } +#endif + + /** + * @brief Inserts a number of copies of given data into the %vector. + * @param __position An iterator into the %vector. + * @param __n Number of elements to be inserted. + * @param __x Data to be inserted. + * + * This function will insert a specified number of copies of + * the given data before the location specified by @a position. + * + * Note that this kind of operation could be expensive for a + * %vector and if it is frequently used the user should + * consider using std::list. + */ + void + insert(iterator __position, size_type __n, const value_type& __x) + { _M_fill_insert(__position, __n, __x); } + + /** + * @brief Inserts a range into the %vector. + * @param __position An iterator into the %vector. + * @param __first An input iterator. + * @param __last An input iterator. + * + * This function will insert copies of the data in the range + * [__first,__last) into the %vector before the location specified + * by @a pos. + * + * Note that this kind of operation could be expensive for a + * %vector and if it is frequently used the user should + * consider using std::list. + */ +#if __cplusplus >= 201103L + template> + void + insert(iterator __position, _InputIterator __first, + _InputIterator __last) + { _M_insert_dispatch(__position, __first, __last, __false_type()); } +#else + template + void + insert(iterator __position, _InputIterator __first, + _InputIterator __last) + { + // Check whether it's an integral type. If so, it's not an iterator. + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_insert_dispatch(__position, __first, __last, _Integral()); + } +#endif + + /** + * @brief Remove element at given position. + * @param __position Iterator pointing to element to be erased. + * @return An iterator pointing to the next element (or end()). + * + * This function will erase the element at the given position and thus + * shorten the %vector by one. + * + * Note This operation could be expensive and if it is + * frequently used the user should consider using std::list. + * The user is also cautioned that this function only erases + * the element, and that if the element is itself a pointer, + * the pointed-to memory is not touched in any way. Managing + * the pointer is the user's responsibility. + */ + iterator + erase(iterator __position); + + /** + * @brief Remove a range of elements. + * @param __first Iterator pointing to the first element to be erased. + * @param __last Iterator pointing to one past the last element to be + * erased. + * @return An iterator pointing to the element pointed to by @a __last + * prior to erasing (or end()). + * + * This function will erase the elements in the range + * [__first,__last) and shorten the %vector accordingly. + * + * Note This operation could be expensive and if it is + * frequently used the user should consider using std::list. + * The user is also cautioned that this function only erases + * the elements, and that if the elements themselves are + * pointers, the pointed-to memory is not touched in any way. + * Managing the pointer is the user's responsibility. + */ + iterator + erase(iterator __first, iterator __last); + + /** + * @brief Swaps data with another %vector. + * @param __x A %vector of the same element and allocator types. + * + * This exchanges the elements between two vectors in constant time. + * (Three pointers, so it should be quite fast.) + * Note that the global std::swap() function is specialized such that + * std::swap(v1,v2) will feed to this function. + */ + void + swap(vector& __x) +#if __cplusplus >= 201103L + noexcept(_Alloc_traits::_S_nothrow_swap()) +#endif + { + this->_M_impl._M_swap_data(__x._M_impl); + _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), + __x._M_get_Tp_allocator()); + } + + /** + * Erases all the elements. Note that this function only erases the + * elements, and that if the elements themselves are pointers, the + * pointed-to memory is not touched in any way. Managing the pointer is + * the user's responsibility. + */ + void + clear() _GLIBCXX_NOEXCEPT + { _M_erase_at_end(this->_M_impl._M_start); } + + protected: + /** + * Memory expansion handler. Uses the member allocation function to + * obtain @a n bytes of memory, and then copies [first,last) into it. + */ + template + pointer + _M_allocate_and_copy(size_type __n, + _ForwardIterator __first, _ForwardIterator __last) + { + pointer __result = this->_M_allocate(__n); + __try + { + std::__uninitialized_copy_a(__first, __last, __result, + _M_get_Tp_allocator()); + return __result; + } + __catch(...) + { + _M_deallocate(__result, __n); + __throw_exception_again; + } + } + + + // Internal constructor functions follow. + + // Called by the range constructor to implement [23.1.1]/9 + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + 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); + } + + // Called by the range constructor to implement [23.1.1]/9 + 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()); + } + + // Called by the second initialize_dispatch above + template + void + _M_range_initialize(_InputIterator __first, + _InputIterator __last, std::input_iterator_tag) + { + for (; __first != __last; ++__first) +#if __cplusplus >= 201103L + emplace_back(*__first); +#else + push_back(*__first); +#endif + } + + // Called by the second initialize_dispatch above + 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()); + } + + // Called by the first initialize_dispatch above and by the + // vector(n,value,a) constructor. + 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; + } + +#if __cplusplus >= 201103L + // Called by the vector(n) constructor. + 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; + } +#endif + + // Internal assign functions follow. The *_aux functions do the actual + // assignment work for the range versions. + + // Called by the range assign to implement [23.1.1]/9 + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + // Called by the range assign to implement [23.1.1]/9 + 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()); + } + + // Called by the second assign_dispatch above + template + void + _M_assign_aux(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag); + + // Called by the second assign_dispatch above + template + void + _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag); + + // Called by assign(n,t), and the range assign when it turns out + // to be the same thing. + void + _M_fill_assign(size_type __n, const value_type& __val); + + + // Internal insert functions follow. + + // Called by the range insert to implement [23.1.1]/9 + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, + __true_type) + { _M_fill_insert(__pos, __n, __val); } + + // Called by the range insert to implement [23.1.1]/9 + 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()); + } + + // Called by the second insert_dispatch above + template + void + _M_range_insert(iterator __pos, _InputIterator __first, + _InputIterator __last, std::input_iterator_tag); + + // Called by the second insert_dispatch above + template + void + _M_range_insert(iterator __pos, _ForwardIterator __first, + _ForwardIterator __last, std::forward_iterator_tag); + + // Called by insert(p,n,x), and the range insert when it turns out to be + // the same thing. + void + _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); + +#if __cplusplus >= 201103L + // Called by resize(n). + void + _M_default_append(size_type __n); + + bool + _M_shrink_to_fit(); +#endif + + // Called by insert(p,x) +#if __cplusplus < 201103L + void + _M_insert_aux(iterator __position, const value_type& __x); +#else + template + void + _M_insert_aux(iterator __position, _Args&&... __args); + + template + void + _M_emplace_back_aux(_Args&&... __args); +#endif + + // Called by the latter. + size_type + _M_check_len(size_type __n, const char* __s) const + { + if (max_size() - size() < __n) + __throw_length_error(__N(__s)); + + const size_type __len = size() + std::max(size(), __n); + return (__len < size() || __len > max_size()) ? max_size() : __len; + } + + // Internal erase functions follow. + + // Called by erase(q1,q2), clear(), resize(), _M_fill_assign, + // _M_assign_aux. + 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; + } + +#if __cplusplus >= 201103L + private: + // Constant-time move assignment when source object's memory can be + // moved, either because the source's allocator will move too + // or because the allocators are equal. + 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()); + } + + // Do move assignment when it might not be possible to move source + // object's memory, resulting in a linear-time operation. + 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 + { + // The rvalue's allocator cannot be moved and is not equal, + // so we need to individually move each element. + this->assign(std::__make_move_if_noexcept_iterator(__x.begin()), + std::__make_move_if_noexcept_iterator(__x.end())); + __x.clear(); + } + } +#endif + }; + + + /** + * @brief Vector equality comparison. + * @param __x A %vector. + * @param __y A %vector of the same type as @a __x. + * @return True iff the size and elements of the vectors are equal. + * + * This is an equivalence relation. It is linear in the size of the + * vectors. Vectors are considered equivalent if their sizes are equal, + * and if corresponding elements compare equal. + */ + 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())); } + + /** + * @brief Vector ordering relation. + * @param __x A %vector. + * @param __y A %vector of the same type as @a __x. + * @return True iff @a __x is lexicographically less than @a __y. + * + * This is a total ordering relation. It is linear in the size of the + * vectors. The elements must be comparable with @c <. + * + * See std::lexicographical_compare() for how the determination is made. + */ + 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()); } + + /// Based on operator== + template + inline bool + operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return !(__x == __y); } + + /// Based on operator< + template + inline bool + operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return __y < __x; } + + /// Based on operator< + template + inline bool + operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return !(__y < __x); } + + /// Based on operator< + template + inline bool + operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) + { return !(__x < __y); } + + /// See std::vector::swap(). + template + inline void + swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) + { __x.swap(__y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _STL_VECTOR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stream_iterator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stream_iterator.h new file mode 100644 index 0000000..1d747a9 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stream_iterator.h @@ -0,0 +1,221 @@ +// Stream iterators + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/stream_iterator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iterator} + */ + +#ifndef _STREAM_ITERATOR_H +#define _STREAM_ITERATOR_H 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup iterators + * @{ + */ + + /// Provides input iterator semantics for streams. + 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: + /// Construct end of input stream iterator. + _GLIBCXX_CONSTEXPR istream_iterator() + : _M_stream(0), _M_value(), _M_ok(false) {} + + /// Construct start of input stream iterator. + 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 + { + __glibcxx_requires_cond(_M_ok, + _M_message(__gnu_debug::__msg_deref_istream) + ._M_iterator(*this)); + return _M_value; + } + + const _Tp* + operator->() const { return &(operator*()); } + + istream_iterator& + operator++() + { + __glibcxx_requires_cond(_M_ok, + _M_message(__gnu_debug::__msg_inc_istream) + ._M_iterator(*this)); + _M_read(); + return *this; + } + + istream_iterator + operator++(int) + { + __glibcxx_requires_cond(_M_ok, + _M_message(__gnu_debug::__msg_inc_istream) + ._M_iterator(*this)); + 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; + } + } + }; + + /// Return true if x and y are both end or not end, or x and y are the same. + 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); } + + /// Return false if x and y are both end or not end, or x and y are the same. + 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); } + + /** + * @brief Provides output iterator semantics for streams. + * + * This class provides an iterator to write to an ostream. The type Tp is + * the only type written by this iterator and there must be an + * operator<<(Tp) defined. + * + * @tparam _Tp The type to write to the ostream. + * @tparam _CharT The ostream char_type. + * @tparam _Traits The ostream char_traits. + */ + template > + class ostream_iterator + : public iterator + { + public: + //@{ + /// Public typedef + 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: + /// Construct from an ostream. + ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {} + + /** + * Construct from an ostream. + * + * The delimiter string @a c is written to the stream after every Tp + * written to the stream. The delimiter is not copied, and thus must + * not be destroyed while this iterator is in use. + * + * @param __s Underlying ostream to write to. + * @param __c CharT delimiter string to insert. + */ + ostream_iterator(ostream_type& __s, const _CharT* __c) + : _M_stream(&__s), _M_string(__c) { } + + /// Copy constructor. + ostream_iterator(const ostream_iterator& __obj) + : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { } + + /// Writes @a value to underlying ostream using operator<<. If + /// constructed with delimiter string, writes delimiter to ostream. + ostream_iterator& + operator=(const _Tp& __value) + { + __glibcxx_requires_cond(_M_stream != 0, + _M_message(__gnu_debug::__msg_output_ostream) + ._M_iterator(*this)); + *_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; } + }; + + // @} group iterators + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/streambuf.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/streambuf.tcc new file mode 100644 index 0000000..d4d4565 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/streambuf.tcc @@ -0,0 +1,175 @@ +// Stream buffer classes -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/streambuf.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{streambuf} + */ + +// +// ISO C++ 14882: 27.5 Stream buffers +// + +#ifndef _STREAMBUF_TCC +#define _STREAMBUF_TCC 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + 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; + } + + // Conceivably, this could be used to implement buffer-to-buffer + // copies, if this was ever desired in an un-ambiguous way by the + // standard. + 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); + } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. +#if _GLIBCXX_EXTERN_TEMPLATE + 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&); + +#ifdef _GLIBCXX_USE_WCHAR_T + 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&); +#endif +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/streambuf_iterator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/streambuf_iterator.h new file mode 100644 index 0000000..59be6e8 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/streambuf_iterator.h @@ -0,0 +1,412 @@ +// Streambuf iterators + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/streambuf_iterator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iterator} + */ + +#ifndef _STREAMBUF_ITERATOR_H +#define _STREAMBUF_ITERATOR_H 1 + +#pragma GCC system_header + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup iterators + * @{ + */ + + // 24.5.3 Template class istreambuf_iterator + /// Provides input iterator semantics for streambufs. + template + class istreambuf_iterator + : public iterator= 201103L + // LWG 445. + _CharT> +#else + _CharT&> +#endif + { + public: + // Types: + //@{ + /// Public typedefs + 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: + // 24.5.3 istreambuf_iterator + // p 1 + // If the end of stream is reached (streambuf_type::sgetc() + // returns traits_type::eof()), the iterator becomes equal to + // the "end of stream" iterator value. + // NB: This implementation assumes the "end of stream" value + // is EOF, or -1. + mutable streambuf_type* _M_sbuf; + mutable int_type _M_c; + + public: + /// Construct end of input stream iterator. + _GLIBCXX_CONSTEXPR istreambuf_iterator() _GLIBCXX_USE_NOEXCEPT + : _M_sbuf(0), _M_c(traits_type::eof()) { } + +#if __cplusplus >= 201103L + istreambuf_iterator(const istreambuf_iterator&) noexcept = default; + + ~istreambuf_iterator() = default; +#endif + + /// Construct start of input stream iterator. + istreambuf_iterator(istream_type& __s) _GLIBCXX_USE_NOEXCEPT + : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } + + /// Construct start of streambuf iterator. + istreambuf_iterator(streambuf_type* __s) _GLIBCXX_USE_NOEXCEPT + : _M_sbuf(__s), _M_c(traits_type::eof()) { } + + /// Return the current character pointed to by iterator. This returns + /// streambuf.sgetc(). It cannot be assigned. NB: The result of + /// operator*() on an end of stream is undefined. + char_type + operator*() const + { +#ifdef _GLIBCXX_DEBUG_PEDANTIC + // Dereferencing a past-the-end istreambuf_iterator is a + // libstdc++ extension + __glibcxx_requires_cond(!_M_at_eof(), + _M_message(__gnu_debug::__msg_deref_istreambuf) + ._M_iterator(*this)); +#endif + return traits_type::to_char_type(_M_get()); + } + + /// Advance the iterator. Calls streambuf.sbumpc(). + istreambuf_iterator& + operator++() + { + __glibcxx_requires_cond(!_M_at_eof(), + _M_message(__gnu_debug::__msg_inc_istreambuf) + ._M_iterator(*this)); + if (_M_sbuf) + { + _M_sbuf->sbumpc(); + _M_c = traits_type::eof(); + } + return *this; + } + + /// Advance the iterator. Calls streambuf.sbumpc(). + istreambuf_iterator + operator++(int) + { + __glibcxx_requires_cond(!_M_at_eof(), + _M_message(__gnu_debug::__msg_inc_istreambuf) + ._M_iterator(*this)); + + istreambuf_iterator __old = *this; + if (_M_sbuf) + { + __old._M_c = _M_sbuf->sbumpc(); + _M_c = traits_type::eof(); + } + return __old; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 110 istreambuf_iterator::equal not const + // NB: there is also number 111 (NAD, Future) pending on this function. + /// Return true both iterators are end or both are not end. + 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); } + + /// Provides output iterator semantics for streambufs. + template + class ostreambuf_iterator + : public iterator + { + public: + // Types: + //@{ + /// Public typedefs + 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: + /// Construct output iterator from ostream. + ostreambuf_iterator(ostream_type& __s) _GLIBCXX_USE_NOEXCEPT + : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } + + /// Construct output iterator from streambuf. + ostreambuf_iterator(streambuf_type* __s) _GLIBCXX_USE_NOEXCEPT + : _M_sbuf(__s), _M_failed(!_M_sbuf) { } + + /// Write character to streambuf. Calls streambuf.sputc(). + ostreambuf_iterator& + operator=(_CharT __c) + { + if (!_M_failed && + _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) + _M_failed = true; + return *this; + } + + /// Return *this. + ostreambuf_iterator& + operator*() + { return *this; } + + /// Return *this. + ostreambuf_iterator& + operator++(int) + { return *this; } + + /// Return *this. + ostreambuf_iterator& + operator++() + { return *this; } + + /// Return true if previous operator=() failed. + bool + failed() const _GLIBCXX_USE_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; + } + }; + + // Overloads for streambuf iterators. + 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; + } + +// @} group iterators + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stringfwd.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stringfwd.h new file mode 100644 index 0000000..9601116 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/stringfwd.h @@ -0,0 +1,89 @@ +// Forward declarations -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/stringfwd.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{string} + */ + +// +// ISO C++ 14882: 21 Strings library +// + +#ifndef _STRINGFWD_H +#define _STRINGFWD_H 1 + +#pragma GCC system_header + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup strings Strings + * + * @{ + */ + + template + struct char_traits; + + template, + typename _Alloc = allocator<_CharT> > + class basic_string; + + template<> struct char_traits; + + /// A string of @c char + typedef basic_string string; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> struct char_traits; + + /// A string of @c wchar_t + typedef basic_string wstring; +#endif + +#if ((__cplusplus >= 201103L) \ + && defined(_GLIBCXX_USE_C99_STDINT_TR1)) + + template<> struct char_traits; + template<> struct char_traits; + + /// A string of @c char16_t + typedef basic_string u16string; + + /// A string of @c char32_t + typedef basic_string u32string; + +#endif + /** @} */ + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // _STRINGFWD_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unique_ptr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unique_ptr.h new file mode 100644 index 0000000..66d73b2 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unique_ptr.h @@ -0,0 +1,615 @@ +// unique_ptr implementation -*- C++ -*- + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/unique_ptr.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _UNIQUE_PTR_H +#define _UNIQUE_PTR_H 1 + +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup pointer_abstractions + * @{ + */ + +#if _GLIBCXX_USE_DEPRECATED + template class auto_ptr; +#endif + + /// Primary template, default_delete. + template + struct default_delete + { + constexpr default_delete() noexcept = default; + + template::value>::type> + default_delete(const default_delete<_Up>&) noexcept { } + + void + operator()(_Tp* __ptr) const + { + static_assert(sizeof(_Tp)>0, + "can't delete pointer to incomplete type"); + delete __ptr; + } + }; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 740 - omit specialization for array objects with a compile time length + /// Specialization, default_delete. + template + struct default_delete<_Tp[]> + { + private: + template + using __remove_cv = typename remove_cv<_Up>::type; + + // Like is_base_of<_Tp, _Up> but false if unqualified types are the same + template + using __is_derived_Tp + = __and_< is_base_of<_Tp, _Up>, + __not_, __remove_cv<_Up>>> >; + + public: + constexpr default_delete() noexcept = default; + + template::value>::type> + default_delete(const default_delete<_Up[]>&) noexcept { } + + void + operator()(_Tp* __ptr) const + { + static_assert(sizeof(_Tp)>0, + "can't delete pointer to incomplete type"); + delete [] __ptr; + } + + template + typename enable_if<__is_derived_Tp<_Up>::value>::type + operator()(_Up*) const = delete; + }; + + /// 20.7.1.2 unique_ptr for single objects. + template > + class unique_ptr + { + // use SFINAE to determine whether _Del::pointer exists + class _Pointer + { + template + static typename _Up::pointer __test(typename _Up::pointer*); + + template + static _Tp* __test(...); + + typedef typename remove_reference<_Dp>::type _Del; + + public: + typedef decltype(__test<_Del>(0)) type; + }; + + typedef std::tuple __tuple_type; + __tuple_type _M_t; + + public: + typedef typename _Pointer::type pointer; + typedef _Tp element_type; + typedef _Dp deleter_type; + + // Constructors. + constexpr unique_ptr() noexcept + : _M_t() + { static_assert(!is_pointer::value, + "constructed with null function pointer deleter"); } + + explicit + unique_ptr(pointer __p) noexcept + : _M_t(__p, deleter_type()) + { static_assert(!is_pointer::value, + "constructed with null function pointer deleter"); } + + unique_ptr(pointer __p, + typename conditional::value, + deleter_type, const deleter_type&>::type __d) noexcept + : _M_t(__p, __d) { } + + unique_ptr(pointer __p, + typename remove_reference::type&& __d) noexcept + : _M_t(std::move(__p), std::move(__d)) + { static_assert(!std::is_reference::value, + "rvalue deleter bound to reference"); } + + constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } + + // Move constructors. + unique_ptr(unique_ptr&& __u) noexcept + : _M_t(__u.release(), std::forward(__u.get_deleter())) { } + + template::pointer, pointer>, + __not_>, + typename conditional::value, + is_same<_Ep, _Dp>, + is_convertible<_Ep, _Dp>>::type>> + unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept + : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) + { } + +#if _GLIBCXX_USE_DEPRECATED + template, is_same<_Dp, default_delete<_Tp>>>> + unique_ptr(auto_ptr<_Up>&& __u) noexcept; +#endif + + // Destructor. + ~unique_ptr() noexcept + { + auto& __ptr = std::get<0>(_M_t); + if (__ptr != nullptr) + get_deleter()(__ptr); + __ptr = pointer(); + } + + // Assignment. + unique_ptr& + operator=(unique_ptr&& __u) noexcept + { + reset(__u.release()); + get_deleter() = std::forward(__u.get_deleter()); + return *this; + } + + template + typename enable_if< __and_< + is_convertible::pointer, pointer>, + __not_> + >::value, + unique_ptr&>::type + operator=(unique_ptr<_Up, _Ep>&& __u) noexcept + { + reset(__u.release()); + get_deleter() = std::forward<_Ep>(__u.get_deleter()); + return *this; + } + + unique_ptr& + operator=(nullptr_t) noexcept + { + reset(); + return *this; + } + + // Observers. + typename add_lvalue_reference::type + operator*() const + { + _GLIBCXX_DEBUG_ASSERT(get() != pointer()); + return *get(); + } + + pointer + operator->() const noexcept + { + _GLIBCXX_DEBUG_ASSERT(get() != pointer()); + return get(); + } + + pointer + get() const noexcept + { return std::get<0>(_M_t); } + + deleter_type& + get_deleter() noexcept + { return std::get<1>(_M_t); } + + const deleter_type& + get_deleter() const noexcept + { return std::get<1>(_M_t); } + + explicit operator bool() const noexcept + { return get() == pointer() ? false : true; } + + // Modifiers. + pointer + release() noexcept + { + pointer __p = get(); + std::get<0>(_M_t) = pointer(); + return __p; + } + + void + reset(pointer __p = pointer()) noexcept + { + using std::swap; + swap(std::get<0>(_M_t), __p); + if (__p != pointer()) + get_deleter()(__p); + } + + void + swap(unique_ptr& __u) noexcept + { + using std::swap; + swap(_M_t, __u._M_t); + } + + // Disable copy from lvalue. + unique_ptr(const unique_ptr&) = delete; + unique_ptr& operator=(const unique_ptr&) = delete; + }; + + /// 20.7.1.3 unique_ptr for array objects with a runtime length + // [unique.ptr.runtime] + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 740 - omit specialization for array objects with a compile time length + template + class unique_ptr<_Tp[], _Dp> + { + // use SFINAE to determine whether _Del::pointer exists + class _Pointer + { + template + static typename _Up::pointer __test(typename _Up::pointer*); + + template + static _Tp* __test(...); + + typedef typename remove_reference<_Dp>::type _Del; + + public: + typedef decltype(__test<_Del>(0)) type; + }; + + typedef std::tuple __tuple_type; + __tuple_type _M_t; + + template + using __remove_cv = typename remove_cv<_Up>::type; + + // like is_base_of<_Tp, _Up> but false if unqualified types are the same + template + using __is_derived_Tp + = __and_< is_base_of<_Tp, _Up>, + __not_, __remove_cv<_Up>>> >; + + template::pointer> + using __safe_conversion = __and_< + is_convertible<_Up_pointer, _Tp_pointer>, + is_array<_Up>, + __or_<__not_>, + __not_>, + __not_<__is_derived_Tp::type>> + > + >; + + public: + typedef typename _Pointer::type pointer; + typedef _Tp element_type; + typedef _Dp deleter_type; + + // Constructors. + constexpr unique_ptr() noexcept + : _M_t() + { static_assert(!std::is_pointer::value, + "constructed with null function pointer deleter"); } + + explicit + unique_ptr(pointer __p) noexcept + : _M_t(__p, deleter_type()) + { static_assert(!is_pointer::value, + "constructed with null function pointer deleter"); } + + template, + is_convertible<_Up*, pointer>, __is_derived_Tp<_Up>>> + explicit + unique_ptr(_Up* __p) = delete; + + unique_ptr(pointer __p, + typename conditional::value, + deleter_type, const deleter_type&>::type __d) noexcept + : _M_t(__p, __d) { } + + unique_ptr(pointer __p, typename + remove_reference::type&& __d) noexcept + : _M_t(std::move(__p), std::move(__d)) + { static_assert(!is_reference::value, + "rvalue deleter bound to reference"); } + + // Move constructor. + unique_ptr(unique_ptr&& __u) noexcept + : _M_t(__u.release(), std::forward(__u.get_deleter())) { } + + constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } + + template, + typename conditional::value, + is_same<_Ep, _Dp>, + is_convertible<_Ep, _Dp>>::type + >> + unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept + : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) + { } + + // Destructor. + ~unique_ptr() + { + auto& __ptr = std::get<0>(_M_t); + if (__ptr != nullptr) + get_deleter()(__ptr); + __ptr = pointer(); + } + + // Assignment. + unique_ptr& + operator=(unique_ptr&& __u) noexcept + { + reset(__u.release()); + get_deleter() = std::forward(__u.get_deleter()); + return *this; + } + + template + typename + enable_if<__safe_conversion<_Up, _Ep>::value, unique_ptr&>::type + operator=(unique_ptr<_Up, _Ep>&& __u) noexcept + { + reset(__u.release()); + get_deleter() = std::forward<_Ep>(__u.get_deleter()); + return *this; + } + + unique_ptr& + operator=(nullptr_t) noexcept + { + reset(); + return *this; + } + + // Observers. + typename std::add_lvalue_reference::type + operator[](size_t __i) const + { + _GLIBCXX_DEBUG_ASSERT(get() != pointer()); + return get()[__i]; + } + + pointer + get() const noexcept + { return std::get<0>(_M_t); } + + deleter_type& + get_deleter() noexcept + { return std::get<1>(_M_t); } + + const deleter_type& + get_deleter() const noexcept + { return std::get<1>(_M_t); } + + explicit operator bool() const noexcept + { return get() == pointer() ? false : true; } + + // Modifiers. + pointer + release() noexcept + { + pointer __p = get(); + std::get<0>(_M_t) = pointer(); + return __p; + } + + void + reset() noexcept + { reset(pointer()); } + + void + reset(pointer __p) noexcept + { + using std::swap; + swap(std::get<0>(_M_t), __p); + if (__p != nullptr) + get_deleter()(__p); + } + + template, + is_convertible<_Up*, pointer>, __is_derived_Tp<_Up>>> + void reset(_Up*) = delete; + + void + swap(unique_ptr& __u) noexcept + { + using std::swap; + swap(_M_t, __u._M_t); + } + + // Disable copy from lvalue. + unique_ptr(const unique_ptr&) = delete; + unique_ptr& operator=(const unique_ptr&) = delete; + + // Disable construction from convertible pointer types. + template, + is_convertible<_Up*, pointer>, __is_derived_Tp<_Up>>> + unique_ptr(_Up*, typename + conditional::value, + deleter_type, const deleter_type&>::type) = delete; + + template, + is_convertible<_Up*, pointer>, __is_derived_Tp<_Up>>> + unique_ptr(_Up*, typename + remove_reference::type&&) = delete; + }; + + template + inline void + swap(unique_ptr<_Tp, _Dp>& __x, + unique_ptr<_Tp, _Dp>& __y) noexcept + { __x.swap(__y); } + + template + inline bool + operator==(const unique_ptr<_Tp, _Dp>& __x, + const unique_ptr<_Up, _Ep>& __y) + { return __x.get() == __y.get(); } + + template + inline bool + operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept + { return !__x; } + + template + inline bool + operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept + { return !__x; } + + template + inline bool + operator!=(const unique_ptr<_Tp, _Dp>& __x, + const unique_ptr<_Up, _Ep>& __y) + { return __x.get() != __y.get(); } + + template + inline bool + operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept + { return (bool)__x; } + + template + inline bool + operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept + { return (bool)__x; } + + template + inline bool + operator<(const unique_ptr<_Tp, _Dp>& __x, + const unique_ptr<_Up, _Ep>& __y) + { + typedef typename + std::common_type::pointer, + typename unique_ptr<_Up, _Ep>::pointer>::type _CT; + return std::less<_CT>()(__x.get(), __y.get()); + } + + template + inline bool + operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) + { return std::less::pointer>()(__x.get(), + nullptr); } + + template + inline bool + operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) + { return std::less::pointer>()(nullptr, + __x.get()); } + + template + inline bool + operator<=(const unique_ptr<_Tp, _Dp>& __x, + const unique_ptr<_Up, _Ep>& __y) + { return !(__y < __x); } + + template + inline bool + operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) + { return !(nullptr < __x); } + + template + inline bool + operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) + { return !(__x < nullptr); } + + template + inline bool + operator>(const unique_ptr<_Tp, _Dp>& __x, + const unique_ptr<_Up, _Ep>& __y) + { return (__y < __x); } + + template + inline bool + operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) + { return std::less::pointer>()(nullptr, + __x.get()); } + + template + inline bool + operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) + { return std::less::pointer>()(__x.get(), + nullptr); } + + template + inline bool + operator>=(const unique_ptr<_Tp, _Dp>& __x, + const unique_ptr<_Up, _Ep>& __y) + { return !(__x < __y); } + + template + inline bool + operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) + { return !(__x < nullptr); } + + template + inline bool + operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) + { return !(nullptr < __x); } + + /// std::hash specialization for unique_ptr. + template + struct hash> + : public __hash_base> + { + size_t + operator()(const unique_ptr<_Tp, _Dp>& __u) const noexcept + { + typedef unique_ptr<_Tp, _Dp> _UP; + return std::hash()(__u.get()); + } + }; + + // @} group pointer_abstractions + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _UNIQUE_PTR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unordered_map.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unordered_map.h new file mode 100644 index 0000000..ed85e27 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unordered_map.h @@ -0,0 +1,1413 @@ +// unordered_map implementation -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/unordered_map.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{unordered_map} + */ + +#ifndef _UNORDERED_MAP_H +#define _UNORDERED_MAP_H + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /// Base types for unordered_map. + template + using __umap_traits = __detail::_Hashtable_traits<_Cache, false, true>; + + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator >, + typename _Tr = __umap_traits<__cache_default<_Key, _Hash>::value>> + using __umap_hashtable = _Hashtable<_Key, std::pair, + _Alloc, __detail::_Select1st, + _Pred, _Hash, + __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, _Tr>; + + /// Base types for unordered_multimap. + template + using __ummap_traits = __detail::_Hashtable_traits<_Cache, false, false>; + + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator >, + typename _Tr = __ummap_traits<__cache_default<_Key, _Hash>::value>> + using __ummap_hashtable = _Hashtable<_Key, std::pair, + _Alloc, __detail::_Select1st, + _Pred, _Hash, + __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, _Tr>; + + /** + * @brief A standard container composed of unique keys (containing + * at most one of each key value) that associates values of another type + * with the keys. + * + * @ingroup unordered_associative_containers + * + * @tparam _Key Type of key objects. + * @tparam _Tp Type of mapped objects. + * @tparam _Hash Hashing function object type, defaults to hash<_Value>. + * @tparam _Pred Predicate function object type, defaults + * to equal_to<_Value>. + * @tparam _Alloc Allocator type, defaults to allocator<_Key>. + * + * Meets the requirements of a container, and + * unordered associative container + * + * The resulting value type of the container is std::pair. + * + * Base is _Hashtable, dispatched at compile time via template + * alias __umap_hashtable. + */ + template, + class _Pred = std::equal_to<_Key>, + class _Alloc = std::allocator > > + class unordered_map : __check_copy_constructible<_Alloc> + { + typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; + _Hashtable _M_h; + + public: + // typedefs: + //@{ + /// Public typedefs. + typedef typename _Hashtable::key_type key_type; + typedef typename _Hashtable::value_type value_type; + typedef typename _Hashtable::mapped_type mapped_type; + typedef typename _Hashtable::hasher hasher; + typedef typename _Hashtable::key_equal key_equal; + typedef typename _Hashtable::allocator_type allocator_type; + //@} + + //@{ + /// Iterator-related typedefs. + typedef typename allocator_type::pointer pointer; + typedef typename allocator_type::const_pointer const_pointer; + typedef typename allocator_type::reference reference; + typedef typename allocator_type::const_reference const_reference; + typedef typename _Hashtable::iterator iterator; + typedef typename _Hashtable::const_iterator const_iterator; + typedef typename _Hashtable::local_iterator local_iterator; + typedef typename _Hashtable::const_local_iterator const_local_iterator; + typedef typename _Hashtable::size_type size_type; + typedef typename _Hashtable::difference_type difference_type; + //@} + + //construct/destroy/copy + + /** + * @brief Default constructor creates no elements. + * @param __n Initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + */ + explicit + unordered_map(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__n, __hf, __eql, __a) + { } + + /** + * @brief Builds an %unordered_map from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_map consisting of copies of the elements from + * [__first,__last). This is linear in N (where N is + * distance(__first,__last)). + */ + template + unordered_map(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__f, __l, __n, __hf, __eql, __a) + { } + + /// Copy constructor. + unordered_map(const unordered_map&) = default; + + /// Move constructor. + unordered_map(unordered_map&&) = default; + + /** + * @brief Builds an %unordered_map from an initializer_list. + * @param __l An initializer_list. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_map consisting of copies of the elements in the + * list. This is linear in N (where N is @a __l.size()). + */ + unordered_map(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__l, __n, __hf, __eql, __a) + { } + + /// Copy assignment operator. + unordered_map& + operator=(const unordered_map&) = default; + + /// Move assignment operator. + unordered_map& + operator=(unordered_map&&) = default; + + /** + * @brief %Unordered_map list assignment operator. + * @param __l An initializer_list. + * + * This function fills an %unordered_map with copies of the elements in + * the initializer list @a __l. + * + * Note that the assignment completely changes the %unordered_map and + * that the resulting %unordered_map's size is the same as the number + * of elements assigned. Old data may be lost. + */ + unordered_map& + operator=(initializer_list __l) + { + _M_h = __l; + return *this; + } + + /// Returns the allocator object with which the %unordered_map was + /// constructed. + allocator_type + get_allocator() const noexcept + { return _M_h.get_allocator(); } + + // size and capacity: + + /// Returns true if the %unordered_map is empty. + bool + empty() const noexcept + { return _M_h.empty(); } + + /// Returns the size of the %unordered_map. + size_type + size() const noexcept + { return _M_h.size(); } + + /// Returns the maximum size of the %unordered_map. + size_type + max_size() const noexcept + { return _M_h.max_size(); } + + // iterators. + + /** + * Returns a read/write iterator that points to the first element in the + * %unordered_map. + */ + iterator + begin() noexcept + { return _M_h.begin(); } + + //@{ + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_map. + */ + const_iterator + begin() const noexcept + { return _M_h.begin(); } + + const_iterator + cbegin() const noexcept + { return _M_h.begin(); } + //@} + + /** + * Returns a read/write iterator that points one past the last element in + * the %unordered_map. + */ + iterator + end() noexcept + { return _M_h.end(); } + + //@{ + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_map. + */ + const_iterator + end() const noexcept + { return _M_h.end(); } + + const_iterator + cend() const noexcept + { return _M_h.end(); } + //@} + + // modifiers. + + /** + * @brief Attempts to build and insert a std::pair into the %unordered_map. + * + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted pair, and the second is a bool that + * is true if the pair was actually inserted. + * + * This function attempts to build and insert a (key, value) %pair into + * the %unordered_map. + * An %unordered_map relies on unique keys and thus a %pair is only + * inserted if its first element (the key) is not already present in the + * %unordered_map. + * + * Insertion requires amortized constant time. + */ + template + std::pair + emplace(_Args&&... __args) + { return _M_h.emplace(std::forward<_Args>(__args)...); } + + /** + * @brief Attempts to build and insert a std::pair into the %unordered_map. + * + * @param __pos An iterator that serves as a hint as to where the pair + * should be inserted. + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * @return An iterator that points to the element with key of the + * std::pair built from @a __args (may or may not be that + * std::pair). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument emplace() + * does. + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } + + //@{ + /** + * @brief Attempts to insert a std::pair into the %unordered_map. + + * @param __x Pair to be inserted (see std::make_pair for easy + * creation of pairs). + * + * @return A pair, of which the first element is an iterator that + * points to the possibly inserted pair, and the second is + * a bool that is true if the pair was actually inserted. + * + * This function attempts to insert a (key, value) %pair into the + * %unordered_map. An %unordered_map relies on unique keys and thus a + * %pair is only inserted if its first element (the key) is not already + * present in the %unordered_map. + * + * Insertion requires amortized constant time. + */ + std::pair + insert(const value_type& __x) + { return _M_h.insert(__x); } + + template::value>::type> + std::pair + insert(_Pair&& __x) + { return _M_h.insert(std::forward<_Pair>(__x)); } + //@} + + //@{ + /** + * @brief Attempts to insert a std::pair into the %unordered_map. + * @param __hint An iterator that serves as a hint as to where the + * pair should be inserted. + * @param __x Pair to be inserted (see std::make_pair for easy creation + * of pairs). + * @return An iterator that points to the element with key of + * @a __x (may or may not be the %pair passed in). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument insert() + * does. Note that the first parameter is only a hint and can + * potentially improve the performance of the insertion process. A bad + * hint would cause no gains in efficiency. + * + * See + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + iterator + insert(const_iterator __hint, const value_type& __x) + { return _M_h.insert(__hint, __x); } + + template::value>::type> + iterator + insert(const_iterator __hint, _Pair&& __x) + { return _M_h.insert(__hint, std::forward<_Pair>(__x)); } + //@} + + /** + * @brief A template function that attempts to insert a range of + * elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_h.insert(__first, __last); } + + /** + * @brief Attempts to insert a list of elements into the %unordered_map. + * @param __l A std::initializer_list of elements + * to be inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { _M_h.insert(__l); } + + //@{ + /** + * @brief Erases an element from an %unordered_map. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a __position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from an %unordered_map. + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_h.erase(__position); } + + // LWG 2059. + iterator + erase(iterator __it) + { return _M_h.erase(__it); } + //@} + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * an %unordered_map. For an %unordered_map the result of this function + * can only be 0 (not present) or 1 (present). + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_h.erase(__x); } + + /** + * @brief Erases a [__first,__last) range of elements from an + * %unordered_map. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from an %unordered_map. + * Note that this function only erases the elements, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_h.erase(__first, __last); } + + /** + * Erases all elements in an %unordered_map. + * Note that this function only erases the elements, and that if the + * elements themselves are pointers, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + void + clear() noexcept + { _M_h.clear(); } + + /** + * @brief Swaps data with another %unordered_map. + * @param __x An %unordered_map of the same element and allocator + * types. + * + * This exchanges the elements between two %unordered_map in constant time. + * Note that the global std::swap() function is specialized such that + * std::swap(m1,m2) will feed to this function. + */ + void + swap(unordered_map& __x) + { _M_h.swap(__x._M_h); } + + // observers. + + /// Returns the hash functor object with which the %unordered_map was + /// constructed. + hasher + hash_function() const + { return _M_h.hash_function(); } + + /// Returns the key comparison object with which the %unordered_map was + /// constructed. + key_equal + key_eq() const + { return _M_h.key_eq(); } + + // lookup. + + //@{ + /** + * @brief Tries to locate an element in an %unordered_map. + * @param __x Key to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_h.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_h.find(__x); } + //@} + + /** + * @brief Finds the number of elements. + * @param __x Key to count. + * @return Number of elements with specified key. + * + * This function only makes sense for %unordered_multimap; for + * %unordered_map the result will either be 0 (not present) or 1 + * (present). + */ + size_type + count(const key_type& __x) const + { return _M_h.count(__x); } + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + * + * This function probably only makes sense for %unordered_multimap. + */ + std::pair + equal_range(const key_type& __x) + { return _M_h.equal_range(__x); } + + std::pair + equal_range(const key_type& __x) const + { return _M_h.equal_range(__x); } + //@} + + //@{ + /** + * @brief Subscript ( @c [] ) access to %unordered_map data. + * @param __k The key for which data should be retrieved. + * @return A reference to the data of the (key,data) %pair. + * + * Allows for easy lookup with the subscript ( @c [] )operator. Returns + * data associated with the key specified in subscript. If the key does + * not exist, a pair with that key is created using default values, which + * is then returned. + * + * Lookup requires constant time. + */ + mapped_type& + operator[](const key_type& __k) + { return _M_h[__k]; } + + mapped_type& + operator[](key_type&& __k) + { return _M_h[std::move(__k)]; } + //@} + + //@{ + /** + * @brief Access to %unordered_map data. + * @param __k The key for which data should be retrieved. + * @return A reference to the data whose key is equal to @a __k, if + * such a data is present in the %unordered_map. + * @throw std::out_of_range If no such data is present. + */ + mapped_type& + at(const key_type& __k) + { return _M_h.at(__k); } + + const mapped_type& + at(const key_type& __k) const + { return _M_h.at(__k); } + //@} + + // bucket interface. + + /// Returns the number of buckets of the %unordered_map. + size_type + bucket_count() const noexcept + { return _M_h.bucket_count(); } + + /// Returns the maximum number of buckets of the %unordered_map. + size_type + max_bucket_count() const noexcept + { return _M_h.max_bucket_count(); } + + /* + * @brief Returns the number of elements in a given bucket. + * @param __n A bucket index. + * @return The number of elements in the bucket. + */ + size_type + bucket_size(size_type __n) const + { return _M_h.bucket_size(__n); } + + /* + * @brief Returns the bucket index of a given element. + * @param __key A key instance. + * @return The key bucket index. + */ + size_type + bucket(const key_type& __key) const + { return _M_h.bucket(__key); } + + /** + * @brief Returns a read/write iterator pointing to the first bucket + * element. + * @param __n The bucket index. + * @return A read/write local iterator. + */ + local_iterator + begin(size_type __n) + { return _M_h.begin(__n); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to the first + * bucket element. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + const_local_iterator + begin(size_type __n) const + { return _M_h.begin(__n); } + + const_local_iterator + cbegin(size_type __n) const + { return _M_h.cbegin(__n); } + //@} + + /** + * @brief Returns a read/write iterator pointing to one past the last + * bucket elements. + * @param __n The bucket index. + * @return A read/write local iterator. + */ + local_iterator + end(size_type __n) + { return _M_h.end(__n); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to one past + * the last bucket elements. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + const_local_iterator + end(size_type __n) const + { return _M_h.end(__n); } + + const_local_iterator + cend(size_type __n) const + { return _M_h.cend(__n); } + //@} + + // hash policy. + + /// Returns the average number of elements per bucket. + float + load_factor() const noexcept + { return _M_h.load_factor(); } + + /// Returns a positive number that the %unordered_map tries to keep the + /// load factor less than or equal to. + float + max_load_factor() const noexcept + { return _M_h.max_load_factor(); } + + /** + * @brief Change the %unordered_map maximum load factor. + * @param __z The new maximum load factor. + */ + void + max_load_factor(float __z) + { _M_h.max_load_factor(__z); } + + /** + * @brief May rehash the %unordered_map. + * @param __n The new number of buckets. + * + * Rehash will occur only if the new number of buckets respect the + * %unordered_map maximum load factor. + */ + void + rehash(size_type __n) + { _M_h.rehash(__n); } + + /** + * @brief Prepare the %unordered_map for a specified number of + * elements. + * @param __n Number of elements required. + * + * Same as rehash(ceil(n / max_load_factor())). + */ + void + reserve(size_type __n) + { _M_h.reserve(__n); } + + template + friend bool + operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, + const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&); + }; + + /** + * @brief A standard container composed of equivalent keys + * (possibly containing multiple of each key value) that associates + * values of another type with the keys. + * + * @ingroup unordered_associative_containers + * + * @tparam _Key Type of key objects. + * @tparam _Tp Type of mapped objects. + * @tparam _Hash Hashing function object type, defaults to hash<_Value>. + * @tparam _Pred Predicate function object type, defaults + * to equal_to<_Value>. + * @tparam _Alloc Allocator type, defaults to allocator<_Key>. + * + * Meets the requirements of a container, and + * unordered associative container + * + * The resulting value type of the container is std::pair. + * + * Base is _Hashtable, dispatched at compile time via template + * alias __ummap_hashtable. + */ + template, + class _Pred = std::equal_to<_Key>, + class _Alloc = std::allocator > > + class unordered_multimap : __check_copy_constructible<_Alloc> + { + typedef __ummap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; + _Hashtable _M_h; + + public: + // typedefs: + //@{ + /// Public typedefs. + typedef typename _Hashtable::key_type key_type; + typedef typename _Hashtable::value_type value_type; + typedef typename _Hashtable::mapped_type mapped_type; + typedef typename _Hashtable::hasher hasher; + typedef typename _Hashtable::key_equal key_equal; + typedef typename _Hashtable::allocator_type allocator_type; + //@} + + //@{ + /// Iterator-related typedefs. + typedef typename allocator_type::pointer pointer; + typedef typename allocator_type::const_pointer const_pointer; + typedef typename allocator_type::reference reference; + typedef typename allocator_type::const_reference const_reference; + typedef typename _Hashtable::iterator iterator; + typedef typename _Hashtable::const_iterator const_iterator; + typedef typename _Hashtable::local_iterator local_iterator; + typedef typename _Hashtable::const_local_iterator const_local_iterator; + typedef typename _Hashtable::size_type size_type; + typedef typename _Hashtable::difference_type difference_type; + //@} + + //construct/destroy/copy + + /** + * @brief Default constructor creates no elements. + * @param __n Initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + */ + explicit + unordered_multimap(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__n, __hf, __eql, __a) + { } + + /** + * @brief Builds an %unordered_multimap from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_multimap consisting of copies of the elements + * from [__first,__last). This is linear in N (where N is + * distance(__first,__last)). + */ + template + unordered_multimap(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__f, __l, __n, __hf, __eql, __a) + { } + + /// Copy constructor. + unordered_multimap(const unordered_multimap&) = default; + + /// Move constructor. + unordered_multimap(unordered_multimap&&) = default; + + /** + * @brief Builds an %unordered_multimap from an initializer_list. + * @param __l An initializer_list. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_multimap consisting of copies of the elements in + * the list. This is linear in N (where N is @a __l.size()). + */ + unordered_multimap(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__l, __n, __hf, __eql, __a) + { } + + /// Copy assignment operator. + unordered_multimap& + operator=(const unordered_multimap&) = default; + + /// Move assignment operator. + unordered_multimap& + operator=(unordered_multimap&&) = default; + + /** + * @brief %Unordered_multimap list assignment operator. + * @param __l An initializer_list. + * + * This function fills an %unordered_multimap with copies of the elements + * in the initializer list @a __l. + * + * Note that the assignment completely changes the %unordered_multimap + * and that the resulting %unordered_multimap's size is the same as the + * number of elements assigned. Old data may be lost. + */ + unordered_multimap& + operator=(initializer_list __l) + { + _M_h = __l; + return *this; + } + + /// Returns the allocator object with which the %unordered_multimap was + /// constructed. + allocator_type + get_allocator() const noexcept + { return _M_h.get_allocator(); } + + // size and capacity: + + /// Returns true if the %unordered_multimap is empty. + bool + empty() const noexcept + { return _M_h.empty(); } + + /// Returns the size of the %unordered_multimap. + size_type + size() const noexcept + { return _M_h.size(); } + + /// Returns the maximum size of the %unordered_multimap. + size_type + max_size() const noexcept + { return _M_h.max_size(); } + + // iterators. + + /** + * Returns a read/write iterator that points to the first element in the + * %unordered_multimap. + */ + iterator + begin() noexcept + { return _M_h.begin(); } + + //@{ + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_multimap. + */ + const_iterator + begin() const noexcept + { return _M_h.begin(); } + + const_iterator + cbegin() const noexcept + { return _M_h.begin(); } + //@} + + /** + * Returns a read/write iterator that points one past the last element in + * the %unordered_multimap. + */ + iterator + end() noexcept + { return _M_h.end(); } + + //@{ + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_multimap. + */ + const_iterator + end() const noexcept + { return _M_h.end(); } + + const_iterator + cend() const noexcept + { return _M_h.end(); } + //@} + + // modifiers. + + /** + * @brief Attempts to build and insert a std::pair into the + * %unordered_multimap. + * + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * + * @return An iterator that points to the inserted pair. + * + * This function attempts to build and insert a (key, value) %pair into + * the %unordered_multimap. + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace(_Args&&... __args) + { return _M_h.emplace(std::forward<_Args>(__args)...); } + + /** + * @brief Attempts to build and insert a std::pair into the %unordered_multimap. + * + * @param __pos An iterator that serves as a hint as to where the pair + * should be inserted. + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * @return An iterator that points to the element with key of the + * std::pair built from @a __args. + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } + + //@{ + /** + * @brief Inserts a std::pair into the %unordered_multimap. + * @param __x Pair to be inserted (see std::make_pair for easy + * creation of pairs). + * + * @return An iterator that points to the inserted pair. + * + * Insertion requires amortized constant time. + */ + iterator + insert(const value_type& __x) + { return _M_h.insert(__x); } + + template::value>::type> + iterator + insert(_Pair&& __x) + { return _M_h.insert(std::forward<_Pair>(__x)); } + //@} + + //@{ + /** + * @brief Inserts a std::pair into the %unordered_multimap. + * @param __hint An iterator that serves as a hint as to where the + * pair should be inserted. + * @param __x Pair to be inserted (see std::make_pair for easy creation + * of pairs). + * @return An iterator that points to the element with key of + * @a __x (may or may not be the %pair passed in). + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + iterator + insert(const_iterator __hint, const value_type& __x) + { return _M_h.insert(__hint, __x); } + + template::value>::type> + iterator + insert(const_iterator __hint, _Pair&& __x) + { return _M_h.insert(__hint, std::forward<_Pair>(__x)); } + //@} + + /** + * @brief A template function that attempts to insert a range of + * elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_h.insert(__first, __last); } + + /** + * @brief Attempts to insert a list of elements into the + * %unordered_multimap. + * @param __l A std::initializer_list of elements + * to be inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { _M_h.insert(__l); } + + //@{ + /** + * @brief Erases an element from an %unordered_multimap. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a __position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from an %unordered_multimap. + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_h.erase(__position); } + + // LWG 2059. + iterator + erase(iterator __it) + { return _M_h.erase(__it); } + //@} + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of elements to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * an %unordered_multimap. + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_h.erase(__x); } + + /** + * @brief Erases a [__first,__last) range of elements from an + * %unordered_multimap. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from an + * %unordered_multimap. + * Note that this function only erases the elements, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_h.erase(__first, __last); } + + /** + * Erases all elements in an %unordered_multimap. + * Note that this function only erases the elements, and that if the + * elements themselves are pointers, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + void + clear() noexcept + { _M_h.clear(); } + + /** + * @brief Swaps data with another %unordered_multimap. + * @param __x An %unordered_multimap of the same element and allocator + * types. + * + * This exchanges the elements between two %unordered_multimap in + * constant time. + * Note that the global std::swap() function is specialized such that + * std::swap(m1,m2) will feed to this function. + */ + void + swap(unordered_multimap& __x) + { _M_h.swap(__x._M_h); } + + // observers. + + /// Returns the hash functor object with which the %unordered_multimap + /// was constructed. + hasher + hash_function() const + { return _M_h.hash_function(); } + + /// Returns the key comparison object with which the %unordered_multimap + /// was constructed. + key_equal + key_eq() const + { return _M_h.key_eq(); } + + // lookup. + + //@{ + /** + * @brief Tries to locate an element in an %unordered_multimap. + * @param __x Key to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_h.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_h.find(__x); } + //@} + + /** + * @brief Finds the number of elements. + * @param __x Key to count. + * @return Number of elements with specified key. + */ + size_type + count(const key_type& __x) const + { return _M_h.count(__x); } + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + */ + std::pair + equal_range(const key_type& __x) + { return _M_h.equal_range(__x); } + + std::pair + equal_range(const key_type& __x) const + { return _M_h.equal_range(__x); } + //@} + + // bucket interface. + + /// Returns the number of buckets of the %unordered_multimap. + size_type + bucket_count() const noexcept + { return _M_h.bucket_count(); } + + /// Returns the maximum number of buckets of the %unordered_multimap. + size_type + max_bucket_count() const noexcept + { return _M_h.max_bucket_count(); } + + /* + * @brief Returns the number of elements in a given bucket. + * @param __n A bucket index. + * @return The number of elements in the bucket. + */ + size_type + bucket_size(size_type __n) const + { return _M_h.bucket_size(__n); } + + /* + * @brief Returns the bucket index of a given element. + * @param __key A key instance. + * @return The key bucket index. + */ + size_type + bucket(const key_type& __key) const + { return _M_h.bucket(__key); } + + /** + * @brief Returns a read/write iterator pointing to the first bucket + * element. + * @param __n The bucket index. + * @return A read/write local iterator. + */ + local_iterator + begin(size_type __n) + { return _M_h.begin(__n); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to the first + * bucket element. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + const_local_iterator + begin(size_type __n) const + { return _M_h.begin(__n); } + + const_local_iterator + cbegin(size_type __n) const + { return _M_h.cbegin(__n); } + //@} + + /** + * @brief Returns a read/write iterator pointing to one past the last + * bucket elements. + * @param __n The bucket index. + * @return A read/write local iterator. + */ + local_iterator + end(size_type __n) + { return _M_h.end(__n); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to one past + * the last bucket elements. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + const_local_iterator + end(size_type __n) const + { return _M_h.end(__n); } + + const_local_iterator + cend(size_type __n) const + { return _M_h.cend(__n); } + //@} + + // hash policy. + + /// Returns the average number of elements per bucket. + float + load_factor() const noexcept + { return _M_h.load_factor(); } + + /// Returns a positive number that the %unordered_multimap tries to keep + /// the load factor less than or equal to. + float + max_load_factor() const noexcept + { return _M_h.max_load_factor(); } + + /** + * @brief Change the %unordered_multimap maximum load factor. + * @param __z The new maximum load factor. + */ + void + max_load_factor(float __z) + { _M_h.max_load_factor(__z); } + + /** + * @brief May rehash the %unordered_multimap. + * @param __n The new number of buckets. + * + * Rehash will occur only if the new number of buckets respect the + * %unordered_multimap maximum load factor. + */ + void + rehash(size_type __n) + { _M_h.rehash(__n); } + + /** + * @brief Prepare the %unordered_multimap for a specified number of + * elements. + * @param __n Number of elements required. + * + * Same as rehash(ceil(n / max_load_factor())). + */ + void + reserve(size_type __n) + { _M_h.reserve(__n); } + + template + friend bool + operator==(const unordered_multimap<_Key1, _Tp1, + _Hash1, _Pred1, _Alloc1>&, + const unordered_multimap<_Key1, _Tp1, + _Hash1, _Pred1, _Alloc1>&); + }; + + template + inline void + swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline void + swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return __x._M_h._M_equal(__y._M_h); } + + template + inline bool + operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + + template + inline bool + operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return __x._M_h._M_equal(__y._M_h); } + + template + inline bool + operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _UNORDERED_MAP_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unordered_set.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unordered_set.h new file mode 100644 index 0000000..50c233d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/unordered_set.h @@ -0,0 +1,1296 @@ +// unordered_set implementation -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/unordered_set.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{unordered_set} + */ + +#ifndef _UNORDERED_SET_H +#define _UNORDERED_SET_H + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /// Base types for unordered_set. + template + using __uset_traits = __detail::_Hashtable_traits<_Cache, true, true>; + + template, + typename _Pred = std::equal_to<_Value>, + typename _Alloc = std::allocator<_Value>, + typename _Tr = __uset_traits<__cache_default<_Value, _Hash>::value>> + using __uset_hashtable = _Hashtable<_Value, _Value, _Alloc, + __detail::_Identity, _Pred, _Hash, + __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, _Tr>; + + /// Base types for unordered_multiset. + template + using __umset_traits = __detail::_Hashtable_traits<_Cache, true, false>; + + template, + typename _Pred = std::equal_to<_Value>, + typename _Alloc = std::allocator<_Value>, + typename _Tr = __umset_traits<__cache_default<_Value, _Hash>::value>> + using __umset_hashtable = _Hashtable<_Value, _Value, _Alloc, + __detail::_Identity, + _Pred, _Hash, + __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, _Tr>; + + /** + * @brief A standard container composed of unique keys (containing + * at most one of each key value) in which the elements' keys are + * the elements themselves. + * + * @ingroup unordered_associative_containers + * + * @tparam _Value Type of key objects. + * @tparam _Hash Hashing function object type, defaults to hash<_Value>. + + * @tparam _Pred Predicate function object type, defaults to + * equal_to<_Value>. + * + * @tparam _Alloc Allocator type, defaults to allocator<_Key>. + * + * Meets the requirements of a container, and + * unordered associative container + * + * Base is _Hashtable, dispatched at compile time via template + * alias __uset_hashtable. + */ + template, + class _Pred = std::equal_to<_Value>, + class _Alloc = std::allocator<_Value> > + class unordered_set : __check_copy_constructible<_Alloc> + { + typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; + _Hashtable _M_h; + + public: + // typedefs: + //@{ + /// Public typedefs. + typedef typename _Hashtable::key_type key_type; + typedef typename _Hashtable::value_type value_type; + typedef typename _Hashtable::hasher hasher; + typedef typename _Hashtable::key_equal key_equal; + typedef typename _Hashtable::allocator_type allocator_type; + //@} + + //@{ + /// Iterator-related typedefs. + typedef typename allocator_type::pointer pointer; + typedef typename allocator_type::const_pointer const_pointer; + typedef typename allocator_type::reference reference; + typedef typename allocator_type::const_reference const_reference; + typedef typename _Hashtable::iterator iterator; + typedef typename _Hashtable::const_iterator const_iterator; + typedef typename _Hashtable::local_iterator local_iterator; + typedef typename _Hashtable::const_local_iterator const_local_iterator; + typedef typename _Hashtable::size_type size_type; + typedef typename _Hashtable::difference_type difference_type; + //@} + + // construct/destroy/copy + /** + * @brief Default constructor creates no elements. + * @param __n Initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + */ + explicit + unordered_set(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__n, __hf, __eql, __a) + { } + + /** + * @brief Builds an %unordered_set from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_set consisting of copies of the elements from + * [__first,__last). This is linear in N (where N is + * distance(__first,__last)). + */ + template + unordered_set(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__f, __l, __n, __hf, __eql, __a) + { } + + /// Copy constructor. + unordered_set(const unordered_set&) = default; + + /// Move constructor. + unordered_set(unordered_set&&) = default; + + /** + * @brief Builds an %unordered_set from an initializer_list. + * @param __l An initializer_list. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_set consisting of copies of the elements in the + * list. This is linear in N (where N is @a __l.size()). + */ + unordered_set(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__l, __n, __hf, __eql, __a) + { } + + /// Copy assignment operator. + unordered_set& + operator=(const unordered_set&) = default; + + /// Move assignment operator. + unordered_set& + operator=(unordered_set&&) = default; + + /** + * @brief %Unordered_set list assignment operator. + * @param __l An initializer_list. + * + * This function fills an %unordered_set with copies of the elements in + * the initializer list @a __l. + * + * Note that the assignment completely changes the %unordered_set and + * that the resulting %unordered_set's size is the same as the number + * of elements assigned. Old data may be lost. + */ + unordered_set& + operator=(initializer_list __l) + { + _M_h = __l; + return *this; + } + + /// Returns the allocator object with which the %unordered_set was + /// constructed. + allocator_type + get_allocator() const noexcept + { return _M_h.get_allocator(); } + + // size and capacity: + + /// Returns true if the %unordered_set is empty. + bool + empty() const noexcept + { return _M_h.empty(); } + + /// Returns the size of the %unordered_set. + size_type + size() const noexcept + { return _M_h.size(); } + + /// Returns the maximum size of the %unordered_set. + size_type + max_size() const noexcept + { return _M_h.max_size(); } + + // iterators. + + //@{ + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_set. + */ + iterator + begin() noexcept + { return _M_h.begin(); } + + const_iterator + begin() const noexcept + { return _M_h.begin(); } + //@} + + //@{ + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_set. + */ + iterator + end() noexcept + { return _M_h.end(); } + + const_iterator + end() const noexcept + { return _M_h.end(); } + //@} + + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_set. + */ + const_iterator + cbegin() const noexcept + { return _M_h.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_set. + */ + const_iterator + cend() const noexcept + { return _M_h.end(); } + + // modifiers. + + /** + * @brief Attempts to build and insert an element into the + * %unordered_set. + * @param __args Arguments used to generate an element. + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted element, and the second is a bool + * that is true if the element was actually inserted. + * + * This function attempts to build and insert an element into the + * %unordered_set. An %unordered_set relies on unique keys and thus an + * element is only inserted if it is not already present in the + * %unordered_set. + * + * Insertion requires amortized constant time. + */ + template + std::pair + emplace(_Args&&... __args) + { return _M_h.emplace(std::forward<_Args>(__args)...); } + + /** + * @brief Attempts to insert an element into the %unordered_set. + * @param __pos An iterator that serves as a hint as to where the + * element should be inserted. + * @param __args Arguments used to generate the element to be + * inserted. + * @return An iterator that points to the element with key equivalent to + * the one generated from @a __args (may or may not be the + * element itself). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument emplace() + * does. Note that the first parameter is only a hint and can + * potentially improve the performance of the insertion process. A bad + * hint would cause no gains in efficiency. + * + * For more on @a hinting, see: + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } + + //@{ + /** + * @brief Attempts to insert an element into the %unordered_set. + * @param __x Element to be inserted. + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted element, and the second is a bool + * that is true if the element was actually inserted. + * + * This function attempts to insert an element into the %unordered_set. + * An %unordered_set relies on unique keys and thus an element is only + * inserted if it is not already present in the %unordered_set. + * + * Insertion requires amortized constant time. + */ + std::pair + insert(const value_type& __x) + { return _M_h.insert(__x); } + + std::pair + insert(value_type&& __x) + { return _M_h.insert(std::move(__x)); } + //@} + + //@{ + /** + * @brief Attempts to insert an element into the %unordered_set. + * @param __hint An iterator that serves as a hint as to where the + * element should be inserted. + * @param __x Element to be inserted. + * @return An iterator that points to the element with key of + * @a __x (may or may not be the element passed in). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument insert() + * does. Note that the first parameter is only a hint and can + * potentially improve the performance of the insertion process. A bad + * hint would cause no gains in efficiency. + * + * For more on @a hinting, see: + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * + * Insertion requires amortized constant. + */ + iterator + insert(const_iterator __hint, const value_type& __x) + { return _M_h.insert(__hint, __x); } + + iterator + insert(const_iterator __hint, value_type&& __x) + { return _M_h.insert(__hint, std::move(__x)); } + //@} + + /** + * @brief A template function that attempts to insert a range of + * elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_h.insert(__first, __last); } + + /** + * @brief Attempts to insert a list of elements into the %unordered_set. + * @param __l A std::initializer_list of elements + * to be inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { _M_h.insert(__l); } + + //@{ + /** + * @brief Erases an element from an %unordered_set. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a __position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from an %unordered_set. Note that this function only erases the + * element, and that if the element is itself a pointer, the pointed-to + * memory is not touched in any way. Managing the pointer is the user's + * responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_h.erase(__position); } + + // LWG 2059. + iterator + erase(iterator __it) + { return _M_h.erase(__it); } + //@} + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * an %unordered_set. For an %unordered_set the result of this function + * can only be 0 (not present) or 1 (present). + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_h.erase(__x); } + + /** + * @brief Erases a [__first,__last) range of elements from an + * %unordered_set. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from an %unordered_set. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_h.erase(__first, __last); } + + /** + * Erases all elements in an %unordered_set. Note that this function only + * erases the elements, and that if the elements themselves are pointers, + * the pointed-to memory is not touched in any way. Managing the pointer + * is the user's responsibility. + */ + void + clear() noexcept + { _M_h.clear(); } + + /** + * @brief Swaps data with another %unordered_set. + * @param __x An %unordered_set of the same element and allocator + * types. + * + * This exchanges the elements between two sets in constant time. + * Note that the global std::swap() function is specialized such that + * std::swap(s1,s2) will feed to this function. + */ + void + swap(unordered_set& __x) + { _M_h.swap(__x._M_h); } + + // observers. + + /// Returns the hash functor object with which the %unordered_set was + /// constructed. + hasher + hash_function() const + { return _M_h.hash_function(); } + + /// Returns the key comparison object with which the %unordered_set was + /// constructed. + key_equal + key_eq() const + { return _M_h.key_eq(); } + + // lookup. + + //@{ + /** + * @brief Tries to locate an element in an %unordered_set. + * @param __x Element to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_h.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_h.find(__x); } + //@} + + /** + * @brief Finds the number of elements. + * @param __x Element to located. + * @return Number of elements with specified key. + * + * This function only makes sense for unordered_multisets; for + * unordered_set the result will either be 0 (not present) or 1 + * (present). + */ + size_type + count(const key_type& __x) const + { return _M_h.count(__x); } + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + * + * This function probably only makes sense for multisets. + */ + std::pair + equal_range(const key_type& __x) + { return _M_h.equal_range(__x); } + + std::pair + equal_range(const key_type& __x) const + { return _M_h.equal_range(__x); } + //@} + + // bucket interface. + + /// Returns the number of buckets of the %unordered_set. + size_type + bucket_count() const noexcept + { return _M_h.bucket_count(); } + + /// Returns the maximum number of buckets of the %unordered_set. + size_type + max_bucket_count() const noexcept + { return _M_h.max_bucket_count(); } + + /* + * @brief Returns the number of elements in a given bucket. + * @param __n A bucket index. + * @return The number of elements in the bucket. + */ + size_type + bucket_size(size_type __n) const + { return _M_h.bucket_size(__n); } + + /* + * @brief Returns the bucket index of a given element. + * @param __key A key instance. + * @return The key bucket index. + */ + size_type + bucket(const key_type& __key) const + { return _M_h.bucket(__key); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to the first + * bucket element. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + local_iterator + begin(size_type __n) + { return _M_h.begin(__n); } + + const_local_iterator + begin(size_type __n) const + { return _M_h.begin(__n); } + + const_local_iterator + cbegin(size_type __n) const + { return _M_h.cbegin(__n); } + //@} + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to one past + * the last bucket elements. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + local_iterator + end(size_type __n) + { return _M_h.end(__n); } + + const_local_iterator + end(size_type __n) const + { return _M_h.end(__n); } + + const_local_iterator + cend(size_type __n) const + { return _M_h.cend(__n); } + //@} + + // hash policy. + + /// Returns the average number of elements per bucket. + float + load_factor() const noexcept + { return _M_h.load_factor(); } + + /// Returns a positive number that the %unordered_set tries to keep the + /// load factor less than or equal to. + float + max_load_factor() const noexcept + { return _M_h.max_load_factor(); } + + /** + * @brief Change the %unordered_set maximum load factor. + * @param __z The new maximum load factor. + */ + void + max_load_factor(float __z) + { _M_h.max_load_factor(__z); } + + /** + * @brief May rehash the %unordered_set. + * @param __n The new number of buckets. + * + * Rehash will occur only if the new number of buckets respect the + * %unordered_set maximum load factor. + */ + void + rehash(size_type __n) + { _M_h.rehash(__n); } + + /** + * @brief Prepare the %unordered_set for a specified number of + * elements. + * @param __n Number of elements required. + * + * Same as rehash(ceil(n / max_load_factor())). + */ + void + reserve(size_type __n) + { _M_h.reserve(__n); } + + template + friend bool + operator==(const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&, + const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&); + }; + + /** + * @brief A standard container composed of equivalent keys + * (possibly containing multiple of each key value) in which the + * elements' keys are the elements themselves. + * + * @ingroup unordered_associative_containers + * + * @tparam _Value Type of key objects. + * @tparam _Hash Hashing function object type, defaults to hash<_Value>. + * @tparam _Pred Predicate function object type, defaults + * to equal_to<_Value>. + * @tparam _Alloc Allocator type, defaults to allocator<_Key>. + * + * Meets the requirements of a container, and + * unordered associative container + * + * Base is _Hashtable, dispatched at compile time via template + * alias __umset_hashtable. + */ + template, + class _Pred = std::equal_to<_Value>, + class _Alloc = std::allocator<_Value> > + class unordered_multiset : __check_copy_constructible<_Alloc> + { + typedef __umset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; + _Hashtable _M_h; + + public: + // typedefs: + //@{ + /// Public typedefs. + typedef typename _Hashtable::key_type key_type; + typedef typename _Hashtable::value_type value_type; + typedef typename _Hashtable::hasher hasher; + typedef typename _Hashtable::key_equal key_equal; + typedef typename _Hashtable::allocator_type allocator_type; + //@} + + //@{ + /// Iterator-related typedefs. + typedef typename allocator_type::pointer pointer; + typedef typename allocator_type::const_pointer const_pointer; + typedef typename allocator_type::reference reference; + typedef typename allocator_type::const_reference const_reference; + typedef typename _Hashtable::iterator iterator; + typedef typename _Hashtable::const_iterator const_iterator; + typedef typename _Hashtable::local_iterator local_iterator; + typedef typename _Hashtable::const_local_iterator const_local_iterator; + typedef typename _Hashtable::size_type size_type; + typedef typename _Hashtable::difference_type difference_type; + //@} + + // construct/destroy/copy + /** + * @brief Default constructor creates no elements. + * @param __n Initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + */ + explicit + unordered_multiset(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__n, __hf, __eql, __a) + { } + + /** + * @brief Builds an %unordered_multiset from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_multiset consisting of copies of the elements + * from [__first,__last). This is linear in N (where N is + * distance(__first,__last)). + */ + template + unordered_multiset(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__f, __l, __n, __hf, __eql, __a) + { } + + /// Copy constructor. + unordered_multiset(const unordered_multiset&) = default; + + /// Move constructor. + unordered_multiset(unordered_multiset&&) = default; + + /** + * @brief Builds an %unordered_multiset from an initializer_list. + * @param __l An initializer_list. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_multiset consisting of copies of the elements in + * the list. This is linear in N (where N is @a __l.size()). + */ + unordered_multiset(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__l, __n, __hf, __eql, __a) + { } + + /// Copy assignment operator. + unordered_multiset& + operator=(const unordered_multiset&) = default; + + /// Move assignment operator. + unordered_multiset& + operator=(unordered_multiset&& __x) = default; + + /** + * @brief %Unordered_multiset list assignment operator. + * @param __l An initializer_list. + * + * This function fills an %unordered_multiset with copies of the elements + * in the initializer list @a __l. + * + * Note that the assignment completely changes the %unordered_multiset + * and that the resulting %unordered_set's size is the same as the number + * of elements assigned. Old data may be lost. + */ + unordered_multiset& + operator=(initializer_list __l) + { + _M_h = __l; + return *this; + } + + /// Returns the allocator object with which the %unordered_multiset was + /// constructed. + allocator_type + get_allocator() const noexcept + { return _M_h.get_allocator(); } + + // size and capacity: + + /// Returns true if the %unordered_multiset is empty. + bool + empty() const noexcept + { return _M_h.empty(); } + + /// Returns the size of the %unordered_multiset. + size_type + size() const noexcept + { return _M_h.size(); } + + /// Returns the maximum size of the %unordered_multiset. + size_type + max_size() const noexcept + { return _M_h.max_size(); } + + // iterators. + + //@{ + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_multiset. + */ + iterator + begin() noexcept + { return _M_h.begin(); } + + const_iterator + begin() const noexcept + { return _M_h.begin(); } + //@} + + //@{ + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_multiset. + */ + iterator + end() noexcept + { return _M_h.end(); } + + const_iterator + end() const noexcept + { return _M_h.end(); } + //@} + + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_multiset. + */ + const_iterator + cbegin() const noexcept + { return _M_h.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_multiset. + */ + const_iterator + cend() const noexcept + { return _M_h.end(); } + + // modifiers. + + /** + * @brief Builds and insert an element into the %unordered_multiset. + * @param __args Arguments used to generate an element. + * @return An iterator that points to the inserted element. + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace(_Args&&... __args) + { return _M_h.emplace(std::forward<_Args>(__args)...); } + + /** + * @brief Inserts an element into the %unordered_multiset. + * @param __pos An iterator that serves as a hint as to where the + * element should be inserted. + * @param __args Arguments used to generate the element to be + * inserted. + * @return An iterator that points to the inserted element. + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * For more on @a hinting, see: + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } + + //@{ + /** + * @brief Inserts an element into the %unordered_multiset. + * @param __x Element to be inserted. + * @return An iterator that points to the inserted element. + * + * Insertion requires amortized constant time. + */ + iterator + insert(const value_type& __x) + { return _M_h.insert(__x); } + + iterator + insert(value_type&& __x) + { return _M_h.insert(std::move(__x)); } + //@} + + //@{ + /** + * @brief Inserts an element into the %unordered_multiset. + * @param __hint An iterator that serves as a hint as to where the + * element should be inserted. + * @param __x Element to be inserted. + * @return An iterator that points to the inserted element. + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * For more on @a hinting, see: + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt07ch17.html + * + * Insertion requires amortized constant. + */ + iterator + insert(const_iterator __hint, const value_type& __x) + { return _M_h.insert(__hint, __x); } + + iterator + insert(const_iterator __hint, value_type&& __x) + { return _M_h.insert(__hint, std::move(__x)); } + //@} + + /** + * @brief A template function that inserts a range of elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_h.insert(__first, __last); } + + /** + * @brief Inserts a list of elements into the %unordered_multiset. + * @param __l A std::initializer_list of elements to be + * inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { _M_h.insert(__l); } + + //@{ + /** + * @brief Erases an element from an %unordered_multiset. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a __position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from an %unordered_multiset. + * + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_h.erase(__position); } + + // LWG 2059. + iterator + erase(iterator __it) + { return _M_h.erase(__it); } + //@} + + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * an %unordered_multiset. + * + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_h.erase(__x); } + + /** + * @brief Erases a [__first,__last) range of elements from an + * %unordered_multiset. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from an + * %unordered_multiset. + * + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_h.erase(__first, __last); } + + /** + * Erases all elements in an %unordered_multiset. + * + * Note that this function only erases the elements, and that if the + * elements themselves are pointers, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + void + clear() noexcept + { _M_h.clear(); } + + /** + * @brief Swaps data with another %unordered_multiset. + * @param __x An %unordered_multiset of the same element and allocator + * types. + * + * This exchanges the elements between two sets in constant time. + * Note that the global std::swap() function is specialized such that + * std::swap(s1,s2) will feed to this function. + */ + void + swap(unordered_multiset& __x) + { _M_h.swap(__x._M_h); } + + // observers. + + /// Returns the hash functor object with which the %unordered_multiset + /// was constructed. + hasher + hash_function() const + { return _M_h.hash_function(); } + + /// Returns the key comparison object with which the %unordered_multiset + /// was constructed. + key_equal + key_eq() const + { return _M_h.key_eq(); } + + // lookup. + + //@{ + /** + * @brief Tries to locate an element in an %unordered_multiset. + * @param __x Element to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_h.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_h.find(__x); } + //@} + + /** + * @brief Finds the number of elements. + * @param __x Element to located. + * @return Number of elements with specified key. + */ + size_type + count(const key_type& __x) const + { return _M_h.count(__x); } + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + */ + std::pair + equal_range(const key_type& __x) + { return _M_h.equal_range(__x); } + + std::pair + equal_range(const key_type& __x) const + { return _M_h.equal_range(__x); } + //@} + + // bucket interface. + + /// Returns the number of buckets of the %unordered_multiset. + size_type + bucket_count() const noexcept + { return _M_h.bucket_count(); } + + /// Returns the maximum number of buckets of the %unordered_multiset. + size_type + max_bucket_count() const noexcept + { return _M_h.max_bucket_count(); } + + /* + * @brief Returns the number of elements in a given bucket. + * @param __n A bucket index. + * @return The number of elements in the bucket. + */ + size_type + bucket_size(size_type __n) const + { return _M_h.bucket_size(__n); } + + /* + * @brief Returns the bucket index of a given element. + * @param __key A key instance. + * @return The key bucket index. + */ + size_type + bucket(const key_type& __key) const + { return _M_h.bucket(__key); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to the first + * bucket element. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + local_iterator + begin(size_type __n) + { return _M_h.begin(__n); } + + const_local_iterator + begin(size_type __n) const + { return _M_h.begin(__n); } + + const_local_iterator + cbegin(size_type __n) const + { return _M_h.cbegin(__n); } + //@} + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to one past + * the last bucket elements. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + local_iterator + end(size_type __n) + { return _M_h.end(__n); } + + const_local_iterator + end(size_type __n) const + { return _M_h.end(__n); } + + const_local_iterator + cend(size_type __n) const + { return _M_h.cend(__n); } + //@} + + // hash policy. + + /// Returns the average number of elements per bucket. + float + load_factor() const noexcept + { return _M_h.load_factor(); } + + /// Returns a positive number that the %unordered_multiset tries to keep the + /// load factor less than or equal to. + float + max_load_factor() const noexcept + { return _M_h.max_load_factor(); } + + /** + * @brief Change the %unordered_multiset maximum load factor. + * @param __z The new maximum load factor. + */ + void + max_load_factor(float __z) + { _M_h.max_load_factor(__z); } + + /** + * @brief May rehash the %unordered_multiset. + * @param __n The new number of buckets. + * + * Rehash will occur only if the new number of buckets respect the + * %unordered_multiset maximum load factor. + */ + void + rehash(size_type __n) + { _M_h.rehash(__n); } + + /** + * @brief Prepare the %unordered_multiset for a specified number of + * elements. + * @param __n Number of elements required. + * + * Same as rehash(ceil(n / max_load_factor())). + */ + void + reserve(size_type __n) + { _M_h.reserve(__n); } + + template + friend bool + operator==(const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&, + const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&); + }; + + template + inline void + swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline void + swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { return __x._M_h._M_equal(__y._M_h); } + + template + inline bool + operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + + template + inline bool + operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return __x._M_h._M_equal(__y._M_h); } + + template + inline bool + operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#endif /* _UNORDERED_SET_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/uses_allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/uses_allocator.h new file mode 100644 index 0000000..78913e9 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/uses_allocator.h @@ -0,0 +1,109 @@ +// Uses-allocator Construction -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +#ifndef _USES_ALLOCATOR_H +#define _USES_ALLOCATOR_H 1 + +#if __cplusplus < 201103L +# include +#else + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// [allocator.tag] + struct allocator_arg_t { }; + + constexpr allocator_arg_t allocator_arg = allocator_arg_t(); + +_GLIBCXX_HAS_NESTED_TYPE(allocator_type) + + template::value> + struct __uses_allocator_helper + : public false_type { }; + + template + struct __uses_allocator_helper<_Tp, _Alloc, true> + : public integral_constant::value> + { }; + + /// [allocator.uses.trait] + 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; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_after.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_after.h new file mode 100644 index 0000000..ba9ddce --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_after.h @@ -0,0 +1,551 @@ +// The template and inlines for the -*- C++ -*- internal _Meta class. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/valarray_after.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{valarray} + */ + +// Written by Gabriel Dos Reis + +#ifndef _VALARRAY_AFTER_H +#define _VALARRAY_AFTER_H 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // + // gslice_array closure. + // + template + class _GBase + { + public: + typedef typename _Dom::value_type value_type; + + _GBase (const _Dom& __e, const valarray& __i) + : _M_expr (__e), _M_index(__i) {} + + value_type + operator[] (size_t __i) const + { return _M_expr[_M_index[__i]]; } + + size_t + size () const + { return _M_index.size(); } + + private: + const _Dom& _M_expr; + const valarray& _M_index; + }; + + template + class _GBase<_Array<_Tp> > + { + public: + typedef _Tp value_type; + + _GBase (_Array<_Tp> __a, const valarray& __i) + : _M_array (__a), _M_index(__i) {} + + value_type + operator[] (size_t __i) const + { return _M_array._M_data[_M_index[__i]]; } + + size_t + size () const + { return _M_index.size(); } + + private: + const _Array<_Tp> _M_array; + const valarray& _M_index; + }; + + template + struct _GClos<_Expr, _Dom> + : _GBase<_Dom> + { + typedef _GBase<_Dom> _Base; + typedef typename _Base::value_type value_type; + + _GClos (const _Dom& __e, const valarray& __i) + : _Base (__e, __i) {} + }; + + template + struct _GClos<_ValArray, _Tp> + : _GBase<_Array<_Tp> > + { + typedef _GBase<_Array<_Tp> > _Base; + typedef typename _Base::value_type value_type; + + _GClos (_Array<_Tp> __a, const valarray& __i) + : _Base (__a, __i) {} + }; + + // + // indirect_array closure + // + template + class _IBase + { + public: + typedef typename _Dom::value_type value_type; + + _IBase (const _Dom& __e, const valarray& __i) + : _M_expr (__e), _M_index (__i) {} + + value_type + operator[] (size_t __i) const + { return _M_expr[_M_index[__i]]; } + + size_t + size() const + { return _M_index.size(); } + + private: + const _Dom& _M_expr; + const valarray& _M_index; + }; + + template + struct _IClos<_Expr, _Dom> + : _IBase<_Dom> + { + typedef _IBase<_Dom> _Base; + typedef typename _Base::value_type value_type; + + _IClos (const _Dom& __e, const valarray& __i) + : _Base (__e, __i) {} + }; + + template + struct _IClos<_ValArray, _Tp> + : _IBase > + { + typedef _IBase > _Base; + typedef _Tp value_type; + + _IClos (const valarray<_Tp>& __a, const valarray& __i) + : _Base (__a, __i) {} + }; + + // + // class _Expr + // + template + class _Expr + { + public: + typedef _Tp value_type; + + _Expr(const _Clos&); + + const _Clos& operator()() const; + + value_type operator[](size_t) const; + valarray operator[](slice) const; + valarray operator[](const gslice&) const; + valarray operator[](const valarray&) const; + valarray operator[](const valarray&) const; + + _Expr<_UnClos<__unary_plus, std::_Expr, _Clos>, value_type> + operator+() const; + + _Expr<_UnClos<__negate, std::_Expr, _Clos>, value_type> + operator-() const; + + _Expr<_UnClos<__bitwise_not, std::_Expr, _Clos>, value_type> + operator~() const; + + _Expr<_UnClos<__logical_not, std::_Expr, _Clos>, bool> + operator!() const; + + size_t size() const; + value_type sum() const; + + valarray shift(int) const; + valarray cshift(int) const; + + value_type min() const; + value_type max() const; + + valarray apply(value_type (*)(const value_type&)) const; + valarray apply(value_type (*)(value_type)) const; + + private: + const _Clos _M_closure; + }; + + template + inline + _Expr<_Clos, _Tp>::_Expr(const _Clos& __c) : _M_closure(__c) {} + + template + inline const _Clos& + _Expr<_Clos, _Tp>::operator()() const + { return _M_closure; } + + template + inline _Tp + _Expr<_Clos, _Tp>::operator[](size_t __i) const + { return _M_closure[__i]; } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::operator[](slice __s) const + { + valarray<_Tp> __v = valarray<_Tp>(*this)[__s]; + return __v; + } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::operator[](const gslice& __gs) const + { + valarray<_Tp> __v = valarray<_Tp>(*this)[__gs]; + return __v; + } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::operator[](const valarray& __m) const + { + valarray<_Tp> __v = valarray<_Tp>(*this)[__m]; + return __v; + } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::operator[](const valarray& __i) const + { + valarray<_Tp> __v = valarray<_Tp>(*this)[__i]; + return __v; + } + + template + inline size_t + _Expr<_Clos, _Tp>::size() const + { return _M_closure.size(); } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::shift(int __n) const + { + valarray<_Tp> __v = valarray<_Tp>(*this).shift(__n); + return __v; + } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::cshift(int __n) const + { + valarray<_Tp> __v = valarray<_Tp>(*this).cshift(__n); + return __v; + } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::apply(_Tp __f(const _Tp&)) const + { + valarray<_Tp> __v = valarray<_Tp>(*this).apply(__f); + return __v; + } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::apply(_Tp __f(_Tp)) const + { + valarray<_Tp> __v = valarray<_Tp>(*this).apply(__f); + return __v; + } + + // XXX: replace this with a more robust summation algorithm. + template + inline _Tp + _Expr<_Clos, _Tp>::sum() const + { + size_t __n = _M_closure.size(); + if (__n == 0) + return _Tp(); + else + { + _Tp __s = _M_closure[--__n]; + while (__n != 0) + __s += _M_closure[--__n]; + return __s; + } + } + + template + inline _Tp + _Expr<_Clos, _Tp>::min() const + { return __valarray_min(_M_closure); } + + template + inline _Tp + _Expr<_Clos, _Tp>::max() const + { return __valarray_max(_M_closure); } + + template + inline _Expr<_UnClos<__logical_not, _Expr, _Dom>, bool> + _Expr<_Dom, _Tp>::operator!() const + { + typedef _UnClos<__logical_not, std::_Expr, _Dom> _Closure; + return _Expr<_Closure, bool>(_Closure(this->_M_closure)); + } + +#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \ + template \ + inline _Expr<_UnClos<_Name, std::_Expr, _Dom>, _Tp> \ + _Expr<_Dom, _Tp>::operator _Op() const \ + { \ + typedef _UnClos<_Name, std::_Expr, _Dom> _Closure; \ + return _Expr<_Closure, _Tp>(_Closure(this->_M_closure)); \ + } + + _DEFINE_EXPR_UNARY_OPERATOR(+, __unary_plus) + _DEFINE_EXPR_UNARY_OPERATOR(-, __negate) + _DEFINE_EXPR_UNARY_OPERATOR(~, __bitwise_not) + +#undef _DEFINE_EXPR_UNARY_OPERATOR + +#define _DEFINE_EXPR_BINARY_OPERATOR(_Op, _Name) \ + template \ + inline _Expr<_BinClos<_Name, _Expr, _Expr, _Dom1, _Dom2>, \ + typename __fun<_Name, typename _Dom1::value_type>::result_type> \ + operator _Op(const _Expr<_Dom1, typename _Dom1::value_type>& __v, \ + const _Expr<_Dom2, typename _Dom2::value_type>& __w) \ + { \ + typedef typename _Dom1::value_type _Arg; \ + typedef typename __fun<_Name, _Arg>::result_type _Value; \ + typedef _BinClos<_Name, _Expr, _Expr, _Dom1, _Dom2> _Closure; \ + return _Expr<_Closure, _Value>(_Closure(__v(), __w())); \ + } \ + \ + template \ + inline _Expr<_BinClos<_Name, _Expr, _Constant, _Dom, \ + typename _Dom::value_type>, \ + typename __fun<_Name, typename _Dom::value_type>::result_type> \ + operator _Op(const _Expr<_Dom, typename _Dom::value_type>& __v, \ + const typename _Dom::value_type& __t) \ + { \ + typedef typename _Dom::value_type _Arg; \ + typedef typename __fun<_Name, _Arg>::result_type _Value; \ + typedef _BinClos<_Name, _Expr, _Constant, _Dom, _Arg> _Closure; \ + return _Expr<_Closure, _Value>(_Closure(__v(), __t)); \ + } \ + \ + template \ + inline _Expr<_BinClos<_Name, _Constant, _Expr, \ + typename _Dom::value_type, _Dom>, \ + typename __fun<_Name, typename _Dom::value_type>::result_type> \ + operator _Op(const typename _Dom::value_type& __t, \ + const _Expr<_Dom, typename _Dom::value_type>& __v) \ + { \ + typedef typename _Dom::value_type _Arg; \ + typedef typename __fun<_Name, _Arg>::result_type _Value; \ + typedef _BinClos<_Name, _Constant, _Expr, _Arg, _Dom> _Closure; \ + return _Expr<_Closure, _Value>(_Closure(__t, __v())); \ + } \ + \ + template \ + inline _Expr<_BinClos<_Name, _Expr, _ValArray, \ + _Dom, typename _Dom::value_type>, \ + typename __fun<_Name, typename _Dom::value_type>::result_type> \ + operator _Op(const _Expr<_Dom,typename _Dom::value_type>& __e, \ + const valarray& __v) \ + { \ + typedef typename _Dom::value_type _Arg; \ + typedef typename __fun<_Name, _Arg>::result_type _Value; \ + typedef _BinClos<_Name, _Expr, _ValArray, _Dom, _Arg> _Closure; \ + return _Expr<_Closure, _Value>(_Closure(__e(), __v)); \ + } \ + \ + template \ + inline _Expr<_BinClos<_Name, _ValArray, _Expr, \ + typename _Dom::value_type, _Dom>, \ + typename __fun<_Name, typename _Dom::value_type>::result_type> \ + operator _Op(const valarray& __v, \ + const _Expr<_Dom, typename _Dom::value_type>& __e) \ + { \ + typedef typename _Dom::value_type _Tp; \ + typedef typename __fun<_Name, _Tp>::result_type _Value; \ + typedef _BinClos<_Name, _ValArray, _Expr, _Tp, _Dom> _Closure; \ + return _Expr<_Closure, _Value>(_Closure(__v, __e ())); \ + } + + _DEFINE_EXPR_BINARY_OPERATOR(+, __plus) + _DEFINE_EXPR_BINARY_OPERATOR(-, __minus) + _DEFINE_EXPR_BINARY_OPERATOR(*, __multiplies) + _DEFINE_EXPR_BINARY_OPERATOR(/, __divides) + _DEFINE_EXPR_BINARY_OPERATOR(%, __modulus) + _DEFINE_EXPR_BINARY_OPERATOR(^, __bitwise_xor) + _DEFINE_EXPR_BINARY_OPERATOR(&, __bitwise_and) + _DEFINE_EXPR_BINARY_OPERATOR(|, __bitwise_or) + _DEFINE_EXPR_BINARY_OPERATOR(<<, __shift_left) + _DEFINE_EXPR_BINARY_OPERATOR(>>, __shift_right) + _DEFINE_EXPR_BINARY_OPERATOR(&&, __logical_and) + _DEFINE_EXPR_BINARY_OPERATOR(||, __logical_or) + _DEFINE_EXPR_BINARY_OPERATOR(==, __equal_to) + _DEFINE_EXPR_BINARY_OPERATOR(!=, __not_equal_to) + _DEFINE_EXPR_BINARY_OPERATOR(<, __less) + _DEFINE_EXPR_BINARY_OPERATOR(>, __greater) + _DEFINE_EXPR_BINARY_OPERATOR(<=, __less_equal) + _DEFINE_EXPR_BINARY_OPERATOR(>=, __greater_equal) + +#undef _DEFINE_EXPR_BINARY_OPERATOR + +#define _DEFINE_EXPR_UNARY_FUNCTION(_Name, _UName) \ + template \ + inline _Expr<_UnClos<_UName, _Expr, _Dom>, \ + typename _Dom::value_type> \ + _Name(const _Expr<_Dom, typename _Dom::value_type>& __e) \ + { \ + typedef typename _Dom::value_type _Tp; \ + typedef _UnClos<_UName, _Expr, _Dom> _Closure; \ + return _Expr<_Closure, _Tp>(_Closure(__e())); \ + } \ + \ + template \ + inline _Expr<_UnClos<_UName, _ValArray, _Tp>, _Tp> \ + _Name(const valarray<_Tp>& __v) \ + { \ + typedef _UnClos<_UName, _ValArray, _Tp> _Closure; \ + return _Expr<_Closure, _Tp>(_Closure(__v)); \ + } + + _DEFINE_EXPR_UNARY_FUNCTION(abs, _Abs) + _DEFINE_EXPR_UNARY_FUNCTION(cos, _Cos) + _DEFINE_EXPR_UNARY_FUNCTION(acos, _Acos) + _DEFINE_EXPR_UNARY_FUNCTION(cosh, _Cosh) + _DEFINE_EXPR_UNARY_FUNCTION(sin, _Sin) + _DEFINE_EXPR_UNARY_FUNCTION(asin, _Asin) + _DEFINE_EXPR_UNARY_FUNCTION(sinh, _Sinh) + _DEFINE_EXPR_UNARY_FUNCTION(tan, _Tan) + _DEFINE_EXPR_UNARY_FUNCTION(tanh, _Tanh) + _DEFINE_EXPR_UNARY_FUNCTION(atan, _Atan) + _DEFINE_EXPR_UNARY_FUNCTION(exp, _Exp) + _DEFINE_EXPR_UNARY_FUNCTION(log, _Log) + _DEFINE_EXPR_UNARY_FUNCTION(log10, _Log10) + _DEFINE_EXPR_UNARY_FUNCTION(sqrt, _Sqrt) + +#undef _DEFINE_EXPR_UNARY_FUNCTION + +#define _DEFINE_EXPR_BINARY_FUNCTION(_Fun, _UFun) \ + template \ + inline _Expr<_BinClos<_UFun, _Expr, _Expr, _Dom1, _Dom2>, \ + typename _Dom1::value_type> \ + _Fun(const _Expr<_Dom1, typename _Dom1::value_type>& __e1, \ + const _Expr<_Dom2, typename _Dom2::value_type>& __e2) \ + { \ + typedef typename _Dom1::value_type _Tp; \ + typedef _BinClos<_UFun, _Expr, _Expr, _Dom1, _Dom2> _Closure; \ + return _Expr<_Closure, _Tp>(_Closure(__e1(), __e2())); \ + } \ + \ + template \ + inline _Expr<_BinClos<_UFun, _Expr, _ValArray, _Dom, \ + typename _Dom::value_type>, \ + typename _Dom::value_type> \ + _Fun(const _Expr<_Dom, typename _Dom::value_type>& __e, \ + const valarray& __v) \ + { \ + typedef typename _Dom::value_type _Tp; \ + typedef _BinClos<_UFun, _Expr, _ValArray, _Dom, _Tp> _Closure; \ + return _Expr<_Closure, _Tp>(_Closure(__e(), __v)); \ + } \ + \ + template \ + inline _Expr<_BinClos<_UFun, _ValArray, _Expr, \ + typename _Dom::value_type, _Dom>, \ + typename _Dom::value_type> \ + _Fun(const valarray& __v, \ + const _Expr<_Dom, typename _Dom::value_type>& __e) \ + { \ + typedef typename _Dom::value_type _Tp; \ + typedef _BinClos<_UFun, _ValArray, _Expr, _Tp, _Dom> _Closure; \ + return _Expr<_Closure, _Tp>(_Closure(__v, __e())); \ + } \ + \ + template \ + inline _Expr<_BinClos<_UFun, _Expr, _Constant, _Dom, \ + typename _Dom::value_type>, \ + typename _Dom::value_type> \ + _Fun(const _Expr<_Dom, typename _Dom::value_type>& __e, \ + const typename _Dom::value_type& __t) \ + { \ + typedef typename _Dom::value_type _Tp; \ + typedef _BinClos<_UFun, _Expr, _Constant, _Dom, _Tp> _Closure; \ + return _Expr<_Closure, _Tp>(_Closure(__e(), __t)); \ + } \ + \ + template \ + inline _Expr<_BinClos<_UFun, _Constant, _Expr, \ + typename _Dom::value_type, _Dom>, \ + typename _Dom::value_type> \ + _Fun(const typename _Dom::value_type& __t, \ + const _Expr<_Dom, typename _Dom::value_type>& __e) \ + { \ + typedef typename _Dom::value_type _Tp; \ + typedef _BinClos<_UFun, _Constant, _Expr, _Tp, _Dom> _Closure; \ + return _Expr<_Closure, _Tp>(_Closure(__t, __e())); \ + } \ + \ + template \ + inline _Expr<_BinClos<_UFun, _ValArray, _ValArray, _Tp, _Tp>, _Tp> \ + _Fun(const valarray<_Tp>& __v, const valarray<_Tp>& __w) \ + { \ + typedef _BinClos<_UFun, _ValArray, _ValArray, _Tp, _Tp> _Closure;\ + return _Expr<_Closure, _Tp>(_Closure(__v, __w)); \ + } \ + \ + template \ + inline _Expr<_BinClos<_UFun, _ValArray, _Constant, _Tp, _Tp>, _Tp> \ + _Fun(const valarray<_Tp>& __v, const _Tp& __t) \ + { \ + typedef _BinClos<_UFun, _ValArray, _Constant, _Tp, _Tp> _Closure;\ + return _Expr<_Closure, _Tp>(_Closure(__v, __t)); \ + } \ + \ + template \ + inline _Expr<_BinClos<_UFun, _Constant, _ValArray, _Tp, _Tp>, _Tp> \ + _Fun(const _Tp& __t, const valarray<_Tp>& __v) \ + { \ + typedef _BinClos<_UFun, _Constant, _ValArray, _Tp, _Tp> _Closure;\ + return _Expr<_Closure, _Tp>(_Closure(__t, __v)); \ + } + +_DEFINE_EXPR_BINARY_FUNCTION(atan2, _Atan2) +_DEFINE_EXPR_BINARY_FUNCTION(pow, _Pow) + +#undef _DEFINE_EXPR_BINARY_FUNCTION + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _CPP_VALARRAY_AFTER_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_array.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_array.h new file mode 100644 index 0000000..e04d49c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_array.h @@ -0,0 +1,693 @@ +// The template and inlines for the -*- C++ -*- internal _Array helper class. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/valarray_array.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{valarray} + */ + +// Written by Gabriel Dos Reis + +#ifndef _VALARRAY_ARRAY_H +#define _VALARRAY_ARRAY_H 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // + // Helper functions on raw pointers + // + + // We get memory by the old fashion way + inline void* + __valarray_get_memory(size_t __n) + { return operator new(__n); } + + template + inline _Tp*__restrict__ + __valarray_get_storage(size_t __n) + { + return static_cast<_Tp*__restrict__> + (std::__valarray_get_memory(__n * sizeof(_Tp))); + } + + // Return memory to the system + inline void + __valarray_release_memory(void* __p) + { operator delete(__p); } + + // Turn a raw-memory into an array of _Tp filled with _Tp() + // This is required in 'valarray v(n);' + template + struct _Array_default_ctor + { + // Please note that this isn't exception safe. But + // valarrays aren't required to be exception safe. + inline static void + _S_do_it(_Tp* __b, _Tp* __e) + { + while (__b != __e) + new(__b++) _Tp(); + } + }; + + template + struct _Array_default_ctor<_Tp, true> + { + // For fundamental types, it suffices to say 'memset()' + inline static void + _S_do_it(_Tp* __b, _Tp* __e) + { __builtin_memset(__b, 0, (__e - __b) * sizeof(_Tp)); } + }; + + template + inline void + __valarray_default_construct(_Tp* __b, _Tp* __e) + { + _Array_default_ctor<_Tp, __is_scalar<_Tp>::__value>::_S_do_it(__b, __e); + } + + // Turn a raw-memory into an array of _Tp filled with __t + // This is the required in valarray v(n, t). Also + // used in valarray<>::resize(). + template + struct _Array_init_ctor + { + // Please note that this isn't exception safe. But + // valarrays aren't required to be exception safe. + inline static void + _S_do_it(_Tp* __b, _Tp* __e, const _Tp __t) + { + while (__b != __e) + new(__b++) _Tp(__t); + } + }; + + template + struct _Array_init_ctor<_Tp, true> + { + inline static void + _S_do_it(_Tp* __b, _Tp* __e, const _Tp __t) + { + while (__b != __e) + *__b++ = __t; + } + }; + + template + inline void + __valarray_fill_construct(_Tp* __b, _Tp* __e, const _Tp __t) + { + _Array_init_ctor<_Tp, __is_trivial(_Tp)>::_S_do_it(__b, __e, __t); + } + + // + // copy-construct raw array [__o, *) from plain array [__b, __e) + // We can't just say 'memcpy()' + // + template + struct _Array_copy_ctor + { + // Please note that this isn't exception safe. But + // valarrays aren't required to be exception safe. + inline static void + _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o) + { + while (__b != __e) + new(__o++) _Tp(*__b++); + } + }; + + template + struct _Array_copy_ctor<_Tp, true> + { + inline static void + _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o) + { __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp)); } + }; + + template + inline void + __valarray_copy_construct(const _Tp* __b, const _Tp* __e, + _Tp* __restrict__ __o) + { + _Array_copy_ctor<_Tp, __is_trivial(_Tp)>::_S_do_it(__b, __e, __o); + } + + // copy-construct raw array [__o, *) from strided array __a[<__n : __s>] + template + inline void + __valarray_copy_construct (const _Tp* __restrict__ __a, size_t __n, + size_t __s, _Tp* __restrict__ __o) + { + if (__is_trivial(_Tp)) + while (__n--) + { + *__o++ = *__a; + __a += __s; + } + else + while (__n--) + { + new(__o++) _Tp(*__a); + __a += __s; + } + } + + // copy-construct raw array [__o, *) from indexed array __a[__i[<__n>]] + template + inline void + __valarray_copy_construct (const _Tp* __restrict__ __a, + const size_t* __restrict__ __i, + _Tp* __restrict__ __o, size_t __n) + { + if (__is_trivial(_Tp)) + while (__n--) + *__o++ = __a[*__i++]; + else + while (__n--) + new (__o++) _Tp(__a[*__i++]); + } + + // Do the necessary cleanup when we're done with arrays. + template + inline void + __valarray_destroy_elements(_Tp* __b, _Tp* __e) + { + if (!__is_trivial(_Tp)) + while (__b != __e) + { + __b->~_Tp(); + ++__b; + } + } + + // Fill a plain array __a[<__n>] with __t + template + inline void + __valarray_fill(_Tp* __restrict__ __a, size_t __n, const _Tp& __t) + { + while (__n--) + *__a++ = __t; + } + + // fill strided array __a[<__n-1 : __s>] with __t + template + inline void + __valarray_fill(_Tp* __restrict__ __a, size_t __n, + size_t __s, const _Tp& __t) + { + for (size_t __i = 0; __i < __n; ++__i, __a += __s) + *__a = __t; + } + + // fill indirect array __a[__i[<__n>]] with __i + template + inline void + __valarray_fill(_Tp* __restrict__ __a, const size_t* __restrict__ __i, + size_t __n, const _Tp& __t) + { + for (size_t __j = 0; __j < __n; ++__j, ++__i) + __a[*__i] = __t; + } + + // copy plain array __a[<__n>] in __b[<__n>] + // For non-fundamental types, it is wrong to say 'memcpy()' + template + struct _Array_copier + { + inline static void + _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b) + { + while(__n--) + *__b++ = *__a++; + } + }; + + template + struct _Array_copier<_Tp, true> + { + inline static void + _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b) + { __builtin_memcpy(__b, __a, __n * sizeof (_Tp)); } + }; + + // Copy a plain array __a[<__n>] into a play array __b[<>] + template + inline void + __valarray_copy(const _Tp* __restrict__ __a, size_t __n, + _Tp* __restrict__ __b) + { + _Array_copier<_Tp, __is_trivial(_Tp)>::_S_do_it(__a, __n, __b); + } + + // Copy strided array __a[<__n : __s>] in plain __b[<__n>] + template + inline void + __valarray_copy(const _Tp* __restrict__ __a, size_t __n, size_t __s, + _Tp* __restrict__ __b) + { + for (size_t __i = 0; __i < __n; ++__i, ++__b, __a += __s) + *__b = *__a; + } + + // Copy a plain array __a[<__n>] into a strided array __b[<__n : __s>] + template + inline void + __valarray_copy(const _Tp* __restrict__ __a, _Tp* __restrict__ __b, + size_t __n, size_t __s) + { + for (size_t __i = 0; __i < __n; ++__i, ++__a, __b += __s) + *__b = *__a; + } + + // Copy strided array __src[<__n : __s1>] into another + // strided array __dst[< : __s2>]. Their sizes must match. + template + inline void + __valarray_copy(const _Tp* __restrict__ __src, size_t __n, size_t __s1, + _Tp* __restrict__ __dst, size_t __s2) + { + for (size_t __i = 0; __i < __n; ++__i) + __dst[__i * __s2] = __src[__i * __s1]; + } + + // Copy an indexed array __a[__i[<__n>]] in plain array __b[<__n>] + template + inline void + __valarray_copy(const _Tp* __restrict__ __a, + const size_t* __restrict__ __i, + _Tp* __restrict__ __b, size_t __n) + { + for (size_t __j = 0; __j < __n; ++__j, ++__b, ++__i) + *__b = __a[*__i]; + } + + // Copy a plain array __a[<__n>] in an indexed array __b[__i[<__n>]] + template + inline void + __valarray_copy(const _Tp* __restrict__ __a, size_t __n, + _Tp* __restrict__ __b, const size_t* __restrict__ __i) + { + for (size_t __j = 0; __j < __n; ++__j, ++__a, ++__i) + __b[*__i] = *__a; + } + + // Copy the __n first elements of an indexed array __src[<__i>] into + // another indexed array __dst[<__j>]. + template + inline void + __valarray_copy(const _Tp* __restrict__ __src, size_t __n, + const size_t* __restrict__ __i, + _Tp* __restrict__ __dst, const size_t* __restrict__ __j) + { + for (size_t __k = 0; __k < __n; ++__k) + __dst[*__j++] = __src[*__i++]; + } + + // + // Compute the sum of elements in range [__f, __l) + // This is a naive algorithm. It suffers from cancelling. + // In the future try to specialize + // for _Tp = float, double, long double using a more accurate + // algorithm. + // + template + inline _Tp + __valarray_sum(const _Tp* __f, const _Tp* __l) + { + _Tp __r = _Tp(); + while (__f != __l) + __r += *__f++; + return __r; + } + + // Compute the product of all elements in range [__f, __l) + template + inline _Tp + __valarray_product(const _Tp* __f, const _Tp* __l) + { + _Tp __r = _Tp(1); + while (__f != __l) + __r = __r * *__f++; + return __r; + } + + // Compute the min/max of an array-expression + template + inline typename _Ta::value_type + __valarray_min(const _Ta& __a) + { + size_t __s = __a.size(); + typedef typename _Ta::value_type _Value_type; + _Value_type __r = __s == 0 ? _Value_type() : __a[0]; + for (size_t __i = 1; __i < __s; ++__i) + { + _Value_type __t = __a[__i]; + if (__t < __r) + __r = __t; + } + return __r; + } + + template + inline typename _Ta::value_type + __valarray_max(const _Ta& __a) + { + size_t __s = __a.size(); + typedef typename _Ta::value_type _Value_type; + _Value_type __r = __s == 0 ? _Value_type() : __a[0]; + for (size_t __i = 1; __i < __s; ++__i) + { + _Value_type __t = __a[__i]; + if (__t > __r) + __r = __t; + } + return __r; + } + + // + // Helper class _Array, first layer of valarray abstraction. + // All operations on valarray should be forwarded to this class + // whenever possible. -- gdr + // + + template + struct _Array + { + explicit _Array(size_t); + explicit _Array(_Tp* const __restrict__); + explicit _Array(const valarray<_Tp>&); + _Array(const _Tp* __restrict__, size_t); + + _Tp* begin() const; + + _Tp* const __restrict__ _M_data; + }; + + + // Copy-construct plain array __b[<__n>] from indexed array __a[__i[<__n>]] + template + inline void + __valarray_copy_construct(_Array<_Tp> __a, _Array __i, + _Array<_Tp> __b, size_t __n) + { std::__valarray_copy_construct(__a._M_data, __i._M_data, + __b._M_data, __n); } + + // Copy-construct plain array __b[<__n>] from strided array __a[<__n : __s>] + template + inline void + __valarray_copy_construct(_Array<_Tp> __a, size_t __n, size_t __s, + _Array<_Tp> __b) + { std::__valarray_copy_construct(__a._M_data, __n, __s, __b._M_data); } + + template + inline void + __valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t) + { std::__valarray_fill(__a._M_data, __n, __t); } + + template + inline void + __valarray_fill(_Array<_Tp> __a, size_t __n, size_t __s, const _Tp& __t) + { std::__valarray_fill(__a._M_data, __n, __s, __t); } + + template + inline void + __valarray_fill(_Array<_Tp> __a, _Array __i, + size_t __n, const _Tp& __t) + { std::__valarray_fill(__a._M_data, __i._M_data, __n, __t); } + + // Copy a plain array __a[<__n>] into a play array __b[<>] + template + inline void + __valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b) + { std::__valarray_copy(__a._M_data, __n, __b._M_data); } + + // Copy strided array __a[<__n : __s>] in plain __b[<__n>] + template + inline void + __valarray_copy(_Array<_Tp> __a, size_t __n, size_t __s, _Array<_Tp> __b) + { std::__valarray_copy(__a._M_data, __n, __s, __b._M_data); } + + // Copy a plain array __a[<__n>] into a strided array __b[<__n : __s>] + template + inline void + __valarray_copy(_Array<_Tp> __a, _Array<_Tp> __b, size_t __n, size_t __s) + { __valarray_copy(__a._M_data, __b._M_data, __n, __s); } + + // Copy strided array __src[<__n : __s1>] into another + // strided array __dst[< : __s2>]. Their sizes must match. + template + inline void + __valarray_copy(_Array<_Tp> __a, size_t __n, size_t __s1, + _Array<_Tp> __b, size_t __s2) + { std::__valarray_copy(__a._M_data, __n, __s1, __b._M_data, __s2); } + + // Copy an indexed array __a[__i[<__n>]] in plain array __b[<__n>] + template + inline void + __valarray_copy(_Array<_Tp> __a, _Array __i, + _Array<_Tp> __b, size_t __n) + { std::__valarray_copy(__a._M_data, __i._M_data, __b._M_data, __n); } + + // Copy a plain array __a[<__n>] in an indexed array __b[__i[<__n>]] + template + inline void + __valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b, + _Array __i) + { std::__valarray_copy(__a._M_data, __n, __b._M_data, __i._M_data); } + + // Copy the __n first elements of an indexed array __src[<__i>] into + // another indexed array __dst[<__j>]. + template + inline void + __valarray_copy(_Array<_Tp> __src, size_t __n, _Array __i, + _Array<_Tp> __dst, _Array __j) + { + std::__valarray_copy(__src._M_data, __n, __i._M_data, + __dst._M_data, __j._M_data); + } + + template + inline + _Array<_Tp>::_Array(size_t __n) + : _M_data(__valarray_get_storage<_Tp>(__n)) + { std::__valarray_default_construct(_M_data, _M_data + __n); } + + template + inline + _Array<_Tp>::_Array(_Tp* const __restrict__ __p) + : _M_data (__p) {} + + template + inline + _Array<_Tp>::_Array(const valarray<_Tp>& __v) + : _M_data (__v._M_data) {} + + template + inline + _Array<_Tp>::_Array(const _Tp* __restrict__ __b, size_t __s) + : _M_data(__valarray_get_storage<_Tp>(__s)) + { std::__valarray_copy_construct(__b, __s, _M_data); } + + template + inline _Tp* + _Array<_Tp>::begin () const + { return _M_data; } + +#define _DEFINE_ARRAY_FUNCTION(_Op, _Name) \ + template \ + inline void \ + _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, const _Tp& __t) \ + { \ + for (_Tp* __p = __a._M_data; __p < __a._M_data + __n; ++__p) \ + *__p _Op##= __t; \ + } \ + \ + template \ + inline void \ + _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b) \ + { \ + _Tp* __p = __a._M_data; \ + for (_Tp* __q = __b._M_data; __q < __b._M_data + __n; ++__p, ++__q) \ + *__p _Op##= *__q; \ + } \ + \ + template \ + void \ + _Array_augmented_##_Name(_Array<_Tp> __a, \ + const _Expr<_Dom, _Tp>& __e, size_t __n) \ + { \ + _Tp* __p(__a._M_data); \ + for (size_t __i = 0; __i < __n; ++__i, ++__p) \ + *__p _Op##= __e[__i]; \ + } \ + \ + template \ + inline void \ + _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, size_t __s, \ + _Array<_Tp> __b) \ + { \ + _Tp* __q(__b._M_data); \ + for (_Tp* __p = __a._M_data; __p < __a._M_data + __s * __n; \ + __p += __s, ++__q) \ + *__p _Op##= *__q; \ + } \ + \ + template \ + inline void \ + _Array_augmented_##_Name(_Array<_Tp> __a, _Array<_Tp> __b, \ + size_t __n, size_t __s) \ + { \ + _Tp* __q(__b._M_data); \ + for (_Tp* __p = __a._M_data; __p < __a._M_data + __n; \ + ++__p, __q += __s) \ + *__p _Op##= *__q; \ + } \ + \ + template \ + void \ + _Array_augmented_##_Name(_Array<_Tp> __a, size_t __s, \ + const _Expr<_Dom, _Tp>& __e, size_t __n) \ + { \ + _Tp* __p(__a._M_data); \ + for (size_t __i = 0; __i < __n; ++__i, __p += __s) \ + *__p _Op##= __e[__i]; \ + } \ + \ + template \ + inline void \ + _Array_augmented_##_Name(_Array<_Tp> __a, _Array __i, \ + _Array<_Tp> __b, size_t __n) \ + { \ + _Tp* __q(__b._M_data); \ + for (size_t* __j = __i._M_data; __j < __i._M_data + __n; \ + ++__j, ++__q) \ + __a._M_data[*__j] _Op##= *__q; \ + } \ + \ + template \ + inline void \ + _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, \ + _Array<_Tp> __b, _Array __i) \ + { \ + _Tp* __p(__a._M_data); \ + for (size_t* __j = __i._M_data; __j<__i._M_data + __n; \ + ++__j, ++__p) \ + *__p _Op##= __b._M_data[*__j]; \ + } \ + \ + template \ + void \ + _Array_augmented_##_Name(_Array<_Tp> __a, _Array __i, \ + const _Expr<_Dom, _Tp>& __e, size_t __n) \ + { \ + size_t* __j(__i._M_data); \ + for (size_t __k = 0; __k<__n; ++__k, ++__j) \ + __a._M_data[*__j] _Op##= __e[__k]; \ + } \ + \ + template \ + void \ + _Array_augmented_##_Name(_Array<_Tp> __a, _Array __m, \ + _Array<_Tp> __b, size_t __n) \ + { \ + bool* __ok(__m._M_data); \ + _Tp* __p(__a._M_data); \ + for (_Tp* __q = __b._M_data; __q < __b._M_data + __n; \ + ++__q, ++__ok, ++__p) \ + { \ + while (! *__ok) \ + { \ + ++__ok; \ + ++__p; \ + } \ + *__p _Op##= *__q; \ + } \ + } \ + \ + template \ + void \ + _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, \ + _Array<_Tp> __b, _Array __m) \ + { \ + bool* __ok(__m._M_data); \ + _Tp* __q(__b._M_data); \ + for (_Tp* __p = __a._M_data; __p < __a._M_data + __n; \ + ++__p, ++__ok, ++__q) \ + { \ + while (! *__ok) \ + { \ + ++__ok; \ + ++__q; \ + } \ + *__p _Op##= *__q; \ + } \ + } \ + \ + template \ + void \ + _Array_augmented_##_Name(_Array<_Tp> __a, _Array __m, \ + const _Expr<_Dom, _Tp>& __e, size_t __n) \ + { \ + bool* __ok(__m._M_data); \ + _Tp* __p(__a._M_data); \ + for (size_t __i = 0; __i < __n; ++__i, ++__ok, ++__p) \ + { \ + while (! *__ok) \ + { \ + ++__ok; \ + ++__p; \ + } \ + *__p _Op##= __e[__i]; \ + } \ + } + + _DEFINE_ARRAY_FUNCTION(+, __plus) + _DEFINE_ARRAY_FUNCTION(-, __minus) + _DEFINE_ARRAY_FUNCTION(*, __multiplies) + _DEFINE_ARRAY_FUNCTION(/, __divides) + _DEFINE_ARRAY_FUNCTION(%, __modulus) + _DEFINE_ARRAY_FUNCTION(^, __bitwise_xor) + _DEFINE_ARRAY_FUNCTION(|, __bitwise_or) + _DEFINE_ARRAY_FUNCTION(&, __bitwise_and) + _DEFINE_ARRAY_FUNCTION(<<, __shift_left) + _DEFINE_ARRAY_FUNCTION(>>, __shift_right) + +#undef _DEFINE_ARRAY_FUNCTION + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +# include + +#endif /* _ARRAY_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_array.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_array.tcc new file mode 100644 index 0000000..0387e6e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_array.tcc @@ -0,0 +1,244 @@ +// The template and inlines for the -*- C++ -*- internal _Array helper class. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/valarray_array.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{valarray} + */ + +// Written by Gabriel Dos Reis + +#ifndef _VALARRAY_ARRAY_TCC +#define _VALARRAY_ARRAY_TCC 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + void + __valarray_fill(_Array<_Tp> __a, size_t __n, _Array __m, + const _Tp& __t) + { + _Tp* __p = __a._M_data; + bool* __ok (__m._M_data); + for (size_t __i=0; __i < __n; ++__i, ++__ok, ++__p) + { + while (!*__ok) + { + ++__ok; + ++__p; + } + *__p = __t; + } + } + + // Copy n elements of a into consecutive elements of b. When m is + // false, the corresponding element of a is skipped. m must contain + // at least n true elements. a must contain at least n elements and + // enough elements to match up with m through the nth true element + // of m. I.e. if n is 10, m has 15 elements with 5 false followed + // by 10 true, a must have 15 elements. + template + void + __valarray_copy(_Array<_Tp> __a, _Array __m, _Array<_Tp> __b, + size_t __n) + { + _Tp* __p (__a._M_data); + bool* __ok (__m._M_data); + for (_Tp* __q = __b._M_data; __q < __b._M_data + __n; + ++__q, ++__ok, ++__p) + { + while (! *__ok) + { + ++__ok; + ++__p; + } + *__q = *__p; + } + } + + // Copy n consecutive elements from a into elements of b. Elements + // of b are skipped if the corresponding element of m is false. m + // must contain at least n true elements. b must have at least as + // many elements as the index of the nth true element of m. I.e. if + // m has 15 elements with 5 false followed by 10 true, b must have + // at least 15 elements. + template + void + __valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b, + _Array __m) + { + _Tp* __q (__b._M_data); + bool* __ok (__m._M_data); + for (_Tp* __p = __a._M_data; __p < __a._M_data+__n; + ++__p, ++__ok, ++__q) + { + while (! *__ok) + { + ++__ok; + ++__q; + } + *__q = *__p; + } + } + + // Copy n elements from a into elements of b. Elements of a are + // skipped if the corresponding element of m is false. Elements of + // b are skipped if the corresponding element of k is false. m and + // k must contain at least n true elements. a and b must have at + // least as many elements as the index of the nth true element of m. + template + void + __valarray_copy(_Array<_Tp> __a, _Array __m, size_t __n, + _Array<_Tp> __b, _Array __k) + { + _Tp* __p (__a._M_data); + _Tp* __q (__b._M_data); + bool* __srcok (__m._M_data); + bool* __dstok (__k._M_data); + for (size_t __i = 0; __i < __n; + ++__srcok, ++__p, ++__dstok, ++__q, ++__i) + { + while (! *__srcok) + { + ++__srcok; + ++__p; + } + while (! *__dstok) + { + ++__dstok; + ++__q; + } + *__q = *__p; + } + } + + // Copy n consecutive elements of e into consecutive elements of a. + // I.e. a[i] = e[i]. + template + void + __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, _Array<_Tp> __a) + { + _Tp* __p (__a._M_data); + for (size_t __i = 0; __i < __n; ++__i, ++__p) + *__p = __e[__i]; + } + + // Copy n consecutive elements of e into elements of a using stride + // s. I.e., a[0] = e[0], a[s] = e[1], a[2*s] = e[2]. + template + void + __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, + _Array<_Tp> __a, size_t __s) + { + _Tp* __p (__a._M_data); + for (size_t __i = 0; __i < __n; ++__i, __p += __s) + *__p = __e[__i]; + } + + // Copy n consecutive elements of e into elements of a indexed by + // contents of i. I.e., a[i[0]] = e[0]. + template + void + __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, + _Array<_Tp> __a, _Array __i) + { + size_t* __j (__i._M_data); + for (size_t __k = 0; __k < __n; ++__k, ++__j) + __a._M_data[*__j] = __e[__k]; + } + + // Copy n elements of e indexed by contents of f into elements of a + // indexed by contents of i. I.e., a[i[0]] = e[f[0]]. + template + void + __valarray_copy(_Array<_Tp> __e, _Array __f, + size_t __n, + _Array<_Tp> __a, _Array __i) + { + size_t* __g (__f._M_data); + size_t* __j (__i._M_data); + for (size_t __k = 0; __k < __n; ++__k, ++__j, ++__g) + __a._M_data[*__j] = __e._M_data[*__g]; + } + + // Copy n consecutive elements of e into elements of a. Elements of + // a are skipped if the corresponding element of m is false. m must + // have at least n true elements and a must have at least as many + // elements as the index of the nth true element of m. I.e. if m + // has 5 false followed by 10 true elements and n == 10, a must have + // at least 15 elements. + template + void + __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, + _Array<_Tp> __a, _Array __m) + { + bool* __ok (__m._M_data); + _Tp* __p (__a._M_data); + for (size_t __i = 0; __i < __n; ++__i, ++__ok, ++__p) + { + while (! *__ok) + { + ++__ok; + ++__p; + } + *__p = __e[__i]; + } + } + + + template + void + __valarray_copy_construct(const _Expr<_Dom, _Tp>& __e, size_t __n, + _Array<_Tp> __a) + { + _Tp* __p (__a._M_data); + for (size_t __i = 0; __i < __n; ++__i, ++__p) + new (__p) _Tp(__e[__i]); + } + + + template + void + __valarray_copy_construct(_Array<_Tp> __a, _Array __m, + _Array<_Tp> __b, size_t __n) + { + _Tp* __p (__a._M_data); + bool* __ok (__m._M_data); + for (_Tp* __q = __b._M_data; __q < __b._M_data+__n; ++__q, ++__ok, ++__p) + { + while (! *__ok) + { + ++__ok; + ++__p; + } + new (__q) _Tp(*__p); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _VALARRAY_ARRAY_TCC */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_before.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_before.h new file mode 100644 index 0000000..b35731a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/valarray_before.h @@ -0,0 +1,733 @@ +// The template and inlines for the -*- C++ -*- internal _Meta class. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/valarray_before.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{valarray} + */ + +// Written by Gabriel Dos Reis + +#ifndef _VALARRAY_BEFORE_H +#define _VALARRAY_BEFORE_H 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // + // Implementing a loosened valarray return value is tricky. + // First we need to meet 26.3.1/3: we should not add more than + // two levels of template nesting. Therefore we resort to template + // template to "flatten" loosened return value types. + // At some point we use partial specialization to remove one level + // template nesting due to _Expr<> + // + + // This class is NOT defined. It doesn't need to. + template class _Constant; + + // Implementations of unary functions applied to valarray<>s. + // I use hard-coded object functions here instead of a generic + // approach like pointers to function: + // 1) correctness: some functions take references, others values. + // we can't deduce the correct type afterwards. + // 2) efficiency -- object functions can be easily inlined + // 3) be Koenig-lookup-friendly + + struct _Abs + { + template + _Tp operator()(const _Tp& __t) const + { return abs(__t); } + }; + + struct _Cos + { + template + _Tp operator()(const _Tp& __t) const + { return cos(__t); } + }; + + struct _Acos + { + template + _Tp operator()(const _Tp& __t) const + { return acos(__t); } + }; + + struct _Cosh + { + template + _Tp operator()(const _Tp& __t) const + { return cosh(__t); } + }; + + struct _Sin + { + template + _Tp operator()(const _Tp& __t) const + { return sin(__t); } + }; + + struct _Asin + { + template + _Tp operator()(const _Tp& __t) const + { return asin(__t); } + }; + + struct _Sinh + { + template + _Tp operator()(const _Tp& __t) const + { return sinh(__t); } + }; + + struct _Tan + { + template + _Tp operator()(const _Tp& __t) const + { return tan(__t); } + }; + + struct _Atan + { + template + _Tp operator()(const _Tp& __t) const + { return atan(__t); } + }; + + struct _Tanh + { + template + _Tp operator()(const _Tp& __t) const + { return tanh(__t); } + }; + + struct _Exp + { + template + _Tp operator()(const _Tp& __t) const + { return exp(__t); } + }; + + struct _Log + { + template + _Tp operator()(const _Tp& __t) const + { return log(__t); } + }; + + struct _Log10 + { + template + _Tp operator()(const _Tp& __t) const + { return log10(__t); } + }; + + struct _Sqrt + { + template + _Tp operator()(const _Tp& __t) const + { return sqrt(__t); } + }; + + // In the past, we used to tailor operator applications semantics + // to the specialization of standard function objects (i.e. plus<>, etc.) + // That is incorrect. Therefore we provide our own surrogates. + + struct __unary_plus + { + template + _Tp operator()(const _Tp& __t) const + { return +__t; } + }; + + struct __negate + { + template + _Tp operator()(const _Tp& __t) const + { return -__t; } + }; + + struct __bitwise_not + { + template + _Tp operator()(const _Tp& __t) const + { return ~__t; } + }; + + struct __plus + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x + __y; } + }; + + struct __minus + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x - __y; } + }; + + struct __multiplies + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x * __y; } + }; + + struct __divides + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x / __y; } + }; + + struct __modulus + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x % __y; } + }; + + struct __bitwise_xor + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x ^ __y; } + }; + + struct __bitwise_and + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x & __y; } + }; + + struct __bitwise_or + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x | __y; } + }; + + struct __shift_left + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x << __y; } + }; + + struct __shift_right + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return __x >> __y; } + }; + + struct __logical_and + { + template + bool operator()(const _Tp& __x, const _Tp& __y) const + { return __x && __y; } + }; + + struct __logical_or + { + template + bool operator()(const _Tp& __x, const _Tp& __y) const + { return __x || __y; } + }; + + struct __logical_not + { + template + bool operator()(const _Tp& __x) const + { return !__x; } + }; + + struct __equal_to + { + template + bool operator()(const _Tp& __x, const _Tp& __y) const + { return __x == __y; } + }; + + struct __not_equal_to + { + template + bool operator()(const _Tp& __x, const _Tp& __y) const + { return __x != __y; } + }; + + struct __less + { + template + bool operator()(const _Tp& __x, const _Tp& __y) const + { return __x < __y; } + }; + + struct __greater + { + template + bool operator()(const _Tp& __x, const _Tp& __y) const + { return __x > __y; } + }; + + struct __less_equal + { + template + bool operator()(const _Tp& __x, const _Tp& __y) const + { return __x <= __y; } + }; + + struct __greater_equal + { + template + bool operator()(const _Tp& __x, const _Tp& __y) const + { return __x >= __y; } + }; + + // The few binary functions we miss. + struct _Atan2 + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return atan2(__x, __y); } + }; + + struct _Pow + { + template + _Tp operator()(const _Tp& __x, const _Tp& __y) const + { return pow(__x, __y); } + }; + + + // We need these bits in order to recover the return type of + // some functions/operators now that we're no longer using + // function templates. + template + struct __fun + { + typedef _Tp result_type; + }; + + // several specializations for relational operators. + template + struct __fun<__logical_not, _Tp> + { + typedef bool result_type; + }; + + template + struct __fun<__logical_and, _Tp> + { + typedef bool result_type; + }; + + template + struct __fun<__logical_or, _Tp> + { + typedef bool result_type; + }; + + template + struct __fun<__less, _Tp> + { + typedef bool result_type; + }; + + template + struct __fun<__greater, _Tp> + { + typedef bool result_type; + }; + + template + struct __fun<__less_equal, _Tp> + { + typedef bool result_type; + }; + + template + struct __fun<__greater_equal, _Tp> + { + typedef bool result_type; + }; + + template + struct __fun<__equal_to, _Tp> + { + typedef bool result_type; + }; + + template + struct __fun<__not_equal_to, _Tp> + { + typedef bool result_type; + }; + + // + // Apply function taking a value/const reference closure + // + + template + class _FunBase + { + public: + typedef typename _Dom::value_type value_type; + + _FunBase(const _Dom& __e, value_type __f(_Arg)) + : _M_expr(__e), _M_func(__f) {} + + value_type operator[](size_t __i) const + { return _M_func (_M_expr[__i]); } + + size_t size() const { return _M_expr.size ();} + + private: + const _Dom& _M_expr; + value_type (*_M_func)(_Arg); + }; + + template + struct _ValFunClos<_Expr,_Dom> : _FunBase<_Dom, typename _Dom::value_type> + { + typedef _FunBase<_Dom, typename _Dom::value_type> _Base; + typedef typename _Base::value_type value_type; + typedef value_type _Tp; + + _ValFunClos(const _Dom& __e, _Tp __f(_Tp)) : _Base(__e, __f) {} + }; + + template + struct _ValFunClos<_ValArray,_Tp> : _FunBase, _Tp> + { + typedef _FunBase, _Tp> _Base; + typedef _Tp value_type; + + _ValFunClos(const valarray<_Tp>& __v, _Tp __f(_Tp)) : _Base(__v, __f) {} + }; + + template + struct _RefFunClos<_Expr, _Dom> + : _FunBase<_Dom, const typename _Dom::value_type&> + { + typedef _FunBase<_Dom, const typename _Dom::value_type&> _Base; + typedef typename _Base::value_type value_type; + typedef value_type _Tp; + + _RefFunClos(const _Dom& __e, _Tp __f(const _Tp&)) + : _Base(__e, __f) {} + }; + + template + struct _RefFunClos<_ValArray, _Tp> + : _FunBase, const _Tp&> + { + typedef _FunBase, const _Tp&> _Base; + typedef _Tp value_type; + + _RefFunClos(const valarray<_Tp>& __v, _Tp __f(const _Tp&)) + : _Base(__v, __f) {} + }; + + // + // Unary expression closure. + // + + template + class _UnBase + { + public: + typedef typename _Arg::value_type _Vt; + typedef typename __fun<_Oper, _Vt>::result_type value_type; + + _UnBase(const _Arg& __e) : _M_expr(__e) {} + + value_type operator[](size_t __i) const + { return _Oper()(_M_expr[__i]); } + + size_t size() const { return _M_expr.size(); } + + private: + const _Arg& _M_expr; + }; + + template + struct _UnClos<_Oper, _Expr, _Dom> + : _UnBase<_Oper, _Dom> + { + typedef _Dom _Arg; + typedef _UnBase<_Oper, _Dom> _Base; + typedef typename _Base::value_type value_type; + + _UnClos(const _Arg& __e) : _Base(__e) {} + }; + + template + struct _UnClos<_Oper, _ValArray, _Tp> + : _UnBase<_Oper, valarray<_Tp> > + { + typedef valarray<_Tp> _Arg; + typedef _UnBase<_Oper, valarray<_Tp> > _Base; + typedef typename _Base::value_type value_type; + + _UnClos(const _Arg& __e) : _Base(__e) {} + }; + + + // + // Binary expression closure. + // + + template + class _BinBase + { + public: + typedef typename _FirstArg::value_type _Vt; + typedef typename __fun<_Oper, _Vt>::result_type value_type; + + _BinBase(const _FirstArg& __e1, const _SecondArg& __e2) + : _M_expr1(__e1), _M_expr2(__e2) {} + + value_type operator[](size_t __i) const + { return _Oper()(_M_expr1[__i], _M_expr2[__i]); } + + size_t size() const { return _M_expr1.size(); } + + private: + const _FirstArg& _M_expr1; + const _SecondArg& _M_expr2; + }; + + + template + class _BinBase2 + { + public: + typedef typename _Clos::value_type _Vt; + typedef typename __fun<_Oper, _Vt>::result_type value_type; + + _BinBase2(const _Clos& __e, const _Vt& __t) + : _M_expr1(__e), _M_expr2(__t) {} + + value_type operator[](size_t __i) const + { return _Oper()(_M_expr1[__i], _M_expr2); } + + size_t size() const { return _M_expr1.size(); } + + private: + const _Clos& _M_expr1; + const _Vt& _M_expr2; + }; + + template + class _BinBase1 + { + public: + typedef typename _Clos::value_type _Vt; + typedef typename __fun<_Oper, _Vt>::result_type value_type; + + _BinBase1(const _Vt& __t, const _Clos& __e) + : _M_expr1(__t), _M_expr2(__e) {} + + value_type operator[](size_t __i) const + { return _Oper()(_M_expr1, _M_expr2[__i]); } + + size_t size() const { return _M_expr2.size(); } + + private: + const _Vt& _M_expr1; + const _Clos& _M_expr2; + }; + + template + struct _BinClos<_Oper, _Expr, _Expr, _Dom1, _Dom2> + : _BinBase<_Oper, _Dom1, _Dom2> + { + typedef _BinBase<_Oper, _Dom1, _Dom2> _Base; + typedef typename _Base::value_type value_type; + + _BinClos(const _Dom1& __e1, const _Dom2& __e2) : _Base(__e1, __e2) {} + }; + + template + struct _BinClos<_Oper,_ValArray, _ValArray, _Tp, _Tp> + : _BinBase<_Oper, valarray<_Tp>, valarray<_Tp> > + { + typedef _BinBase<_Oper, valarray<_Tp>, valarray<_Tp> > _Base; + typedef typename _Base::value_type value_type; + + _BinClos(const valarray<_Tp>& __v, const valarray<_Tp>& __w) + : _Base(__v, __w) {} + }; + + template + struct _BinClos<_Oper, _Expr, _ValArray, _Dom, typename _Dom::value_type> + : _BinBase<_Oper, _Dom, valarray > + { + typedef typename _Dom::value_type _Tp; + typedef _BinBase<_Oper,_Dom,valarray<_Tp> > _Base; + typedef typename _Base::value_type value_type; + + _BinClos(const _Dom& __e1, const valarray<_Tp>& __e2) + : _Base(__e1, __e2) {} + }; + + template + struct _BinClos<_Oper, _ValArray, _Expr, typename _Dom::value_type, _Dom> + : _BinBase<_Oper, valarray,_Dom> + { + typedef typename _Dom::value_type _Tp; + typedef _BinBase<_Oper, valarray<_Tp>, _Dom> _Base; + typedef typename _Base::value_type value_type; + + _BinClos(const valarray<_Tp>& __e1, const _Dom& __e2) + : _Base(__e1, __e2) {} + }; + + template + struct _BinClos<_Oper, _Expr, _Constant, _Dom, typename _Dom::value_type> + : _BinBase2<_Oper, _Dom> + { + typedef typename _Dom::value_type _Tp; + typedef _BinBase2<_Oper,_Dom> _Base; + typedef typename _Base::value_type value_type; + + _BinClos(const _Dom& __e1, const _Tp& __e2) : _Base(__e1, __e2) {} + }; + + template + struct _BinClos<_Oper, _Constant, _Expr, typename _Dom::value_type, _Dom> + : _BinBase1<_Oper, _Dom> + { + typedef typename _Dom::value_type _Tp; + typedef _BinBase1<_Oper, _Dom> _Base; + typedef typename _Base::value_type value_type; + + _BinClos(const _Tp& __e1, const _Dom& __e2) : _Base(__e1, __e2) {} + }; + + template + struct _BinClos<_Oper, _ValArray, _Constant, _Tp, _Tp> + : _BinBase2<_Oper, valarray<_Tp> > + { + typedef _BinBase2<_Oper,valarray<_Tp> > _Base; + typedef typename _Base::value_type value_type; + + _BinClos(const valarray<_Tp>& __v, const _Tp& __t) : _Base(__v, __t) {} + }; + + template + struct _BinClos<_Oper, _Constant, _ValArray, _Tp, _Tp> + : _BinBase1<_Oper, valarray<_Tp> > + { + typedef _BinBase1<_Oper, valarray<_Tp> > _Base; + typedef typename _Base::value_type value_type; + + _BinClos(const _Tp& __t, const valarray<_Tp>& __v) : _Base(__t, __v) {} + }; + + // + // slice_array closure. + // + template + class _SBase + { + public: + typedef typename _Dom::value_type value_type; + + _SBase (const _Dom& __e, const slice& __s) + : _M_expr (__e), _M_slice (__s) {} + + value_type + operator[] (size_t __i) const + { return _M_expr[_M_slice.start () + __i * _M_slice.stride ()]; } + + size_t + size() const + { return _M_slice.size (); } + + private: + const _Dom& _M_expr; + const slice& _M_slice; + }; + + template + class _SBase<_Array<_Tp> > + { + public: + typedef _Tp value_type; + + _SBase (_Array<_Tp> __a, const slice& __s) + : _M_array (__a._M_data+__s.start()), _M_size (__s.size()), + _M_stride (__s.stride()) {} + + value_type + operator[] (size_t __i) const + { return _M_array._M_data[__i * _M_stride]; } + + size_t + size() const + { return _M_size; } + + private: + const _Array<_Tp> _M_array; + const size_t _M_size; + const size_t _M_stride; + }; + + template + struct _SClos<_Expr, _Dom> + : _SBase<_Dom> + { + typedef _SBase<_Dom> _Base; + typedef typename _Base::value_type value_type; + + _SClos (const _Dom& __e, const slice& __s) : _Base (__e, __s) {} + }; + + template + struct _SClos<_ValArray, _Tp> + : _SBase<_Array<_Tp> > + { + typedef _SBase<_Array<_Tp> > _Base; + typedef _Tp value_type; + + _SClos (_Array<_Tp> __a, const slice& __s) : _Base (__a, __s) {} + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _CPP_VALARRAY_BEFORE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/vector.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/vector.tcc new file mode 100644 index 0000000..0882fe6 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bits/vector.tcc @@ -0,0 +1,858 @@ +// Vector implementation (out of line) -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/vector.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{vector} + */ + +#ifndef _VECTOR_TCC +#define _VECTOR_TCC 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + template + void + vector<_Tp, _Alloc>:: + reserve(size_type __n) + { + if (__n > this->max_size()) + __throw_length_error(__N("vector::reserve")); + if (this->capacity() < __n) + { + const size_type __old_size = size(); + pointer __tmp = _M_allocate_and_copy(__n, + _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(this->_M_impl._M_start), + _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(this->_M_impl._M_finish)); + 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; + } + } + +#if __cplusplus >= 201103L + 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)...); + } +#endif + + 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 __cplusplus >= 201103L + 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 +#endif + _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()) + _GLIBCXX_MOVE3(__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()) + _GLIBCXX_MOVE3(__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 __cplusplus >= 201103L + if (_Alloc_traits::_S_propagate_on_copy_assign()) + { + if (!_Alloc_traits::_S_always_equal() + && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) + { + // replacement allocator cannot free existing storage + 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()); + } +#endif + 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()); + } + } + +#if __cplusplus >= 201103L + 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) +#else + template + void + vector<_Tp, _Alloc>:: + _M_insert_aux(iterator __position, const _Tp& __x) +#endif + { + if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) + { + _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, + _GLIBCXX_MOVE(*(this->_M_impl._M_finish + - 1))); + ++this->_M_impl._M_finish; +#if __cplusplus < 201103L + _Tp __x_copy = __x; +#endif + _GLIBCXX_MOVE_BACKWARD3(__position.base(), + this->_M_impl._M_finish - 2, + this->_M_impl._M_finish - 1); +#if __cplusplus < 201103L + *__position = __x_copy; +#else + *__position = _Tp(std::forward<_Args>(__args)...); +#endif + } + else + { + const size_type __len = + _M_check_len(size_type(1), "vector::_M_insert_aux"); + const size_type __elems_before = __position - begin(); + pointer __new_start(this->_M_allocate(__len)); + pointer __new_finish(__new_start); + __try + { + // The order of the three operations is dictated by the C++0x + // case, where the moves could alter a new element belonging + // to the existing vector. This is an issue only for callers + // taking the element by const lvalue ref (see 23.1/13). + _Alloc_traits::construct(this->_M_impl, + __new_start + __elems_before, +#if __cplusplus >= 201103L + std::forward<_Args>(__args)...); +#else + __x); +#endif + __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()); + } + __catch(...) + { + if (!__new_finish) + _Alloc_traits::destroy(this->_M_impl, + __new_start + __elems_before); + else + std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + __throw_exception_again; + } + std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, + _M_get_Tp_allocator()); + _M_deallocate(this->_M_impl._M_start, + this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); + this->_M_impl._M_start = __new_start; + this->_M_impl._M_finish = __new_finish; + this->_M_impl._M_end_of_storage = __new_start + __len; + } + } + +#if __cplusplus >= 201103L + 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); + __try + { + _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; + } + __catch(...) + { + if (!__new_finish) + _Alloc_traits::destroy(this->_M_impl, __new_start + size()); + else + std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + __throw_exception_again; + } + std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, + _M_get_Tp_allocator()); + _M_deallocate(this->_M_impl._M_start, + this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); + this->_M_impl._M_start = __new_start; + this->_M_impl._M_finish = __new_finish; + this->_M_impl._M_end_of_storage = __new_start + __len; + } +#endif + + 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; + _GLIBCXX_MOVE_BACKWARD3(__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); + __try + { + // See _M_insert_aux above. + 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()); + } + __catch(...) + { + if (!__new_finish) + std::_Destroy(__new_start + __elems_before, + __new_start + __elems_before + __n, + _M_get_Tp_allocator()); + else + std::_Destroy(__new_start, __new_finish, + _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + __throw_exception_again; + } + std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, + _M_get_Tp_allocator()); + _M_deallocate(this->_M_impl._M_start, + this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); + this->_M_impl._M_start = __new_start; + this->_M_impl._M_finish = __new_finish; + this->_M_impl._M_end_of_storage = __new_start + __len; + } + } + } + +#if __cplusplus >= 201103L + 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); + __try + { + __new_finish + = std::__uninitialized_move_if_noexcept_a + (this->_M_impl._M_start, this->_M_impl._M_finish, + __new_start, _M_get_Tp_allocator()); + std::__uninitialized_default_n_a(__new_finish, __n, + _M_get_Tp_allocator()); + __new_finish += __n; + } + __catch(...) + { + std::_Destroy(__new_start, __new_finish, + _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + __throw_exception_again; + } + std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, + _M_get_Tp_allocator()); + _M_deallocate(this->_M_impl._M_start, + this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); + 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); + } +#endif + + 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; + _GLIBCXX_MOVE_BACKWARD3(__position.base(), + __old_finish - __n, __old_finish); + std::copy(__first, __last, __position); + } + else + { + _ForwardIterator __mid = __first; + std::advance(__mid, __elems_after); + std::__uninitialized_copy_a(__mid, __last, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish += __n - __elems_after; + std::__uninitialized_move_a(__position.base(), + __old_finish, + this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish += __elems_after; + std::copy(__first, __mid, __position); + } + } + else + { + const size_type __len = + _M_check_len(__n, "vector::_M_range_insert"); + pointer __new_start(this->_M_allocate(__len)); + pointer __new_finish(__new_start); + __try + { + __new_finish + = std::__uninitialized_move_if_noexcept_a + (this->_M_impl._M_start, __position.base(), + __new_start, _M_get_Tp_allocator()); + __new_finish + = std::__uninitialized_copy_a(__first, __last, + __new_finish, + _M_get_Tp_allocator()); + __new_finish + = std::__uninitialized_move_if_noexcept_a + (__position.base(), this->_M_impl._M_finish, + __new_finish, _M_get_Tp_allocator()); + } + __catch(...) + { + std::_Destroy(__new_start, __new_finish, + _M_get_Tp_allocator()); + _M_deallocate(__new_start, __len); + __throw_exception_again; + } + std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, + _M_get_Tp_allocator()); + _M_deallocate(this->_M_impl._M_start, + this->_M_impl._M_end_of_storage + - this->_M_impl._M_start); + this->_M_impl._M_start = __new_start; + this->_M_impl._M_finish = __new_finish; + this->_M_impl._M_end_of_storage = __new_start + __len; + } + } + } + + + // vector + 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); + } + } + +#if __cplusplus >= 201103L + template + bool + vector:: + _M_shrink_to_fit() + { + if (capacity() - size() < int(_S_word_bit)) + return false; + __try + { + _M_reallocate(size()); + return true; + } + __catch(...) + { return false; } + } +#endif + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#if __cplusplus >= 201103L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + size_t + hash<_GLIBCXX_STD_C::vector>:: + operator()(const _GLIBCXX_STD_C::vector& __b) const noexcept + { + size_t __hash = 0; + using _GLIBCXX_STD_C::_S_word_bit; + using _GLIBCXX_STD_C::_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 + __CHAR_BIT__ - 1) / __CHAR_BIT__; + if (__words) + __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); + else + __hash = std::_Hash_impl::hash(&__hiword, __clength); + } + + return __hash; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++11 + +#endif /* _VECTOR_TCC */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bitset b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bitset new file mode 100644 index 0000000..1da6baf --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/bitset @@ -0,0 +1,1585 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file include/bitset + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_BITSET +#define _GLIBCXX_BITSET 1 + +#pragma GCC system_header + +#include +#include // For invalid_argument, out_of_range, + // overflow_error +#include +#include + +#define _GLIBCXX_BITSET_BITS_PER_WORD (__CHAR_BIT__ * __SIZEOF_LONG__) +#define _GLIBCXX_BITSET_WORDS(__n) \ + ((__n) / _GLIBCXX_BITSET_BITS_PER_WORD + \ + ((__n) % _GLIBCXX_BITSET_BITS_PER_WORD == 0 ? 0 : 1)) + +#define _GLIBCXX_BITSET_BITS_PER_ULL (__CHAR_BIT__ * __SIZEOF_LONG_LONG__) + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * Base class, general case. It is a class invariant that _Nw will be + * nonnegative. + * + * See documentation for bitset. + */ + template + struct _Base_bitset + { + typedef unsigned long _WordT; + + /// 0 is the least significant word. + _WordT _M_w[_Nw]; + + _GLIBCXX_CONSTEXPR _Base_bitset() _GLIBCXX_NOEXCEPT + : _M_w() { } + +#if __cplusplus >= 201103L + constexpr _Base_bitset(unsigned long long __val) noexcept + : _M_w{ _WordT(__val) +#if __SIZEOF_LONG_LONG__ > __SIZEOF_LONG__ + , _WordT(__val >> _GLIBCXX_BITSET_BITS_PER_WORD) +#endif + } { } +#else + _Base_bitset(unsigned long __val) + : _M_w() + { _M_w[0] = __val; } +#endif + + static _GLIBCXX_CONSTEXPR size_t + _S_whichword(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbyte(size_t __pos) _GLIBCXX_NOEXCEPT + { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR _WordT + _S_maskbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); } + + _WordT& + _M_getword(size_t __pos) _GLIBCXX_NOEXCEPT + { return _M_w[_S_whichword(__pos)]; } + + _GLIBCXX_CONSTEXPR _WordT + _M_getword(size_t __pos) const _GLIBCXX_NOEXCEPT + { return _M_w[_S_whichword(__pos)]; } + +#if __cplusplus >= 201103L + const _WordT* + _M_getdata() const noexcept + { return _M_w; } +#endif + + _WordT& + _M_hiword() _GLIBCXX_NOEXCEPT + { return _M_w[_Nw - 1]; } + + _GLIBCXX_CONSTEXPR _WordT + _M_hiword() const _GLIBCXX_NOEXCEPT + { return _M_w[_Nw - 1]; } + + void + _M_do_and(const _Base_bitset<_Nw>& __x) _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] &= __x._M_w[__i]; + } + + void + _M_do_or(const _Base_bitset<_Nw>& __x) _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] |= __x._M_w[__i]; + } + + void + _M_do_xor(const _Base_bitset<_Nw>& __x) _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] ^= __x._M_w[__i]; + } + + void + _M_do_left_shift(size_t __shift) _GLIBCXX_NOEXCEPT; + + void + _M_do_right_shift(size_t __shift) _GLIBCXX_NOEXCEPT; + + void + _M_do_flip() _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] = ~_M_w[__i]; + } + + void + _M_do_set() _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] = ~static_cast<_WordT>(0); + } + + void + _M_do_reset() _GLIBCXX_NOEXCEPT + { __builtin_memset(_M_w, 0, _Nw * sizeof(_WordT)); } + + bool + _M_is_equal(const _Base_bitset<_Nw>& __x) const _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; ++__i) + if (_M_w[__i] != __x._M_w[__i]) + return false; + return true; + } + + template + bool + _M_are_all() const _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw - 1; __i++) + if (_M_w[__i] != ~static_cast<_WordT>(0)) + return false; + return _M_hiword() == (~static_cast<_WordT>(0) + >> (_Nw * _GLIBCXX_BITSET_BITS_PER_WORD + - _Nb)); + } + + bool + _M_is_any() const _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + if (_M_w[__i] != static_cast<_WordT>(0)) + return true; + return false; + } + + size_t + _M_do_count() const _GLIBCXX_NOEXCEPT + { + size_t __result = 0; + for (size_t __i = 0; __i < _Nw; __i++) + __result += __builtin_popcountl(_M_w[__i]); + return __result; + } + + unsigned long + _M_do_to_ulong() const; + +#if __cplusplus >= 201103L + unsigned long long + _M_do_to_ullong() const; +#endif + + // find first "on" bit + size_t + _M_do_find_first(size_t) const _GLIBCXX_NOEXCEPT; + + // find the next "on" bit that follows "prev" + size_t + _M_do_find_next(size_t, size_t) const _GLIBCXX_NOEXCEPT; + }; + + // Definitions of non-inline functions from _Base_bitset. + template + void + _Base_bitset<_Nw>::_M_do_left_shift(size_t __shift) _GLIBCXX_NOEXCEPT + { + if (__builtin_expect(__shift != 0, 1)) + { + const size_t __wshift = __shift / _GLIBCXX_BITSET_BITS_PER_WORD; + const size_t __offset = __shift % _GLIBCXX_BITSET_BITS_PER_WORD; + + if (__offset == 0) + for (size_t __n = _Nw - 1; __n >= __wshift; --__n) + _M_w[__n] = _M_w[__n - __wshift]; + else + { + const size_t __sub_offset = (_GLIBCXX_BITSET_BITS_PER_WORD + - __offset); + for (size_t __n = _Nw - 1; __n > __wshift; --__n) + _M_w[__n] = ((_M_w[__n - __wshift] << __offset) + | (_M_w[__n - __wshift - 1] >> __sub_offset)); + _M_w[__wshift] = _M_w[0] << __offset; + } + + std::fill(_M_w + 0, _M_w + __wshift, static_cast<_WordT>(0)); + } + } + + template + void + _Base_bitset<_Nw>::_M_do_right_shift(size_t __shift) _GLIBCXX_NOEXCEPT + { + if (__builtin_expect(__shift != 0, 1)) + { + const size_t __wshift = __shift / _GLIBCXX_BITSET_BITS_PER_WORD; + const size_t __offset = __shift % _GLIBCXX_BITSET_BITS_PER_WORD; + const size_t __limit = _Nw - __wshift - 1; + + if (__offset == 0) + for (size_t __n = 0; __n <= __limit; ++__n) + _M_w[__n] = _M_w[__n + __wshift]; + else + { + const size_t __sub_offset = (_GLIBCXX_BITSET_BITS_PER_WORD + - __offset); + for (size_t __n = 0; __n < __limit; ++__n) + _M_w[__n] = ((_M_w[__n + __wshift] >> __offset) + | (_M_w[__n + __wshift + 1] << __sub_offset)); + _M_w[__limit] = _M_w[_Nw-1] >> __offset; + } + + std::fill(_M_w + __limit + 1, _M_w + _Nw, static_cast<_WordT>(0)); + } + } + + template + unsigned long + _Base_bitset<_Nw>::_M_do_to_ulong() const + { + for (size_t __i = 1; __i < _Nw; ++__i) + if (_M_w[__i]) + __throw_overflow_error(__N("_Base_bitset::_M_do_to_ulong")); + return _M_w[0]; + } + +#if __cplusplus >= 201103L + template + unsigned long long + _Base_bitset<_Nw>::_M_do_to_ullong() const + { + const bool __dw = sizeof(unsigned long long) > sizeof(unsigned long); + for (size_t __i = 1 + __dw; __i < _Nw; ++__i) + if (_M_w[__i]) + __throw_overflow_error(__N("_Base_bitset::_M_do_to_ullong")); + + if (__dw) + return _M_w[0] + (static_cast(_M_w[1]) + << _GLIBCXX_BITSET_BITS_PER_WORD); + return _M_w[0]; + } +#endif + + template + size_t + _Base_bitset<_Nw>:: + _M_do_find_first(size_t __not_found) const _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + { + _WordT __thisword = _M_w[__i]; + if (__thisword != static_cast<_WordT>(0)) + return (__i * _GLIBCXX_BITSET_BITS_PER_WORD + + __builtin_ctzl(__thisword)); + } + // not found, so return an indication of failure. + return __not_found; + } + + template + size_t + _Base_bitset<_Nw>:: + _M_do_find_next(size_t __prev, size_t __not_found) const _GLIBCXX_NOEXCEPT + { + // make bound inclusive + ++__prev; + + // check out of bounds + if (__prev >= _Nw * _GLIBCXX_BITSET_BITS_PER_WORD) + return __not_found; + + // search first word + size_t __i = _S_whichword(__prev); + _WordT __thisword = _M_w[__i]; + + // mask off bits below bound + __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev); + + if (__thisword != static_cast<_WordT>(0)) + return (__i * _GLIBCXX_BITSET_BITS_PER_WORD + + __builtin_ctzl(__thisword)); + + // check subsequent words + __i++; + for (; __i < _Nw; __i++) + { + __thisword = _M_w[__i]; + if (__thisword != static_cast<_WordT>(0)) + return (__i * _GLIBCXX_BITSET_BITS_PER_WORD + + __builtin_ctzl(__thisword)); + } + // not found, so return an indication of failure. + return __not_found; + } // end _M_do_find_next + + /** + * Base class, specialization for a single word. + * + * See documentation for bitset. + */ + template<> + struct _Base_bitset<1> + { + typedef unsigned long _WordT; + _WordT _M_w; + + _GLIBCXX_CONSTEXPR _Base_bitset() _GLIBCXX_NOEXCEPT + : _M_w(0) + { } + +#if __cplusplus >= 201103L + constexpr _Base_bitset(unsigned long long __val) noexcept +#else + _Base_bitset(unsigned long __val) +#endif + : _M_w(__val) + { } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichword(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbyte(size_t __pos) _GLIBCXX_NOEXCEPT + { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR _WordT + _S_maskbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); } + + _WordT& + _M_getword(size_t) _GLIBCXX_NOEXCEPT + { return _M_w; } + + _GLIBCXX_CONSTEXPR _WordT + _M_getword(size_t) const _GLIBCXX_NOEXCEPT + { return _M_w; } + +#if __cplusplus >= 201103L + const _WordT* + _M_getdata() const noexcept + { return &_M_w; } +#endif + + _WordT& + _M_hiword() _GLIBCXX_NOEXCEPT + { return _M_w; } + + _GLIBCXX_CONSTEXPR _WordT + _M_hiword() const _GLIBCXX_NOEXCEPT + { return _M_w; } + + void + _M_do_and(const _Base_bitset<1>& __x) _GLIBCXX_NOEXCEPT + { _M_w &= __x._M_w; } + + void + _M_do_or(const _Base_bitset<1>& __x) _GLIBCXX_NOEXCEPT + { _M_w |= __x._M_w; } + + void + _M_do_xor(const _Base_bitset<1>& __x) _GLIBCXX_NOEXCEPT + { _M_w ^= __x._M_w; } + + void + _M_do_left_shift(size_t __shift) _GLIBCXX_NOEXCEPT + { _M_w <<= __shift; } + + void + _M_do_right_shift(size_t __shift) _GLIBCXX_NOEXCEPT + { _M_w >>= __shift; } + + void + _M_do_flip() _GLIBCXX_NOEXCEPT + { _M_w = ~_M_w; } + + void + _M_do_set() _GLIBCXX_NOEXCEPT + { _M_w = ~static_cast<_WordT>(0); } + + void + _M_do_reset() _GLIBCXX_NOEXCEPT + { _M_w = 0; } + + bool + _M_is_equal(const _Base_bitset<1>& __x) const _GLIBCXX_NOEXCEPT + { return _M_w == __x._M_w; } + + template + bool + _M_are_all() const _GLIBCXX_NOEXCEPT + { return _M_w == (~static_cast<_WordT>(0) + >> (_GLIBCXX_BITSET_BITS_PER_WORD - _Nb)); } + + bool + _M_is_any() const _GLIBCXX_NOEXCEPT + { return _M_w != 0; } + + size_t + _M_do_count() const _GLIBCXX_NOEXCEPT + { return __builtin_popcountl(_M_w); } + + unsigned long + _M_do_to_ulong() const _GLIBCXX_NOEXCEPT + { return _M_w; } + +#if __cplusplus >= 201103L + unsigned long long + _M_do_to_ullong() const noexcept + { return _M_w; } +#endif + + size_t + _M_do_find_first(size_t __not_found) const _GLIBCXX_NOEXCEPT + { + if (_M_w != 0) + return __builtin_ctzl(_M_w); + else + return __not_found; + } + + // find the next "on" bit that follows "prev" + size_t + _M_do_find_next(size_t __prev, size_t __not_found) const + _GLIBCXX_NOEXCEPT + { + ++__prev; + if (__prev >= ((size_t) _GLIBCXX_BITSET_BITS_PER_WORD)) + return __not_found; + + _WordT __x = _M_w >> __prev; + if (__x != 0) + return __builtin_ctzl(__x) + __prev; + else + return __not_found; + } + }; + + /** + * Base class, specialization for no storage (zero-length %bitset). + * + * See documentation for bitset. + */ + template<> + struct _Base_bitset<0> + { + typedef unsigned long _WordT; + + _GLIBCXX_CONSTEXPR _Base_bitset() _GLIBCXX_NOEXCEPT + { } + +#if __cplusplus >= 201103L + constexpr _Base_bitset(unsigned long long) noexcept +#else + _Base_bitset(unsigned long) +#endif + { } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichword(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbyte(size_t __pos) _GLIBCXX_NOEXCEPT + { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR _WordT + _S_maskbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); } + + // This would normally give access to the data. The bounds-checking + // in the bitset class will prevent the user from getting this far, + // but (1) it must still return an lvalue to compile, and (2) the + // user might call _Unchecked_set directly, in which case this /needs/ + // to fail. Let's not penalize zero-length users unless they actually + // make an unchecked call; all the memory ugliness is therefore + // localized to this single should-never-get-this-far function. + _WordT& + _M_getword(size_t) _GLIBCXX_NOEXCEPT + { + __throw_out_of_range(__N("_Base_bitset::_M_getword")); + return *new _WordT; + } + + _GLIBCXX_CONSTEXPR _WordT + _M_getword(size_t __pos) const _GLIBCXX_NOEXCEPT + { return 0; } + + _GLIBCXX_CONSTEXPR _WordT + _M_hiword() const _GLIBCXX_NOEXCEPT + { return 0; } + + void + _M_do_and(const _Base_bitset<0>&) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_or(const _Base_bitset<0>&) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_xor(const _Base_bitset<0>&) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_left_shift(size_t) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_right_shift(size_t) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_flip() _GLIBCXX_NOEXCEPT + { } + + void + _M_do_set() _GLIBCXX_NOEXCEPT + { } + + void + _M_do_reset() _GLIBCXX_NOEXCEPT + { } + + // Are all empty bitsets equal to each other? Are they equal to + // themselves? How to compare a thing which has no state? What is + // the sound of one zero-length bitset clapping? + bool + _M_is_equal(const _Base_bitset<0>&) const _GLIBCXX_NOEXCEPT + { return true; } + + template + bool + _M_are_all() const _GLIBCXX_NOEXCEPT + { return true; } + + bool + _M_is_any() const _GLIBCXX_NOEXCEPT + { return false; } + + size_t + _M_do_count() const _GLIBCXX_NOEXCEPT + { return 0; } + + unsigned long + _M_do_to_ulong() const _GLIBCXX_NOEXCEPT + { return 0; } + +#if __cplusplus >= 201103L + unsigned long long + _M_do_to_ullong() const noexcept + { return 0; } +#endif + + // Normally "not found" is the size, but that could also be + // misinterpreted as an index in this corner case. Oh well. + size_t + _M_do_find_first(size_t) const _GLIBCXX_NOEXCEPT + { return 0; } + + size_t + _M_do_find_next(size_t, size_t) const _GLIBCXX_NOEXCEPT + { return 0; } + }; + + + // Helper class to zero out the unused high-order bits in the highest word. + template + struct _Sanitize + { + typedef unsigned long _WordT; + + static void + _S_do_sanitize(_WordT& __val) _GLIBCXX_NOEXCEPT + { __val &= ~((~static_cast<_WordT>(0)) << _Extrabits); } + }; + + template<> + struct _Sanitize<0> + { + typedef unsigned long _WordT; + + static void + _S_do_sanitize(_WordT) _GLIBCXX_NOEXCEPT { } + }; + +#if __cplusplus >= 201103L + template + struct _Sanitize_val + { + static constexpr unsigned long long + _S_do_sanitize_val(unsigned long long __val) + { return __val; } + }; + + template + struct _Sanitize_val<_Nb, true> + { + static constexpr unsigned long long + _S_do_sanitize_val(unsigned long long __val) + { return __val & ~((~static_cast(0)) << _Nb); } + }; +#endif + + /** + * The %bitset class represents a @e fixed-size sequence of bits. + * + * @ingroup containers + * + * (Note that %bitset does @e not meet the formal requirements of a + * container. Mainly, it lacks iterators.) + * + * The template argument, @a Nb, may be any non-negative number, + * specifying the number of bits (e.g., "0", "12", "1024*1024"). + * + * In the general unoptimized case, storage is allocated in word-sized + * blocks. Let B be the number of bits in a word, then (Nb+(B-1))/B + * words will be used for storage. B - Nb%B bits are unused. (They are + * the high-order bits in the highest word.) It is a class invariant + * that those unused bits are always zero. + * + * If you think of %bitset as a simple array of bits, be + * aware that your mental picture is reversed: a %bitset behaves + * the same way as bits in integers do, with the bit at index 0 in + * the least significant / right-hand position, and the bit at + * index Nb-1 in the most significant / left-hand position. + * Thus, unlike other containers, a %bitset's index counts from + * right to left, to put it very loosely. + * + * This behavior is preserved when translating to and from strings. For + * example, the first line of the following program probably prints + * b('a') is 0001100001 on a modern ASCII system. + * + * @code + * #include + * #include + * #include + * + * using namespace std; + * + * int main() + * { + * long a = 'a'; + * bitset<10> b(a); + * + * cout << "b('a') is " << b << endl; + * + * ostringstream s; + * s << b; + * string str = s.str(); + * cout << "index 3 in the string is " << str[3] << " but\n" + * << "index 3 in the bitset is " << b[3] << endl; + * } + * @endcode + * + * Also see: + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch33s02.html + * for a description of extensions. + * + * Most of the actual code isn't contained in %bitset<> itself, but in the + * base class _Base_bitset. The base class works with whole words, not with + * individual bits. This allows us to specialize _Base_bitset for the + * important special case where the %bitset is only a single word. + * + * Extra confusion can result due to the fact that the storage for + * _Base_bitset @e is a regular array, and is indexed as such. This is + * carefully encapsulated. + */ + template + class bitset + : private _Base_bitset<_GLIBCXX_BITSET_WORDS(_Nb)> + { + private: + typedef _Base_bitset<_GLIBCXX_BITSET_WORDS(_Nb)> _Base; + typedef unsigned long _WordT; + + void + _M_do_sanitize() _GLIBCXX_NOEXCEPT + { + typedef _Sanitize<_Nb % _GLIBCXX_BITSET_BITS_PER_WORD> __sanitize_type; + __sanitize_type::_S_do_sanitize(this->_M_hiword()); + } + +#if __cplusplus >= 201103L + template friend struct hash; +#endif + + public: + /** + * This encapsulates the concept of a single bit. An instance of this + * class is a proxy for an actual bit; this way the individual bit + * operations are done as faster word-size bitwise instructions. + * + * Most users will never need to use this class directly; conversions + * to and from bool are automatic and should be transparent. Overloaded + * operators help to preserve the illusion. + * + * (On a typical system, this bit %reference is 64 + * times the size of an actual bit. Ha.) + */ + class reference + { + friend class bitset; + + _WordT* _M_wp; + size_t _M_bpos; + + // left undefined + reference(); + + public: + reference(bitset& __b, size_t __pos) _GLIBCXX_NOEXCEPT + { + _M_wp = &__b._M_getword(__pos); + _M_bpos = _Base::_S_whichbit(__pos); + } + + ~reference() _GLIBCXX_NOEXCEPT + { } + + // For b[i] = __x; + reference& + operator=(bool __x) _GLIBCXX_NOEXCEPT + { + if (__x) + *_M_wp |= _Base::_S_maskbit(_M_bpos); + else + *_M_wp &= ~_Base::_S_maskbit(_M_bpos); + return *this; + } + + // For b[i] = b[__j]; + reference& + operator=(const reference& __j) _GLIBCXX_NOEXCEPT + { + if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos))) + *_M_wp |= _Base::_S_maskbit(_M_bpos); + else + *_M_wp &= ~_Base::_S_maskbit(_M_bpos); + return *this; + } + + // Flips the bit + bool + operator~() const _GLIBCXX_NOEXCEPT + { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) == 0; } + + // For __x = b[i]; + operator bool() const _GLIBCXX_NOEXCEPT + { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) != 0; } + + // For b[i].flip(); + reference& + flip() _GLIBCXX_NOEXCEPT + { + *_M_wp ^= _Base::_S_maskbit(_M_bpos); + return *this; + } + }; + friend class reference; + + // 23.3.5.1 constructors: + /// All bits set to zero. + _GLIBCXX_CONSTEXPR bitset() _GLIBCXX_NOEXCEPT + { } + + /// Initial bits bitwise-copied from a single word (others set to zero). +#if __cplusplus >= 201103L + constexpr bitset(unsigned long long __val) noexcept + : _Base(_Sanitize_val<_Nb>::_S_do_sanitize_val(__val)) { } +#else + bitset(unsigned long __val) + : _Base(__val) + { _M_do_sanitize(); } +#endif + + /** + * Use a subset of a string. + * @param __s A string of @a 0 and @a 1 characters. + * @param __position Index of the first character in @a __s to use; + * defaults to zero. + * @throw std::out_of_range If @a pos is bigger the size of @a __s. + * @throw std::invalid_argument If a character appears in the string + * which is neither @a 0 nor @a 1. + */ + template + explicit + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s, + size_t __position = 0) + : _Base() + { + if (__position > __s.size()) + __throw_out_of_range(__N("bitset::bitset initial position " + "not valid")); + _M_copy_from_string(__s, __position, + std::basic_string<_CharT, _Traits, _Alloc>::npos, + _CharT('0'), _CharT('1')); + } + + /** + * Use a subset of a string. + * @param __s A string of @a 0 and @a 1 characters. + * @param __position Index of the first character in @a __s to use. + * @param __n The number of characters to copy. + * @throw std::out_of_range If @a __position is bigger the size + * of @a __s. + * @throw std::invalid_argument If a character appears in the string + * which is neither @a 0 nor @a 1. + */ + template + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s, + size_t __position, size_t __n) + : _Base() + { + if (__position > __s.size()) + __throw_out_of_range(__N("bitset::bitset initial position " + "not valid")); + _M_copy_from_string(__s, __position, __n, _CharT('0'), _CharT('1')); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + template + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s, + size_t __position, size_t __n, + _CharT __zero, _CharT __one = _CharT('1')) + : _Base() + { + if (__position > __s.size()) + __throw_out_of_range(__N("bitset::bitset initial position " + "not valid")); + _M_copy_from_string(__s, __position, __n, __zero, __one); + } + +#if __cplusplus >= 201103L + /** + * Construct from a character %array. + * @param __str An %array of characters @a zero and @a one. + * @param __n The number of characters to use. + * @param __zero The character corresponding to the value 0. + * @param __one The character corresponding to the value 1. + * @throw std::invalid_argument If a character appears in the string + * which is neither @a __zero nor @a __one. + */ + template + explicit + bitset(const _CharT* __str, + typename std::basic_string<_CharT>::size_type __n + = std::basic_string<_CharT>::npos, + _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')) + : _Base() + { + if (!__str) + __throw_logic_error(__N("bitset::bitset(const _CharT*, ...)")); + + if (__n == std::basic_string<_CharT>::npos) + __n = std::char_traits<_CharT>::length(__str); + _M_copy_from_ptr<_CharT, std::char_traits<_CharT>>(__str, __n, 0, + __n, __zero, + __one); + } +#endif + + // 23.3.5.2 bitset operations: + //@{ + /** + * Operations on bitsets. + * @param __rhs A same-sized bitset. + * + * These should be self-explanatory. + */ + bitset<_Nb>& + operator&=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + this->_M_do_and(__rhs); + return *this; + } + + bitset<_Nb>& + operator|=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + this->_M_do_or(__rhs); + return *this; + } + + bitset<_Nb>& + operator^=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + this->_M_do_xor(__rhs); + return *this; + } + //@} + + //@{ + /** + * Operations on bitsets. + * @param __position The number of places to shift. + * + * These should be self-explanatory. + */ + bitset<_Nb>& + operator<<=(size_t __position) _GLIBCXX_NOEXCEPT + { + if (__builtin_expect(__position < _Nb, 1)) + { + this->_M_do_left_shift(__position); + this->_M_do_sanitize(); + } + else + this->_M_do_reset(); + return *this; + } + + bitset<_Nb>& + operator>>=(size_t __position) _GLIBCXX_NOEXCEPT + { + if (__builtin_expect(__position < _Nb, 1)) + { + this->_M_do_right_shift(__position); + this->_M_do_sanitize(); + } + else + this->_M_do_reset(); + return *this; + } + //@} + + //@{ + /** + * These versions of single-bit set, reset, flip, and test are + * extensions from the SGI version. They do no range checking. + * @ingroup SGIextensions + */ + bitset<_Nb>& + _Unchecked_set(size_t __pos) _GLIBCXX_NOEXCEPT + { + this->_M_getword(__pos) |= _Base::_S_maskbit(__pos); + return *this; + } + + bitset<_Nb>& + _Unchecked_set(size_t __pos, int __val) _GLIBCXX_NOEXCEPT + { + if (__val) + this->_M_getword(__pos) |= _Base::_S_maskbit(__pos); + else + this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos); + return *this; + } + + bitset<_Nb>& + _Unchecked_reset(size_t __pos) _GLIBCXX_NOEXCEPT + { + this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos); + return *this; + } + + bitset<_Nb>& + _Unchecked_flip(size_t __pos) _GLIBCXX_NOEXCEPT + { + this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos); + return *this; + } + + _GLIBCXX_CONSTEXPR bool + _Unchecked_test(size_t __pos) const _GLIBCXX_NOEXCEPT + { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos)) + != static_cast<_WordT>(0)); } + //@} + + // Set, reset, and flip. + /** + * @brief Sets every bit to true. + */ + bitset<_Nb>& + set() _GLIBCXX_NOEXCEPT + { + this->_M_do_set(); + this->_M_do_sanitize(); + return *this; + } + + /** + * @brief Sets a given bit to a particular value. + * @param __position The index of the bit. + * @param __val Either true or false, defaults to true. + * @throw std::out_of_range If @a pos is bigger the size of the %set. + */ + bitset<_Nb>& + set(size_t __position, bool __val = true) + { + if (__position >= _Nb) + __throw_out_of_range(__N("bitset::set")); + return _Unchecked_set(__position, __val); + } + + /** + * @brief Sets every bit to false. + */ + bitset<_Nb>& + reset() _GLIBCXX_NOEXCEPT + { + this->_M_do_reset(); + return *this; + } + + /** + * @brief Sets a given bit to false. + * @param __position The index of the bit. + * @throw std::out_of_range If @a pos is bigger the size of the %set. + * + * Same as writing @c set(pos,false). + */ + bitset<_Nb>& + reset(size_t __position) + { + if (__position >= _Nb) + __throw_out_of_range(__N("bitset::reset")); + return _Unchecked_reset(__position); + } + + /** + * @brief Toggles every bit to its opposite value. + */ + bitset<_Nb>& + flip() _GLIBCXX_NOEXCEPT + { + this->_M_do_flip(); + this->_M_do_sanitize(); + return *this; + } + + /** + * @brief Toggles a given bit to its opposite value. + * @param __position The index of the bit. + * @throw std::out_of_range If @a pos is bigger the size of the %set. + */ + bitset<_Nb>& + flip(size_t __position) + { + if (__position >= _Nb) + __throw_out_of_range(__N("bitset::flip")); + return _Unchecked_flip(__position); + } + + /// See the no-argument flip(). + bitset<_Nb> + operator~() const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(*this).flip(); } + + //@{ + /** + * @brief Array-indexing support. + * @param __position Index into the %bitset. + * @return A bool for a const %bitset. For non-const + * bitsets, an instance of the reference proxy class. + * @note These operators do no range checking and throw no exceptions, + * as required by DR 11 to the standard. + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS Note that this implementation already + * resolves DR 11 (items 1 and 2), but does not do the range-checking + * required by that DR's resolution. -pme + * The DR has since been changed: range-checking is a precondition + * (users' responsibility), and these functions must not throw. -pme + */ + reference + operator[](size_t __position) + { return reference(*this, __position); } + + _GLIBCXX_CONSTEXPR bool + operator[](size_t __position) const + { return _Unchecked_test(__position); } + //@} + + /** + * @brief Returns a numerical interpretation of the %bitset. + * @return The integral equivalent of the bits. + * @throw std::overflow_error If there are too many bits to be + * represented in an @c unsigned @c long. + */ + unsigned long + to_ulong() const + { return this->_M_do_to_ulong(); } + +#if __cplusplus >= 201103L + unsigned long long + to_ullong() const + { return this->_M_do_to_ullong(); } +#endif + + /** + * @brief Returns a character interpretation of the %bitset. + * @return The string equivalent of the bits. + * + * Note the ordering of the bits: decreasing character positions + * correspond to increasing bit positions (see the main class notes for + * an example). + */ + template + std::basic_string<_CharT, _Traits, _Alloc> + to_string() const + { + std::basic_string<_CharT, _Traits, _Alloc> __result; + _M_copy_to_string(__result, _CharT('0'), _CharT('1')); + return __result; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + template + std::basic_string<_CharT, _Traits, _Alloc> + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { + std::basic_string<_CharT, _Traits, _Alloc> __result; + _M_copy_to_string(__result, __zero, __one); + return __result; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 434. bitset::to_string() hard to use. + template + std::basic_string<_CharT, _Traits, std::allocator<_CharT> > + to_string() const + { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 853. to_string needs updating with zero and one. + template + std::basic_string<_CharT, _Traits, std::allocator<_CharT> > + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { return to_string<_CharT, _Traits, + std::allocator<_CharT> >(__zero, __one); } + + template + std::basic_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> > + to_string() const + { + return to_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> >(); + } + + template + std::basic_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> > + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { + return to_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> >(__zero, __one); + } + + std::basic_string, std::allocator > + to_string() const + { + return to_string, + std::allocator >(); + } + + std::basic_string, std::allocator > + to_string(char __zero, char __one = '1') const + { + return to_string, + std::allocator >(__zero, __one); + } + + // Helper functions for string operations. + template + void + _M_copy_from_ptr(const _CharT*, size_t, size_t, size_t, + _CharT, _CharT); + + template + void + _M_copy_from_string(const std::basic_string<_CharT, + _Traits, _Alloc>& __s, size_t __pos, size_t __n, + _CharT __zero, _CharT __one) + { _M_copy_from_ptr<_CharT, _Traits>(__s.data(), __s.size(), __pos, __n, + __zero, __one); } + + template + void + _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>&, + _CharT, _CharT) const; + + // NB: Backward compat. + template + void + _M_copy_from_string(const std::basic_string<_CharT, + _Traits, _Alloc>& __s, size_t __pos, size_t __n) + { _M_copy_from_string(__s, __pos, __n, _CharT('0'), _CharT('1')); } + + template + void + _M_copy_to_string(std::basic_string<_CharT, _Traits,_Alloc>& __s) const + { _M_copy_to_string(__s, _CharT('0'), _CharT('1')); } + + /// Returns the number of bits which are set. + size_t + count() const _GLIBCXX_NOEXCEPT + { return this->_M_do_count(); } + + /// Returns the total number of bits. + _GLIBCXX_CONSTEXPR size_t + size() const _GLIBCXX_NOEXCEPT + { return _Nb; } + + //@{ + /// These comparisons for equality/inequality are, well, @e bitwise. + bool + operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return this->_M_is_equal(__rhs); } + + bool + operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return !this->_M_is_equal(__rhs); } + //@} + + /** + * @brief Tests the value of a bit. + * @param __position The index of a bit. + * @return The value at @a pos. + * @throw std::out_of_range If @a pos is bigger the size of the %set. + */ + bool + test(size_t __position) const + { + if (__position >= _Nb) + __throw_out_of_range(__N("bitset::test")); + return _Unchecked_test(__position); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 693. std::bitset::all() missing. + /** + * @brief Tests whether all the bits are on. + * @return True if all the bits are set. + */ + bool + all() const _GLIBCXX_NOEXCEPT + { return this->template _M_are_all<_Nb>(); } + + /** + * @brief Tests whether any of the bits are on. + * @return True if at least one bit is set. + */ + bool + any() const _GLIBCXX_NOEXCEPT + { return this->_M_is_any(); } + + /** + * @brief Tests whether any of the bits are on. + * @return True if none of the bits are set. + */ + bool + none() const _GLIBCXX_NOEXCEPT + { return !this->_M_is_any(); } + + //@{ + /// Self-explanatory. + bitset<_Nb> + operator<<(size_t __position) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(*this) <<= __position; } + + bitset<_Nb> + operator>>(size_t __position) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(*this) >>= __position; } + //@} + + /** + * @brief Finds the index of the first "on" bit. + * @return The index of the first bit set, or size() if not found. + * @ingroup SGIextensions + * @sa _Find_next + */ + size_t + _Find_first() const _GLIBCXX_NOEXCEPT + { return this->_M_do_find_first(_Nb); } + + /** + * @brief Finds the index of the next "on" bit after prev. + * @return The index of the next bit set, or size() if not found. + * @param __prev Where to start searching. + * @ingroup SGIextensions + * @sa _Find_first + */ + size_t + _Find_next(size_t __prev) const _GLIBCXX_NOEXCEPT + { return this->_M_do_find_next(__prev, _Nb); } + }; + + // Definitions of non-inline member functions. + template + template + void + bitset<_Nb>:: + _M_copy_from_ptr(const _CharT* __s, size_t __len, + size_t __pos, size_t __n, _CharT __zero, _CharT __one) + { + reset(); + const size_t __nbits = std::min(_Nb, std::min(__n, size_t(__len - __pos))); + for (size_t __i = __nbits; __i > 0; --__i) + { + const _CharT __c = __s[__pos + __nbits - __i]; + if (_Traits::eq(__c, __zero)) + ; + else if (_Traits::eq(__c, __one)) + _Unchecked_set(__i - 1); + else + __throw_invalid_argument(__N("bitset::_M_copy_from_ptr")); + } + } + + template + template + void + bitset<_Nb>:: + _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>& __s, + _CharT __zero, _CharT __one) const + { + __s.assign(_Nb, __zero); + for (size_t __i = _Nb; __i > 0; --__i) + if (_Unchecked_test(__i - 1)) + _Traits::assign(__s[_Nb - __i], __one); + } + + // 23.3.5.3 bitset operations: + //@{ + /** + * @brief Global bitwise operations on bitsets. + * @param __x A bitset. + * @param __y A bitset of the same size as @a __x. + * @return A new bitset. + * + * These should be self-explanatory. + */ + template + inline bitset<_Nb> + operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { + bitset<_Nb> __result(__x); + __result &= __y; + return __result; + } + + template + inline bitset<_Nb> + operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { + bitset<_Nb> __result(__x); + __result |= __y; + return __result; + } + + template + inline bitset<_Nb> + operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { + bitset<_Nb> __result(__x); + __result ^= __y; + return __result; + } + //@} + + //@{ + /** + * @brief Global I/O operators for bitsets. + * + * Direct I/O between streams and bitsets is supported. Output is + * straightforward. Input will skip whitespace, only accept @a 0 and @a 1 + * characters, and will only extract as many digits as the %bitset will + * hold. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) + { + typedef typename _Traits::char_type char_type; + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + std::basic_string<_CharT, _Traits> __tmp; + __tmp.reserve(_Nb); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 303. Bitset input operator underspecified + const char_type __zero = __is.widen('0'); + const char_type __one = __is.widen('1'); + + typename __ios_base::iostate __state = __ios_base::goodbit; + typename __istream_type::sentry __sentry(__is); + if (__sentry) + { + __try + { + for (size_t __i = _Nb; __i > 0; --__i) + { + static typename _Traits::int_type __eof = _Traits::eof(); + + typename _Traits::int_type __c1 = __is.rdbuf()->sbumpc(); + if (_Traits::eq_int_type(__c1, __eof)) + { + __state |= __ios_base::eofbit; + break; + } + else + { + const char_type __c2 = _Traits::to_char_type(__c1); + if (_Traits::eq(__c2, __zero)) + __tmp.push_back(__zero); + else if (_Traits::eq(__c2, __one)) + __tmp.push_back(__one); + else if (_Traits:: + eq_int_type(__is.rdbuf()->sputbackc(__c2), + __eof)) + { + __state |= __ios_base::failbit; + break; + } + } + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + __is._M_setstate(__ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { __is._M_setstate(__ios_base::badbit); } + } + + if (__tmp.empty() && _Nb) + __state |= __ios_base::failbit; + else + __x._M_copy_from_string(__tmp, static_cast(0), _Nb, + __zero, __one); + if (__state) + __is.setstate(__state); + return __is; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const bitset<_Nb>& __x) + { + std::basic_string<_CharT, _Traits> __tmp; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + const ctype<_CharT>& __ct = use_facet >(__os.getloc()); + __x._M_copy_to_string(__tmp, __ct.widen('0'), __ct.widen('1')); + return __os << __tmp; + } + //@} + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#undef _GLIBCXX_BITSET_WORDS +#undef _GLIBCXX_BITSET_BITS_PER_WORD +#undef _GLIBCXX_BITSET_BITS_PER_ULL + +#if __cplusplus >= 201103L + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // DR 1182. + /// std::hash specialization for bitset. + template + struct hash<_GLIBCXX_STD_C::bitset<_Nb>> + : public __hash_base> + { + size_t + operator()(const _GLIBCXX_STD_C::bitset<_Nb>& __b) const noexcept + { + const size_t __clength = (_Nb + __CHAR_BIT__ - 1) / __CHAR_BIT__; + return std::_Hash_impl::hash(__b._M_getdata(), __clength); + } + }; + + template<> + struct hash<_GLIBCXX_STD_C::bitset<0>> + : public __hash_base> + { + size_t + operator()(const _GLIBCXX_STD_C::bitset<0>&) const noexcept + { return 0; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // C++11 + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif /* _GLIBCXX_BITSET */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cassert b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cassert new file mode 100644 index 0000000..fd85c22 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cassert @@ -0,0 +1,43 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file cassert + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c assert.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 19.2 Assertions +// + +// No include guards on this header... + +#pragma GCC system_header + +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ccomplex b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ccomplex new file mode 100644 index 0000000..7a98993 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ccomplex @@ -0,0 +1,40 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/ccomplex + * This is a Standard C++ Library header. + */ + +#pragma GCC system_header + +#ifndef _GLIBCXX_CCOMPLEX +#define _GLIBCXX_CCOMPLEX 1 + +#if __cplusplus < 201103L +# include +#endif + +#include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cctype b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cctype new file mode 100644 index 0000000..d2f883f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cctype @@ -0,0 +1,94 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cctype + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c ctype.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CCTYPE +#define _GLIBCXX_CCTYPE 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef isalnum +#undef isalpha +#undef iscntrl +#undef isdigit +#undef isgraph +#undef islower +#undef isprint +#undef ispunct +#undef isspace +#undef isupper +#undef isxdigit +#undef tolower +#undef toupper + +namespace std +{ + using ::isalnum; + using ::isalpha; + using ::iscntrl; + using ::isdigit; + using ::isgraph; + using ::islower; + using ::isprint; + using ::ispunct; + using ::isspace; + using ::isupper; + using ::isxdigit; + using ::tolower; + using ::toupper; +} // namespace std + +#if __cplusplus >= 201103L + +#ifdef _GLIBCXX_USE_C99_CTYPE_TR1 + +#undef isblank + +namespace std +{ + using ::isblank; +} // namespace std + +#endif // _GLIBCXX_USE_C99_CTYPE_TR1 + +#endif // C++11 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cerrno b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cerrno new file mode 100644 index 0000000..8c5cc4e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cerrno @@ -0,0 +1,51 @@ +// The -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file cerrno + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c errno.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 19.3 Error numbers +// + +#pragma GCC system_header + +#include + +#ifndef _GLIBCXX_CERRNO +#define _GLIBCXX_CERRNO 1 + +// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998 +#ifndef errno +#define errno errno +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cfenv b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cfenv new file mode 100644 index 0000000..0b96c16 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cfenv @@ -0,0 +1,84 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cfenv + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CFENV +#define _GLIBCXX_CFENV 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include + +#if _GLIBCXX_HAVE_FENV_H +# include +#endif + +#ifdef _GLIBCXX_USE_C99_FENV_TR1 + +#undef feclearexcept +#undef fegetexceptflag +#undef feraiseexcept +#undef fesetexceptflag +#undef fetestexcept +#undef fegetround +#undef fesetround +#undef fegetenv +#undef feholdexcept +#undef fesetenv +#undef feupdateenv + +namespace std +{ + // types + using ::fenv_t; + using ::fexcept_t; + + // functions + using ::feclearexcept; + using ::fegetexceptflag; + using ::feraiseexcept; + using ::fesetexceptflag; + using ::fetestexcept; + + using ::fegetround; + using ::fesetround; + + using ::fegetenv; + using ::feholdexcept; + using ::fesetenv; + using ::feupdateenv; +} // namespace std + +#endif // _GLIBCXX_USE_C99_FENV_TR1 + +#endif // C++11 + +#endif // _GLIBCXX_CFENV diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cfloat b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cfloat new file mode 100644 index 0000000..20b0632 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cfloat @@ -0,0 +1,55 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cfloat + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c float.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 18.2.2 Implementation properties: C library +// + +#pragma GCC system_header + +#include + +#ifndef _GLIBCXX_CFLOAT +#define _GLIBCXX_CFLOAT 1 + +#if __cplusplus >= 201103L +# ifndef DECIMAL_DIG +# define DECIMAL_DIG __DECIMAL_DIG__ +# endif +# ifndef FLT_EVAL_METHOD +# define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +# endif +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/chrono b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/chrono new file mode 100644 index 0000000..6d9df7d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/chrono @@ -0,0 +1,789 @@ +// -*- C++ -*- + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/chrono + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CHRONO +#define _GLIBCXX_CHRONO 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include +#include + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ + /** + * @defgroup chrono Time + * @ingroup utilities + * + * Classes and functions for time. + * @{ + */ + + /** @namespace std::chrono + * @brief ISO C++ 2011 entities sub-namespace for time and date. + */ + namespace chrono + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION + + template> + struct duration; + + template + struct time_point; + + _GLIBCXX_END_NAMESPACE_VERSION + } + +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // 20.11.4.3 specialization of common_type (for duration, sfinae-friendly) + + template + struct __duration_common_type_wrapper + { + private: + typedef __static_gcd<_Period1::num, _Period2::num> __gcd_num; + typedef __static_gcd<_Period1::den, _Period2::den> __gcd_den; + typedef typename _CT::type __cr; + typedef ratio<__gcd_num::value, + (_Period1::den / __gcd_den::value) * _Period2::den> __r; + public: + typedef __success_type> type; + }; + + template + struct __duration_common_type_wrapper<__failure_type, _Period1, _Period2> + { typedef __failure_type type; }; + + template + struct common_type, + chrono::duration<_Rep2, _Period2>> + : public __duration_common_type_wrapper>::type, _Period1, _Period2>::type + { }; + + // 20.11.4.3 specialization of common_type (for time_point, sfinae-friendly) + + template + struct __timepoint_common_type_wrapper + { + typedef __success_type> + type; + }; + + template + struct __timepoint_common_type_wrapper<__failure_type, _Clock> + { typedef __failure_type type; }; + + template + struct common_type, + chrono::time_point<_Clock, _Duration2>> + : public __timepoint_common_type_wrapper>::type, _Clock>::type + { }; + +_GLIBCXX_END_NAMESPACE_VERSION + + namespace chrono + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Primary template for duration_cast impl. + template + struct __duration_cast_impl + { + template + static constexpr _ToDur + __cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::rep __to_rep; + return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) + * static_cast<_CR>(_CF::num) + / static_cast<_CR>(_CF::den))); + } + }; + + template + struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> + { + template + static constexpr _ToDur + __cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::rep __to_rep; + return _ToDur(static_cast<__to_rep>(__d.count())); + } + }; + + template + struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> + { + template + static constexpr _ToDur + __cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::rep __to_rep; + return _ToDur(static_cast<__to_rep>( + static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); + } + }; + + template + struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> + { + template + static constexpr _ToDur + __cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::rep __to_rep; + return _ToDur(static_cast<__to_rep>( + static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); + } + }; + + template + struct __is_duration + : std::false_type + { }; + + template + struct __is_duration> + : std::true_type + { }; + + /// duration_cast + template + constexpr typename enable_if<__is_duration<_ToDur>::value, + _ToDur>::type + duration_cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::period __to_period; + typedef typename _ToDur::rep __to_rep; + typedef ratio_divide<_Period, __to_period> __cf; + typedef typename common_type<__to_rep, _Rep, intmax_t>::type + __cr; + typedef __duration_cast_impl<_ToDur, __cf, __cr, + __cf::num == 1, __cf::den == 1> __dc; + return __dc::__cast(__d); + } + + /// treat_as_floating_point + template + struct treat_as_floating_point + : is_floating_point<_Rep> + { }; + + /// duration_values + template + struct duration_values + { + static constexpr _Rep + zero() + { return _Rep(0); } + + static constexpr _Rep + max() + { return numeric_limits<_Rep>::max(); } + + static constexpr _Rep + min() + { return numeric_limits<_Rep>::lowest(); } + }; + + template + struct __is_ratio + : std::false_type + { }; + + template + struct __is_ratio> + : std::true_type + { }; + + /// duration + template + struct duration + { + typedef _Rep rep; + typedef _Period period; + + static_assert(!__is_duration<_Rep>::value, "rep cannot be a duration"); + static_assert(__is_ratio<_Period>::value, + "period must be a specialization of ratio"); + static_assert(_Period::num > 0, "period must be positive"); + + // 20.11.5.1 construction / copy / destroy + constexpr duration() = default; + + // NB: Make constexpr implicit. This cannot be explicitly + // constexpr, as any UDT that is not a literal type with a + // constexpr copy constructor will be ill-formed. + duration(const duration&) = default; + + template::value + && (treat_as_floating_point::value + || !treat_as_floating_point<_Rep2>::value)>::type> + constexpr explicit duration(const _Rep2& __rep) + : __r(static_cast(__rep)) { } + + template::value + || (ratio_divide<_Period2, period>::den == 1 + && !treat_as_floating_point<_Rep2>::value)>::type> + constexpr duration(const duration<_Rep2, _Period2>& __d) + : __r(duration_cast(__d).count()) { } + + ~duration() = default; + duration& operator=(const duration&) = default; + + // 20.11.5.2 observer + constexpr rep + count() const + { return __r; } + + // 20.11.5.3 arithmetic + constexpr duration + operator+() const + { return *this; } + + constexpr duration + operator-() const + { return duration(-__r); } + + duration& + operator++() + { + ++__r; + return *this; + } + + duration + operator++(int) + { return duration(__r++); } + + duration& + operator--() + { + --__r; + return *this; + } + + duration + operator--(int) + { return duration(__r--); } + + duration& + operator+=(const duration& __d) + { + __r += __d.count(); + return *this; + } + + duration& + operator-=(const duration& __d) + { + __r -= __d.count(); + return *this; + } + + duration& + operator*=(const rep& __rhs) + { + __r *= __rhs; + return *this; + } + + duration& + operator/=(const rep& __rhs) + { + __r /= __rhs; + return *this; + } + + // DR 934. + template + typename enable_if::value, + duration&>::type + operator%=(const rep& __rhs) + { + __r %= __rhs; + return *this; + } + + template + typename enable_if::value, + duration&>::type + operator%=(const duration& __d) + { + __r %= __d.count(); + return *this; + } + + // 20.11.5.4 special values + static constexpr duration + zero() + { return duration(duration_values::zero()); } + + static constexpr duration + min() + { return duration(duration_values::min()); } + + static constexpr duration + max() + { return duration(duration_values::max()); } + + private: + rep __r; + }; + + template + constexpr typename common_type, + duration<_Rep2, _Period2>>::type + operator+(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __cd; + return __cd(__cd(__lhs).count() + __cd(__rhs).count()); + } + + template + constexpr typename common_type, + duration<_Rep2, _Period2>>::type + operator-(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __cd; + return __cd(__cd(__lhs).count() - __cd(__rhs).count()); + } + + template::type>::value> + struct __common_rep_type { }; + + template + struct __common_rep_type<_Rep1, _Rep2, true> + { typedef typename common_type<_Rep1, _Rep2>::type type; }; + + template + constexpr + duration::type, _Period> + operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) + { + typedef duration::type, _Period> + __cd; + return __cd(__cd(__d).count() * __s); + } + + template + constexpr + duration::type, _Period> + operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) + { return __d * __s; } + + template + constexpr duration::value, _Rep2>::type>::type, _Period> + operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) + { + typedef duration::type, _Period> + __cd; + return __cd(__cd(__d).count() / __s); + } + + template + constexpr typename common_type<_Rep1, _Rep2>::type + operator/(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __cd; + return __cd(__lhs).count() / __cd(__rhs).count(); + } + + // DR 934. + template + constexpr duration::value, _Rep2>::type>::type, _Period> + operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) + { + typedef duration::type, _Period> + __cd; + return __cd(__cd(__d).count() % __s); + } + + template + constexpr typename common_type, + duration<_Rep2, _Period2>>::type + operator%(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __cd; + return __cd(__cd(__lhs).count() % __cd(__rhs).count()); + } + + // comparisons + template + constexpr bool + operator==(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __ct; + return __ct(__lhs).count() == __ct(__rhs).count(); + } + + template + constexpr bool + operator<(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __ct; + return __ct(__lhs).count() < __ct(__rhs).count(); + } + + template + constexpr bool + operator!=(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { return !(__lhs == __rhs); } + + template + constexpr bool + operator<=(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { return !(__rhs < __lhs); } + + template + constexpr bool + operator>(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { return __rhs < __lhs; } + + template + constexpr bool + operator>=(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { return !(__lhs < __rhs); } + + /// nanoseconds + typedef duration nanoseconds; + + /// microseconds + typedef duration microseconds; + + /// milliseconds + typedef duration milliseconds; + + /// seconds + typedef duration seconds; + + /// minutes + typedef duration> minutes; + + /// hours + typedef duration> hours; + + /// time_point + template + struct time_point + { + typedef _Clock clock; + typedef _Dur duration; + typedef typename duration::rep rep; + typedef typename duration::period period; + + constexpr time_point() : __d(duration::zero()) + { } + + constexpr explicit time_point(const duration& __dur) + : __d(__dur) + { } + + // conversions + template + constexpr time_point(const time_point& __t) + : __d(__t.time_since_epoch()) + { } + + // observer + constexpr duration + time_since_epoch() const + { return __d; } + + // arithmetic + time_point& + operator+=(const duration& __dur) + { + __d += __dur; + return *this; + } + + time_point& + operator-=(const duration& __dur) + { + __d -= __dur; + return *this; + } + + // special values + static constexpr time_point + min() + { return time_point(duration::min()); } + + static constexpr time_point + max() + { return time_point(duration::max()); } + + private: + duration __d; + }; + + /// time_point_cast + template + constexpr typename enable_if<__is_duration<_ToDur>::value, + time_point<_Clock, _ToDur>>::type + time_point_cast(const time_point<_Clock, _Dur>& __t) + { + typedef time_point<_Clock, _ToDur> __time_point; + return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); + } + + template + constexpr time_point<_Clock, + typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> + operator+(const time_point<_Clock, _Dur1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<_Dur1,__dur2>::type __ct; + typedef time_point<_Clock, __ct> __time_point; + return __time_point(__lhs.time_since_epoch() + __rhs); + } + + template + constexpr time_point<_Clock, + typename common_type, _Dur2>::type> + operator+(const duration<_Rep1, _Period1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef typename common_type<__dur1,_Dur2>::type __ct; + typedef time_point<_Clock, __ct> __time_point; + return __time_point(__rhs.time_since_epoch() + __lhs); + } + + template + constexpr time_point<_Clock, + typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> + operator-(const time_point<_Clock, _Dur1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<_Dur1,__dur2>::type __ct; + typedef time_point<_Clock, __ct> __time_point; + return __time_point(__lhs.time_since_epoch() -__rhs); + } + + template + constexpr typename common_type<_Dur1, _Dur2>::type + operator-(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } + + template + constexpr bool + operator==(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } + + template + constexpr bool + operator!=(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return !(__lhs == __rhs); } + + template + constexpr bool + operator<(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } + + template + constexpr bool + operator<=(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return !(__rhs < __lhs); } + + template + constexpr bool + operator>(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return __rhs < __lhs; } + + template + constexpr bool + operator>=(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return !(__lhs < __rhs); } + + + // Clocks. + + // Why nanosecond resolution as the default? + // Why have std::system_clock always count in the higest + // resolution (ie nanoseconds), even if on some OSes the low 3 + // or 9 decimal digits will be always zero? This allows later + // implementations to change the system_clock::now() + // implementation any time to provide better resolution without + // changing function signature or units. + + // To support the (forward) evolution of the library's defined + // clocks, wrap inside inline namespace so that the current + // defintions of system_clock, steady_clock, and + // high_resolution_clock types are uniquely mangled. This way, new + // code can use the latests clocks, while the library can contain + // compatibility definitions for previous versions. At some + // point, when these clocks settle down, the inlined namespaces + // can be removed. XXX GLIBCXX_ABI Deprecated + inline namespace _V2 { + + /** + * @brief System clock. + * + * Time returned represents wall time from the system-wide clock. + */ + struct system_clock + { + typedef chrono::nanoseconds duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + + static_assert(system_clock::duration::min() + < system_clock::duration::zero(), + "a clock's minimum duration cannot be less than its epoch"); + + static constexpr bool is_steady = false; + + static time_point + now() noexcept; + + // Map to C API + static std::time_t + to_time_t(const time_point& __t) noexcept + { + return std::time_t(duration_cast + (__t.time_since_epoch()).count()); + } + + static time_point + from_time_t(std::time_t __t) noexcept + { + typedef chrono::time_point __from; + return time_point_cast + (__from(chrono::seconds(__t))); + } + }; + + + /** + * @brief Monotonic clock + * + * Time returned has the property of only increasing at a uniform rate. + */ + struct steady_clock + { + typedef chrono::nanoseconds duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + + static constexpr bool is_steady = true; + + static time_point + now() noexcept; + }; + + + /** + * @brief Highest-resolution clock + * + * This is the clock "with the shortest tick period." Alias to + * std::system_clock until higher-than-nanosecond definitions + * become feasible. + */ + using high_resolution_clock = system_clock; + + } // end inline namespace _V2 + + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace chrono + + // @} group chrono +} // namespace + +#endif //_GLIBCXX_USE_C99_STDINT_TR1 + +#endif // C++11 + +#endif //_GLIBCXX_CHRONO diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cinttypes b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cinttypes new file mode 100644 index 0000000..a8c740c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cinttypes @@ -0,0 +1,81 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cinttypes + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CINTTYPES +#define _GLIBCXX_CINTTYPES 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include + +// For 27.9.2/3 (see C99, Note 184) +#if _GLIBCXX_HAVE_INTTYPES_H +# ifndef __STDC_FORMAT_MACROS +# define _UNDEF__STDC_FORMAT_MACROS +# define __STDC_FORMAT_MACROS +# endif +# include +# ifdef _UNDEF__STDC_FORMAT_MACROS +# undef __STDC_FORMAT_MACROS +# undef _UNDEF__STDC_FORMAT_MACROS +# endif +#endif + +#ifdef _GLIBCXX_USE_C99_INTTYPES_TR1 + +namespace std +{ + // types + using ::imaxdiv_t; + + // functions + using ::imaxabs; + using ::imaxdiv; + + // GCC does not support extended integer types + // intmax_t abs(intmax_t) + // imaxdiv_t div(intmax_t, intmax_t) + + using ::strtoimax; + using ::strtoumax; + +#if defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 + using ::wcstoimax; + using ::wcstoumax; +#endif +} // namespace std + +#endif // _GLIBCXX_USE_C99_INTTYPES_TR1 + +#endif // C++11 + +#endif // _GLIBCXX_CINTTYPES diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ciso646 b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ciso646 new file mode 100644 index 0000000..7dbb3f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ciso646 @@ -0,0 +1,33 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ciso646 + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c iso646.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/climits b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/climits new file mode 100644 index 0000000..dca5919 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/climits @@ -0,0 +1,58 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/climits + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c limits.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 18.2.2 Implementation properties: C library +// + +#pragma GCC system_header + +#include + +#ifndef _GLIBCXX_CLIMITS +#define _GLIBCXX_CLIMITS 1 + +#ifndef LLONG_MIN +#define LLONG_MIN (-__LONG_LONG_MAX__ - 1) +#endif + +#ifndef LLONG_MAX +#define LLONG_MAX __LONG_LONG_MAX__ +#endif + +#ifndef ULLONG_MAX +#define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1) +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/clocale b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/clocale new file mode 100644 index 0000000..eb32980 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/clocale @@ -0,0 +1,58 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file clocale + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c locale.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 18.2.2 Implementation properties: C library +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CLOCALE +#define _GLIBCXX_CLOCALE 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef setlocale +#undef localeconv + +namespace std +{ + using ::lconv; + using ::setlocale; + using ::localeconv; +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cmath b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cmath new file mode 100644 index 0000000..b438585 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cmath @@ -0,0 +1,1685 @@ +// -*- C++ -*- C forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cmath + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c math.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 26.5 C library +// + +#pragma GCC system_header + +#include +#include +#include +#include + +#ifndef _GLIBCXX_CMATH +#define _GLIBCXX_CMATH 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef abs +#undef div +#undef acos +#undef asin +#undef atan +#undef atan2 +#undef ceil +#undef cos +#undef cosh +#undef exp +#undef fabs +#undef floor +#undef fmod +#undef frexp +#undef ldexp +#undef log +#undef log10 +#undef modf +#undef pow +#undef sin +#undef sinh +#undef sqrt +#undef tan +#undef tanh + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR double + abs(double __x) + { return __builtin_fabs(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + abs(float __x) + { return __builtin_fabsf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + abs(long double __x) + { return __builtin_fabsl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + abs(_Tp __x) + { return __builtin_fabs(__x); } + + using ::acos; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + acos(float __x) + { return __builtin_acosf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + acos(long double __x) + { return __builtin_acosl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acos(_Tp __x) + { return __builtin_acos(__x); } + + using ::asin; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + asin(float __x) + { return __builtin_asinf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + asin(long double __x) + { return __builtin_asinl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asin(_Tp __x) + { return __builtin_asin(__x); } + + using ::atan; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + atan(float __x) + { return __builtin_atanf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + atan(long double __x) + { return __builtin_atanl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atan(_Tp __x) + { return __builtin_atan(__x); } + + using ::atan2; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + atan2(float __y, float __x) + { return __builtin_atan2f(__y, __x); } + + inline _GLIBCXX_CONSTEXPR long double + atan2(long double __y, long double __x) + { return __builtin_atan2l(__y, __x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + atan2(_Tp __y, _Up __x) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return atan2(__type(__y), __type(__x)); + } + + using ::ceil; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + ceil(float __x) + { return __builtin_ceilf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + ceil(long double __x) + { return __builtin_ceill(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ceil(_Tp __x) + { return __builtin_ceil(__x); } + + using ::cos; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + cos(float __x) + { return __builtin_cosf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + cos(long double __x) + { return __builtin_cosl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cos(_Tp __x) + { return __builtin_cos(__x); } + + using ::cosh; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + cosh(float __x) + { return __builtin_coshf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + cosh(long double __x) + { return __builtin_coshl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cosh(_Tp __x) + { return __builtin_cosh(__x); } + + using ::exp; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + exp(float __x) + { return __builtin_expf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + exp(long double __x) + { return __builtin_expl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp(_Tp __x) + { return __builtin_exp(__x); } + + using ::fabs; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + fabs(float __x) + { return __builtin_fabsf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + fabs(long double __x) + { return __builtin_fabsl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + fabs(_Tp __x) + { return __builtin_fabs(__x); } + + using ::floor; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + floor(float __x) + { return __builtin_floorf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + floor(long double __x) + { return __builtin_floorl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + floor(_Tp __x) + { return __builtin_floor(__x); } + + using ::fmod; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + fmod(float __x, float __y) + { return __builtin_fmodf(__x, __y); } + + inline _GLIBCXX_CONSTEXPR long double + fmod(long double __x, long double __y) + { return __builtin_fmodl(__x, __y); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmod(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmod(__type(__x), __type(__y)); + } + + using ::frexp; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline float + frexp(float __x, int* __exp) + { return __builtin_frexpf(__x, __exp); } + + inline long double + frexp(long double __x, int* __exp) + { return __builtin_frexpl(__x, __exp); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + frexp(_Tp __x, int* __exp) + { return __builtin_frexp(__x, __exp); } + + using ::ldexp; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + ldexp(float __x, int __exp) + { return __builtin_ldexpf(__x, __exp); } + + inline _GLIBCXX_CONSTEXPR long double + ldexp(long double __x, int __exp) + { return __builtin_ldexpl(__x, __exp); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ldexp(_Tp __x, int __exp) + { return __builtin_ldexp(__x, __exp); } + + using ::log; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + log(float __x) + { return __builtin_logf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + log(long double __x) + { return __builtin_logl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log(_Tp __x) + { return __builtin_log(__x); } + + using ::log10; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + log10(float __x) + { return __builtin_log10f(__x); } + + inline _GLIBCXX_CONSTEXPR long double + log10(long double __x) + { return __builtin_log10l(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log10(_Tp __x) + { return __builtin_log10(__x); } + + using ::modf; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline float + modf(float __x, float* __iptr) + { return __builtin_modff(__x, __iptr); } + + inline long double + modf(long double __x, long double* __iptr) + { return __builtin_modfl(__x, __iptr); } +#endif + + using ::pow; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + pow(float __x, float __y) + { return __builtin_powf(__x, __y); } + + inline _GLIBCXX_CONSTEXPR long double + pow(long double __x, long double __y) + { return __builtin_powl(__x, __y); } + +#if __cplusplus < 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 550. What should the return type of pow(float,int) be? + inline double + pow(double __x, int __i) + { return __builtin_powi(__x, __i); } + + inline float + pow(float __x, int __n) + { return __builtin_powif(__x, __n); } + + inline long double + pow(long double __x, int __n) + { return __builtin_powil(__x, __n); } +#endif +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + pow(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return pow(__type(__x), __type(__y)); + } + + using ::sin; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + sin(float __x) + { return __builtin_sinf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + sin(long double __x) + { return __builtin_sinl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sin(_Tp __x) + { return __builtin_sin(__x); } + + using ::sinh; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + sinh(float __x) + { return __builtin_sinhf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + sinh(long double __x) + { return __builtin_sinhl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sinh(_Tp __x) + { return __builtin_sinh(__x); } + + using ::sqrt; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + sqrt(float __x) + { return __builtin_sqrtf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + sqrt(long double __x) + { return __builtin_sqrtl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sqrt(_Tp __x) + { return __builtin_sqrt(__x); } + + using ::tan; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + tan(float __x) + { return __builtin_tanf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + tan(long double __x) + { return __builtin_tanl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tan(_Tp __x) + { return __builtin_tan(__x); } + + using ::tanh; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + tanh(float __x) + { return __builtin_tanhf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + tanh(long double __x) + { return __builtin_tanhl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tanh(_Tp __x) + { return __builtin_tanh(__x); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if _GLIBCXX_USE_C99_MATH +#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC + +// These are possible macros imported from C99-land. +#undef fpclassify +#undef isfinite +#undef isinf +#undef isnan +#undef isnormal +#undef signbit +#undef isgreater +#undef isgreaterequal +#undef isless +#undef islessequal +#undef islessgreater +#undef isunordered + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#if __cplusplus >= 201103L + constexpr int + fpclassify(float __x) + { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, + FP_SUBNORMAL, FP_ZERO, __x); } + + constexpr int + fpclassify(double __x) + { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, + FP_SUBNORMAL, FP_ZERO, __x); } + + constexpr int + fpclassify(long double __x) + { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, + FP_SUBNORMAL, FP_ZERO, __x); } + + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + fpclassify(_Tp __x) + { return __x != 0 ? FP_NORMAL : FP_ZERO; } + + 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)); + } + +#else + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + fpclassify(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, + FP_SUBNORMAL, FP_ZERO, __type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isfinite(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isfinite(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isinf(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isinf(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isnan(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isnan(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isnormal(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isnormal(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + signbit(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_signbit(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isgreater(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isgreater(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isgreaterequal(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isgreaterequal(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isless(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isless(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + islessequal(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_islessequal(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + islessgreater(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_islessgreater(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isunordered(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isunordered(__type(__f1), __type(__f2)); + } + +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */ +#endif + +#if __cplusplus >= 201103L + +#ifdef _GLIBCXX_USE_C99_MATH_TR1 + +#undef acosh +#undef acoshf +#undef acoshl +#undef asinh +#undef asinhf +#undef asinhl +#undef atanh +#undef atanhf +#undef atanhl +#undef cbrt +#undef cbrtf +#undef cbrtl +#undef copysign +#undef copysignf +#undef copysignl +#undef erf +#undef erff +#undef erfl +#undef erfc +#undef erfcf +#undef erfcl +#undef exp2 +#undef exp2f +#undef exp2l +#undef expm1 +#undef expm1f +#undef expm1l +#undef fdim +#undef fdimf +#undef fdiml +#undef fma +#undef fmaf +#undef fmal +#undef fmax +#undef fmaxf +#undef fmaxl +#undef fmin +#undef fminf +#undef fminl +#undef hypot +#undef hypotf +#undef hypotl +#undef ilogb +#undef ilogbf +#undef ilogbl +#undef lgamma +#undef lgammaf +#undef lgammal +#undef llrint +#undef llrintf +#undef llrintl +#undef llround +#undef llroundf +#undef llroundl +#undef log1p +#undef log1pf +#undef log1pl +#undef log2 +#undef log2f +#undef log2l +#undef logb +#undef logbf +#undef logbl +#undef lrint +#undef lrintf +#undef lrintl +#undef lround +#undef lroundf +#undef lroundl +#undef nan +#undef nanf +#undef nanl +#undef nearbyint +#undef nearbyintf +#undef nearbyintl +#undef nextafter +#undef nextafterf +#undef nextafterl +#undef nexttoward +#undef nexttowardf +#undef nexttowardl +#undef remainder +#undef remainderf +#undef remainderl +#undef remquo +#undef remquof +#undef remquol +#undef rint +#undef rintf +#undef rintl +#undef round +#undef roundf +#undef roundl +#undef scalbln +#undef scalblnf +#undef scalblnl +#undef scalbn +#undef scalbnf +#undef scalbnl +#undef tgamma +#undef tgammaf +#undef tgammal +#undef trunc +#undef truncf +#undef truncl + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // types + using ::double_t; + using ::float_t; + + // functions + using ::acosh; + using ::acoshf; + using ::acoshl; + + using ::asinh; + using ::asinhf; + using ::asinhl; + + using ::atanh; + using ::atanhf; + using ::atanhl; + + using ::cbrt; + using ::cbrtf; + using ::cbrtl; + + using ::copysign; + using ::copysignf; + using ::copysignl; + + using ::erf; + using ::erff; + using ::erfl; + + using ::erfc; + using ::erfcf; + using ::erfcl; + + using ::exp2; + using ::exp2f; + using ::exp2l; + + using ::expm1; + using ::expm1f; + using ::expm1l; + + using ::fdim; + using ::fdimf; + using ::fdiml; + + using ::fma; + using ::fmaf; + using ::fmal; + + using ::fmax; + using ::fmaxf; + using ::fmaxl; + + using ::fmin; + using ::fminf; + using ::fminl; + + using ::hypot; + using ::hypotf; + using ::hypotl; + + using ::ilogb; + using ::ilogbf; + using ::ilogbl; + + using ::lgamma; + using ::lgammaf; + using ::lgammal; + + 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; + + /// Additional overloads. + 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); } + + // DR 568. + 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); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // _GLIBCXX_USE_C99_MATH_TR1 + +#endif // C++11 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/complex b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/complex new file mode 100644 index 0000000..409f291 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/complex @@ -0,0 +1,1933 @@ +// The template and inlines for the -*- C++ -*- complex number classes. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/complex + * This is a Standard C++ Library header. + */ + +// +// ISO C++ 14882: 26.2 Complex Numbers +// Note: this is not a conforming implementation. +// Initially implemented by Ulrich Drepper +// Improved by Gabriel Dos Reis +// + +#ifndef _GLIBCXX_COMPLEX +#define _GLIBCXX_COMPLEX 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include + +// Get rid of a macro possibly defined in +#undef complex + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup complex_numbers Complex Numbers + * @ingroup numerics + * + * Classes and functions for complex numbers. + * @{ + */ + + // Forward declarations. + template class complex; + template<> class complex; + template<> class complex; + template<> class complex; + + /// Return magnitude of @a z. + template _Tp abs(const complex<_Tp>&); + /// Return phase angle of @a z. + template _Tp arg(const complex<_Tp>&); + /// Return @a z magnitude squared. + template _Tp norm(const complex<_Tp>&); + + /// Return complex conjugate of @a z. + template complex<_Tp> conj(const complex<_Tp>&); + /// Return complex with magnitude @a rho and angle @a theta. + template complex<_Tp> polar(const _Tp&, const _Tp& = 0); + + // Transcendentals: + /// Return complex cosine of @a z. + template complex<_Tp> cos(const complex<_Tp>&); + /// Return complex hyperbolic cosine of @a z. + template complex<_Tp> cosh(const complex<_Tp>&); + /// Return complex base e exponential of @a z. + template complex<_Tp> exp(const complex<_Tp>&); + /// Return complex natural logarithm of @a z. + template complex<_Tp> log(const complex<_Tp>&); + /// Return complex base 10 logarithm of @a z. + template complex<_Tp> log10(const complex<_Tp>&); +#if __cplusplus < 201103L + // DR 844. + /// Return @a x to the @a y'th power. + template complex<_Tp> pow(const complex<_Tp>&, int); +#endif + /// Return @a x to the @a y'th power. + template complex<_Tp> pow(const complex<_Tp>&, const _Tp&); + /// Return @a x to the @a y'th power. + template complex<_Tp> pow(const complex<_Tp>&, + const complex<_Tp>&); + /// Return @a x to the @a y'th power. + template complex<_Tp> pow(const _Tp&, const complex<_Tp>&); + /// Return complex sine of @a z. + template complex<_Tp> sin(const complex<_Tp>&); + /// Return complex hyperbolic sine of @a z. + template complex<_Tp> sinh(const complex<_Tp>&); + /// Return complex square root of @a z. + template complex<_Tp> sqrt(const complex<_Tp>&); + /// Return complex tangent of @a z. + template complex<_Tp> tan(const complex<_Tp>&); + /// Return complex hyperbolic tangent of @a z. + template complex<_Tp> tanh(const complex<_Tp>&); + + + // 26.2.2 Primary template class complex + /** + * Template to represent complex numbers. + * + * Specializations for float, double, and long double are part of the + * library. Results with any other type are not guaranteed. + * + * @param Tp Type of real and imaginary values. + */ + template + struct complex + { + /// Value typedef. + typedef _Tp value_type; + + /// Default constructor. First parameter is x, second parameter is y. + /// Unspecified parameters default to 0. + _GLIBCXX_CONSTEXPR complex(const _Tp& __r = _Tp(), const _Tp& __i = _Tp()) + : _M_real(__r), _M_imag(__i) { } + + // Lets the compiler synthesize the copy constructor + // complex (const complex<_Tp>&); + /// Copy constructor. + template + _GLIBCXX_CONSTEXPR complex(const complex<_Up>& __z) + : _M_real(__z.real()), _M_imag(__z.imag()) { } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + _GLIBCXX_ABI_TAG_CXX11 + constexpr _Tp + real() { return _M_real; } + + _GLIBCXX_ABI_TAG_CXX11 + constexpr _Tp + imag() { return _M_imag; } +#else + /// Return real part of complex number. + _Tp& + real() { return _M_real; } + + /// Return real part of complex number. + const _Tp& + real() const { return _M_real; } + + /// Return imaginary part of complex number. + _Tp& + imag() { return _M_imag; } + + /// Return imaginary part of complex number. + const _Tp& + imag() const { return _M_imag; } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + void + real(_Tp __val) { _M_real = __val; } + + void + imag(_Tp __val) { _M_imag = __val; } + + /// Assign this complex number to scalar @a t. + complex<_Tp>& operator=(const _Tp&); + + /// Add @a t to this complex number. + // 26.2.5/1 + complex<_Tp>& + operator+=(const _Tp& __t) + { + _M_real += __t; + return *this; + } + + /// Subtract @a t from this complex number. + // 26.2.5/3 + complex<_Tp>& + operator-=(const _Tp& __t) + { + _M_real -= __t; + return *this; + } + + /// Multiply this complex number by @a t. + complex<_Tp>& operator*=(const _Tp&); + /// Divide this complex number by @a t. + complex<_Tp>& operator/=(const _Tp&); + + // Lets the compiler synthesize the + // copy and assignment operator + // complex<_Tp>& operator= (const complex<_Tp>&); + /// Assign this complex number to complex @a z. + template + complex<_Tp>& operator=(const complex<_Up>&); + /// Add @a z to this complex number. + template + complex<_Tp>& operator+=(const complex<_Up>&); + /// Subtract @a z from this complex number. + template + complex<_Tp>& operator-=(const complex<_Up>&); + /// Multiply this complex number by @a z. + template + complex<_Tp>& operator*=(const complex<_Up>&); + /// Divide this complex number by @a z. + template + complex<_Tp>& operator/=(const complex<_Up>&); + + _GLIBCXX_USE_CONSTEXPR complex __rep() const + { return *this; } + + private: + _Tp _M_real; + _Tp _M_imag; + }; + + template + complex<_Tp>& + complex<_Tp>::operator=(const _Tp& __t) + { + _M_real = __t; + _M_imag = _Tp(); + return *this; + } + + // 26.2.5/5 + template + complex<_Tp>& + complex<_Tp>::operator*=(const _Tp& __t) + { + _M_real *= __t; + _M_imag *= __t; + return *this; + } + + // 26.2.5/7 + template + complex<_Tp>& + complex<_Tp>::operator/=(const _Tp& __t) + { + _M_real /= __t; + _M_imag /= __t; + return *this; + } + + template + template + complex<_Tp>& + complex<_Tp>::operator=(const complex<_Up>& __z) + { + _M_real = __z.real(); + _M_imag = __z.imag(); + return *this; + } + + // 26.2.5/9 + template + template + complex<_Tp>& + complex<_Tp>::operator+=(const complex<_Up>& __z) + { + _M_real += __z.real(); + _M_imag += __z.imag(); + return *this; + } + + // 26.2.5/11 + template + template + complex<_Tp>& + complex<_Tp>::operator-=(const complex<_Up>& __z) + { + _M_real -= __z.real(); + _M_imag -= __z.imag(); + return *this; + } + + // 26.2.5/13 + // XXX: This is a grammar school implementation. + template + template + complex<_Tp>& + complex<_Tp>::operator*=(const complex<_Up>& __z) + { + const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag(); + _M_imag = _M_real * __z.imag() + _M_imag * __z.real(); + _M_real = __r; + return *this; + } + + // 26.2.5/15 + // XXX: This is a grammar school implementation. + template + template + complex<_Tp>& + complex<_Tp>::operator/=(const complex<_Up>& __z) + { + const _Tp __r = _M_real * __z.real() + _M_imag * __z.imag(); + const _Tp __n = std::norm(__z); + _M_imag = (_M_imag * __z.real() - _M_real * __z.imag()) / __n; + _M_real = __r / __n; + return *this; + } + + // Operators: + //@{ + /// Return new complex value @a x plus @a y. + template + inline complex<_Tp> + operator+(const complex<_Tp>& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r += __y; + return __r; + } + + template + inline complex<_Tp> + operator+(const complex<_Tp>& __x, const _Tp& __y) + { + complex<_Tp> __r = __x; + __r += __y; + return __r; + } + + template + inline complex<_Tp> + operator+(const _Tp& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __y; + __r += __x; + return __r; + } + //@} + + //@{ + /// Return new complex value @a x minus @a y. + template + inline complex<_Tp> + operator-(const complex<_Tp>& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r -= __y; + return __r; + } + + template + inline complex<_Tp> + operator-(const complex<_Tp>& __x, const _Tp& __y) + { + complex<_Tp> __r = __x; + __r -= __y; + return __r; + } + + template + inline complex<_Tp> + operator-(const _Tp& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r(__x, -__y.imag()); + __r -= __y.real(); + return __r; + } + //@} + + //@{ + /// Return new complex value @a x times @a y. + template + inline complex<_Tp> + operator*(const complex<_Tp>& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r *= __y; + return __r; + } + + template + inline complex<_Tp> + operator*(const complex<_Tp>& __x, const _Tp& __y) + { + complex<_Tp> __r = __x; + __r *= __y; + return __r; + } + + template + inline complex<_Tp> + operator*(const _Tp& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __y; + __r *= __x; + return __r; + } + //@} + + //@{ + /// Return new complex value @a x divided by @a y. + template + inline complex<_Tp> + operator/(const complex<_Tp>& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r /= __y; + return __r; + } + + template + inline complex<_Tp> + operator/(const complex<_Tp>& __x, const _Tp& __y) + { + complex<_Tp> __r = __x; + __r /= __y; + return __r; + } + + template + inline complex<_Tp> + operator/(const _Tp& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r /= __y; + return __r; + } + //@} + + /// Return @a x. + template + inline complex<_Tp> + operator+(const complex<_Tp>& __x) + { return __x; } + + /// Return complex negation of @a x. + template + inline complex<_Tp> + operator-(const complex<_Tp>& __x) + { return complex<_Tp>(-__x.real(), -__x.imag()); } + + //@{ + /// Return true if @a x is equal to @a y. + template + inline _GLIBCXX_CONSTEXPR bool + operator==(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __x.real() == __y.real() && __x.imag() == __y.imag(); } + + template + inline _GLIBCXX_CONSTEXPR bool + operator==(const complex<_Tp>& __x, const _Tp& __y) + { return __x.real() == __y && __x.imag() == _Tp(); } + + template + inline _GLIBCXX_CONSTEXPR bool + operator==(const _Tp& __x, const complex<_Tp>& __y) + { return __x == __y.real() && _Tp() == __y.imag(); } + //@} + + //@{ + /// Return false if @a x is equal to @a y. + template + inline _GLIBCXX_CONSTEXPR bool + operator!=(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __x.real() != __y.real() || __x.imag() != __y.imag(); } + + template + inline _GLIBCXX_CONSTEXPR bool + operator!=(const complex<_Tp>& __x, const _Tp& __y) + { return __x.real() != __y || __x.imag() != _Tp(); } + + template + inline _GLIBCXX_CONSTEXPR bool + operator!=(const _Tp& __x, const complex<_Tp>& __y) + { return __x != __y.real() || _Tp() != __y.imag(); } + //@} + + /// Extraction operator for complex values. + template + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x) + { + _Tp __re_x, __im_x; + _CharT __ch; + __is >> __ch; + if (__ch == '(') + { + __is >> __re_x >> __ch; + if (__ch == ',') + { + __is >> __im_x >> __ch; + if (__ch == ')') + __x = complex<_Tp>(__re_x, __im_x); + else + __is.setstate(ios_base::failbit); + } + else if (__ch == ')') + __x = __re_x; + else + __is.setstate(ios_base::failbit); + } + else + { + __is.putback(__ch); + __is >> __re_x; + __x = __re_x; + } + return __is; + } + + /// Insertion operator for complex values. + template + basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x) + { + basic_ostringstream<_CharT, _Traits> __s; + __s.flags(__os.flags()); + __s.imbue(__os.getloc()); + __s.precision(__os.precision()); + __s << '(' << __x.real() << ',' << __x.imag() << ')'; + return __os << __s.str(); + } + + // Values +#if __cplusplus >= 201103L + template + constexpr _Tp + real(const complex<_Tp>& __z) + { return __z.real(); } + + template + constexpr _Tp + imag(const complex<_Tp>& __z) + { return __z.imag(); } +#else + template + inline _Tp& + real(complex<_Tp>& __z) + { return __z.real(); } + + template + inline const _Tp& + real(const complex<_Tp>& __z) + { return __z.real(); } + + template + inline _Tp& + imag(complex<_Tp>& __z) + { return __z.imag(); } + + template + inline const _Tp& + imag(const complex<_Tp>& __z) + { return __z.imag(); } +#endif + + // 26.2.7/3 abs(__z): Returns the magnitude of __z. + template + inline _Tp + __complex_abs(const complex<_Tp>& __z) + { + _Tp __x = __z.real(); + _Tp __y = __z.imag(); + const _Tp __s = std::max(abs(__x), abs(__y)); + if (__s == _Tp()) // well ... + return __s; + __x /= __s; + __y /= __s; + return __s * sqrt(__x * __x + __y * __y); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline float + __complex_abs(__complex__ float __z) { return __builtin_cabsf(__z); } + + inline double + __complex_abs(__complex__ double __z) { return __builtin_cabs(__z); } + + inline long double + __complex_abs(const __complex__ long double& __z) + { return __builtin_cabsl(__z); } + + template + inline _Tp + abs(const complex<_Tp>& __z) { return __complex_abs(__z.__rep()); } +#else + template + inline _Tp + abs(const complex<_Tp>& __z) { return __complex_abs(__z); } +#endif + + + // 26.2.7/4: arg(__z): Returns the phase angle of __z. + template + inline _Tp + __complex_arg(const complex<_Tp>& __z) + { return atan2(__z.imag(), __z.real()); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline float + __complex_arg(__complex__ float __z) { return __builtin_cargf(__z); } + + inline double + __complex_arg(__complex__ double __z) { return __builtin_carg(__z); } + + inline long double + __complex_arg(const __complex__ long double& __z) + { return __builtin_cargl(__z); } + + template + inline _Tp + arg(const complex<_Tp>& __z) { return __complex_arg(__z.__rep()); } +#else + template + inline _Tp + arg(const complex<_Tp>& __z) { return __complex_arg(__z); } +#endif + + // 26.2.7/5: norm(__z) returns the squared magnitude of __z. + // As defined, norm() is -not- a norm is the common mathematical + // sens used in numerics. The helper class _Norm_helper<> tries to + // distinguish between builtin floating point and the rest, so as + // to deliver an answer as close as possible to the real value. + template + struct _Norm_helper + { + template + static inline _Tp _S_do_it(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return __x * __x + __y * __y; + } + }; + + template<> + struct _Norm_helper + { + template + static inline _Tp _S_do_it(const complex<_Tp>& __z) + { + _Tp __res = std::abs(__z); + return __res * __res; + } + }; + + template + inline _Tp + norm(const complex<_Tp>& __z) + { + return _Norm_helper<__is_floating<_Tp>::__value + && !_GLIBCXX_FAST_MATH>::_S_do_it(__z); + } + + template + inline complex<_Tp> + polar(const _Tp& __rho, const _Tp& __theta) + { return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta)); } + + template + inline complex<_Tp> + conj(const complex<_Tp>& __z) + { return complex<_Tp>(__z.real(), -__z.imag()); } + + // Transcendentals + + // 26.2.8/1 cos(__z): Returns the cosine of __z. + template + inline complex<_Tp> + __complex_cos(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return complex<_Tp>(cos(__x) * cosh(__y), -sin(__x) * sinh(__y)); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_cos(__complex__ float __z) { return __builtin_ccosf(__z); } + + inline __complex__ double + __complex_cos(__complex__ double __z) { return __builtin_ccos(__z); } + + inline __complex__ long double + __complex_cos(const __complex__ long double& __z) + { return __builtin_ccosl(__z); } + + template + inline complex<_Tp> + cos(const complex<_Tp>& __z) { return __complex_cos(__z.__rep()); } +#else + template + inline complex<_Tp> + cos(const complex<_Tp>& __z) { return __complex_cos(__z); } +#endif + + // 26.2.8/2 cosh(__z): Returns the hyperbolic cosine of __z. + template + inline complex<_Tp> + __complex_cosh(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return complex<_Tp>(cosh(__x) * cos(__y), sinh(__x) * sin(__y)); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_cosh(__complex__ float __z) { return __builtin_ccoshf(__z); } + + inline __complex__ double + __complex_cosh(__complex__ double __z) { return __builtin_ccosh(__z); } + + inline __complex__ long double + __complex_cosh(const __complex__ long double& __z) + { return __builtin_ccoshl(__z); } + + template + inline complex<_Tp> + cosh(const complex<_Tp>& __z) { return __complex_cosh(__z.__rep()); } +#else + template + inline complex<_Tp> + cosh(const complex<_Tp>& __z) { return __complex_cosh(__z); } +#endif + + // 26.2.8/3 exp(__z): Returns the complex base e exponential of x + template + inline complex<_Tp> + __complex_exp(const complex<_Tp>& __z) + { return std::polar(exp(__z.real()), __z.imag()); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_exp(__complex__ float __z) { return __builtin_cexpf(__z); } + + inline __complex__ double + __complex_exp(__complex__ double __z) { return __builtin_cexp(__z); } + + inline __complex__ long double + __complex_exp(const __complex__ long double& __z) + { return __builtin_cexpl(__z); } + + template + inline complex<_Tp> + exp(const complex<_Tp>& __z) { return __complex_exp(__z.__rep()); } +#else + template + inline complex<_Tp> + exp(const complex<_Tp>& __z) { return __complex_exp(__z); } +#endif + + // 26.2.8/5 log(__z): Returns the natural complex logarithm of __z. + // The branch cut is along the negative axis. + template + inline complex<_Tp> + __complex_log(const complex<_Tp>& __z) + { return complex<_Tp>(log(std::abs(__z)), std::arg(__z)); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_log(__complex__ float __z) { return __builtin_clogf(__z); } + + inline __complex__ double + __complex_log(__complex__ double __z) { return __builtin_clog(__z); } + + inline __complex__ long double + __complex_log(const __complex__ long double& __z) + { return __builtin_clogl(__z); } + + template + inline complex<_Tp> + log(const complex<_Tp>& __z) { return __complex_log(__z.__rep()); } +#else + template + inline complex<_Tp> + log(const complex<_Tp>& __z) { return __complex_log(__z); } +#endif + + template + inline complex<_Tp> + log10(const complex<_Tp>& __z) + { return std::log(__z) / log(_Tp(10.0)); } + + // 26.2.8/10 sin(__z): Returns the sine of __z. + template + inline complex<_Tp> + __complex_sin(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return complex<_Tp>(sin(__x) * cosh(__y), cos(__x) * sinh(__y)); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_sin(__complex__ float __z) { return __builtin_csinf(__z); } + + inline __complex__ double + __complex_sin(__complex__ double __z) { return __builtin_csin(__z); } + + inline __complex__ long double + __complex_sin(const __complex__ long double& __z) + { return __builtin_csinl(__z); } + + template + inline complex<_Tp> + sin(const complex<_Tp>& __z) { return __complex_sin(__z.__rep()); } +#else + template + inline complex<_Tp> + sin(const complex<_Tp>& __z) { return __complex_sin(__z); } +#endif + + // 26.2.8/11 sinh(__z): Returns the hyperbolic sine of __z. + template + inline complex<_Tp> + __complex_sinh(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return complex<_Tp>(sinh(__x) * cos(__y), cosh(__x) * sin(__y)); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_sinh(__complex__ float __z) { return __builtin_csinhf(__z); } + + inline __complex__ double + __complex_sinh(__complex__ double __z) { return __builtin_csinh(__z); } + + inline __complex__ long double + __complex_sinh(const __complex__ long double& __z) + { return __builtin_csinhl(__z); } + + template + inline complex<_Tp> + sinh(const complex<_Tp>& __z) { return __complex_sinh(__z.__rep()); } +#else + template + inline complex<_Tp> + sinh(const complex<_Tp>& __z) { return __complex_sinh(__z); } +#endif + + // 26.2.8/13 sqrt(__z): Returns the complex square root of __z. + // The branch cut is on the negative axis. + template + complex<_Tp> + __complex_sqrt(const complex<_Tp>& __z) + { + _Tp __x = __z.real(); + _Tp __y = __z.imag(); + + if (__x == _Tp()) + { + _Tp __t = sqrt(abs(__y) / 2); + return complex<_Tp>(__t, __y < _Tp() ? -__t : __t); + } + else + { + _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x))); + _Tp __u = __t / 2; + return __x > _Tp() + ? complex<_Tp>(__u, __y / __t) + : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u); + } + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_sqrt(__complex__ float __z) { return __builtin_csqrtf(__z); } + + inline __complex__ double + __complex_sqrt(__complex__ double __z) { return __builtin_csqrt(__z); } + + inline __complex__ long double + __complex_sqrt(const __complex__ long double& __z) + { return __builtin_csqrtl(__z); } + + template + inline complex<_Tp> + sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z.__rep()); } +#else + template + inline complex<_Tp> + sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z); } +#endif + + // 26.2.8/14 tan(__z): Return the complex tangent of __z. + + template + inline complex<_Tp> + __complex_tan(const complex<_Tp>& __z) + { return std::sin(__z) / std::cos(__z); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_tan(__complex__ float __z) { return __builtin_ctanf(__z); } + + inline __complex__ double + __complex_tan(__complex__ double __z) { return __builtin_ctan(__z); } + + inline __complex__ long double + __complex_tan(const __complex__ long double& __z) + { return __builtin_ctanl(__z); } + + template + inline complex<_Tp> + tan(const complex<_Tp>& __z) { return __complex_tan(__z.__rep()); } +#else + template + inline complex<_Tp> + tan(const complex<_Tp>& __z) { return __complex_tan(__z); } +#endif + + + // 26.2.8/15 tanh(__z): Returns the hyperbolic tangent of __z. + + template + inline complex<_Tp> + __complex_tanh(const complex<_Tp>& __z) + { return std::sinh(__z) / std::cosh(__z); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_tanh(__complex__ float __z) { return __builtin_ctanhf(__z); } + + inline __complex__ double + __complex_tanh(__complex__ double __z) { return __builtin_ctanh(__z); } + + inline __complex__ long double + __complex_tanh(const __complex__ long double& __z) + { return __builtin_ctanhl(__z); } + + template + inline complex<_Tp> + tanh(const complex<_Tp>& __z) { return __complex_tanh(__z.__rep()); } +#else + template + inline complex<_Tp> + tanh(const complex<_Tp>& __z) { return __complex_tanh(__z); } +#endif + + + // 26.2.8/9 pow(__x, __y): Returns the complex power base of __x + // raised to the __y-th power. The branch + // cut is on the negative axis. +#if __cplusplus < 201103L + template + complex<_Tp> + __complex_pow_unsigned(complex<_Tp> __x, unsigned __n) + { + complex<_Tp> __y = __n % 2 ? __x : complex<_Tp>(1); + + while (__n >>= 1) + { + __x *= __x; + if (__n % 2) + __y *= __x; + } + + return __y; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 844. complex pow return type is ambiguous. + template + inline complex<_Tp> + pow(const complex<_Tp>& __z, int __n) + { + return __n < 0 + ? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -(unsigned)__n) + : std::__complex_pow_unsigned(__z, __n); + } +#endif + + template + complex<_Tp> + pow(const complex<_Tp>& __x, const _Tp& __y) + { +#ifndef _GLIBCXX_USE_C99_COMPLEX + if (__x == _Tp()) + return _Tp(); +#endif + if (__x.imag() == _Tp() && __x.real() > _Tp()) + return pow(__x.real(), __y); + + complex<_Tp> __t = std::log(__x); + return std::polar(exp(__y * __t.real()), __y * __t.imag()); + } + + template + inline complex<_Tp> + __complex_pow(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __x == _Tp() ? _Tp() : std::exp(__y * std::log(__x)); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_pow(__complex__ float __x, __complex__ float __y) + { return __builtin_cpowf(__x, __y); } + + inline __complex__ double + __complex_pow(__complex__ double __x, __complex__ double __y) + { return __builtin_cpow(__x, __y); } + + inline __complex__ long double + __complex_pow(const __complex__ long double& __x, + const __complex__ long double& __y) + { return __builtin_cpowl(__x, __y); } + + template + inline complex<_Tp> + pow(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __complex_pow(__x.__rep(), __y.__rep()); } +#else + template + inline complex<_Tp> + pow(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __complex_pow(__x, __y); } +#endif + + template + inline complex<_Tp> + pow(const _Tp& __x, const complex<_Tp>& __y) + { + return __x > _Tp() ? std::polar(pow(__x, __y.real()), + __y.imag() * log(__x)) + : std::pow(complex<_Tp>(__x), __y); + } + + /// 26.2.3 complex specializations + /// complex specialization + template<> + struct complex + { + typedef float value_type; + typedef __complex__ float _ComplexT; + + _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { } + + _GLIBCXX_CONSTEXPR complex(float __r = 0.0f, float __i = 0.0f) +#if __cplusplus >= 201103L + : _M_value{ __r, __i } { } +#else + { + __real__ _M_value = __r; + __imag__ _M_value = __i; + } +#endif + + explicit _GLIBCXX_CONSTEXPR complex(const complex&); + explicit _GLIBCXX_CONSTEXPR complex(const complex&); + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) + constexpr float + real() { return __real__ _M_value; } + + __attribute ((__abi_tag__ ("cxx11"))) + constexpr float + imag() { return __imag__ _M_value; } +#else + float& + real() { return __real__ _M_value; } + + const float& + real() const { return __real__ _M_value; } + + float& + imag() { return __imag__ _M_value; } + + const float& + imag() const { return __imag__ _M_value; } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + void + real(float __val) { __real__ _M_value = __val; } + + void + imag(float __val) { __imag__ _M_value = __val; } + + complex& + operator=(float __f) + { + _M_value = __f; + return *this; + } + + complex& + operator+=(float __f) + { + _M_value += __f; + return *this; + } + + complex& + operator-=(float __f) + { + _M_value -= __f; + return *this; + } + + complex& + operator*=(float __f) + { + _M_value *= __f; + return *this; + } + + complex& + operator/=(float __f) + { + _M_value /= __f; + return *this; + } + + // Let the compiler synthesize the copy and assignment + // operator. It always does a pretty good job. + // complex& operator=(const complex&); + + template + complex& + operator=(const complex<_Tp>& __z) + { + __real__ _M_value = __z.real(); + __imag__ _M_value = __z.imag(); + return *this; + } + + template + complex& + operator+=(const complex<_Tp>& __z) + { + __real__ _M_value += __z.real(); + __imag__ _M_value += __z.imag(); + return *this; + } + + template + complex& + operator-=(const complex<_Tp>& __z) + { + __real__ _M_value -= __z.real(); + __imag__ _M_value -= __z.imag(); + return *this; + } + + template + complex& + operator*=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value *= __t; + return *this; + } + + template + complex& + operator/=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value /= __t; + return *this; + } + + _GLIBCXX_USE_CONSTEXPR _ComplexT __rep() const { return _M_value; } + + private: + _ComplexT _M_value; + }; + + /// 26.2.3 complex specializations + /// complex specialization + template<> + struct complex + { + typedef double value_type; + typedef __complex__ double _ComplexT; + + _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { } + + _GLIBCXX_CONSTEXPR complex(double __r = 0.0, double __i = 0.0) +#if __cplusplus >= 201103L + : _M_value{ __r, __i } { } +#else + { + __real__ _M_value = __r; + __imag__ _M_value = __i; + } +#endif + + _GLIBCXX_CONSTEXPR complex(const complex& __z) + : _M_value(__z.__rep()) { } + + explicit _GLIBCXX_CONSTEXPR complex(const complex&); + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) + constexpr double + real() { return __real__ _M_value; } + + __attribute ((__abi_tag__ ("cxx11"))) + constexpr double + imag() { return __imag__ _M_value; } +#else + double& + real() { return __real__ _M_value; } + + const double& + real() const { return __real__ _M_value; } + + double& + imag() { return __imag__ _M_value; } + + const double& + imag() const { return __imag__ _M_value; } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + void + real(double __val) { __real__ _M_value = __val; } + + void + imag(double __val) { __imag__ _M_value = __val; } + + complex& + operator=(double __d) + { + _M_value = __d; + return *this; + } + + complex& + operator+=(double __d) + { + _M_value += __d; + return *this; + } + + complex& + operator-=(double __d) + { + _M_value -= __d; + return *this; + } + + complex& + operator*=(double __d) + { + _M_value *= __d; + return *this; + } + + complex& + operator/=(double __d) + { + _M_value /= __d; + return *this; + } + + // The compiler will synthesize this, efficiently. + // complex& operator=(const complex&); + + template + complex& + operator=(const complex<_Tp>& __z) + { + __real__ _M_value = __z.real(); + __imag__ _M_value = __z.imag(); + return *this; + } + + template + complex& + operator+=(const complex<_Tp>& __z) + { + __real__ _M_value += __z.real(); + __imag__ _M_value += __z.imag(); + return *this; + } + + template + complex& + operator-=(const complex<_Tp>& __z) + { + __real__ _M_value -= __z.real(); + __imag__ _M_value -= __z.imag(); + return *this; + } + + template + complex& + operator*=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value *= __t; + return *this; + } + + template + complex& + operator/=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value /= __t; + return *this; + } + + _GLIBCXX_USE_CONSTEXPR _ComplexT __rep() const { return _M_value; } + + private: + _ComplexT _M_value; + }; + + /// 26.2.3 complex specializations + /// complex specialization + template<> + struct complex + { + typedef long double value_type; + typedef __complex__ long double _ComplexT; + + _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { } + + _GLIBCXX_CONSTEXPR complex(long double __r = 0.0L, + long double __i = 0.0L) +#if __cplusplus >= 201103L + : _M_value{ __r, __i } { } +#else + { + __real__ _M_value = __r; + __imag__ _M_value = __i; + } +#endif + + _GLIBCXX_CONSTEXPR complex(const complex& __z) + : _M_value(__z.__rep()) { } + + _GLIBCXX_CONSTEXPR complex(const complex& __z) + : _M_value(__z.__rep()) { } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) + constexpr long double + real() { return __real__ _M_value; } + + __attribute ((__abi_tag__ ("cxx11"))) + constexpr long double + imag() { return __imag__ _M_value; } +#else + long double& + real() { return __real__ _M_value; } + + const long double& + real() const { return __real__ _M_value; } + + long double& + imag() { return __imag__ _M_value; } + + const long double& + imag() const { return __imag__ _M_value; } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + void + real(long double __val) { __real__ _M_value = __val; } + + void + imag(long double __val) { __imag__ _M_value = __val; } + + complex& + operator=(long double __r) + { + _M_value = __r; + return *this; + } + + complex& + operator+=(long double __r) + { + _M_value += __r; + return *this; + } + + complex& + operator-=(long double __r) + { + _M_value -= __r; + return *this; + } + + complex& + operator*=(long double __r) + { + _M_value *= __r; + return *this; + } + + complex& + operator/=(long double __r) + { + _M_value /= __r; + return *this; + } + + // The compiler knows how to do this efficiently + // complex& operator=(const complex&); + + template + complex& + operator=(const complex<_Tp>& __z) + { + __real__ _M_value = __z.real(); + __imag__ _M_value = __z.imag(); + return *this; + } + + template + complex& + operator+=(const complex<_Tp>& __z) + { + __real__ _M_value += __z.real(); + __imag__ _M_value += __z.imag(); + return *this; + } + + template + complex& + operator-=(const complex<_Tp>& __z) + { + __real__ _M_value -= __z.real(); + __imag__ _M_value -= __z.imag(); + return *this; + } + + template + complex& + operator*=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value *= __t; + return *this; + } + + template + complex& + operator/=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value /= __t; + return *this; + } + + _GLIBCXX_USE_CONSTEXPR _ComplexT __rep() const { return _M_value; } + + private: + _ComplexT _M_value; + }; + + // These bits have to be at the end of this file, so that the + // specializations have all been defined. + inline _GLIBCXX_CONSTEXPR + complex::complex(const complex& __z) + : _M_value(__z.__rep()) { } + + inline _GLIBCXX_CONSTEXPR + complex::complex(const complex& __z) + : _M_value(__z.__rep()) { } + + inline _GLIBCXX_CONSTEXPR + complex::complex(const complex& __z) + : _M_value(__z.__rep()) { } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template istream& operator>>(istream&, complex&); + extern template ostream& operator<<(ostream&, const complex&); + extern template istream& operator>>(istream&, complex&); + extern template ostream& operator<<(ostream&, const complex&); + extern template istream& operator>>(istream&, complex&); + extern template ostream& operator<<(ostream&, const complex&); + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template wistream& operator>>(wistream&, complex&); + extern template wostream& operator<<(wostream&, const complex&); + extern template wistream& operator>>(wistream&, complex&); + extern template wostream& operator<<(wostream&, const complex&); + extern template wistream& operator>>(wistream&, complex&); + extern template wostream& operator<<(wostream&, const complex&); +#endif +#endif + + // @} group complex_numbers + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // See ext/type_traits.h for the primary template. + template + struct __promote_2, _Up> + { + public: + typedef std::complex::__type> __type; + }; + + template + struct __promote_2<_Tp, std::complex<_Up> > + { + public: + typedef std::complex::__type> __type; + }; + + template + struct __promote_2, std::complex<_Up> > + { + public: + typedef std::complex::__type> __type; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if __cplusplus >= 201103L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Forward declarations. + template std::complex<_Tp> acos(const std::complex<_Tp>&); + template std::complex<_Tp> asin(const std::complex<_Tp>&); + template std::complex<_Tp> atan(const std::complex<_Tp>&); + + template std::complex<_Tp> acosh(const std::complex<_Tp>&); + template std::complex<_Tp> asinh(const std::complex<_Tp>&); + template std::complex<_Tp> atanh(const std::complex<_Tp>&); + // DR 595. + template _Tp fabs(const std::complex<_Tp>&); + + template + inline std::complex<_Tp> + __complex_acos(const std::complex<_Tp>& __z) + { + const std::complex<_Tp> __t = std::asin(__z); + const _Tp __pi_2 = 1.5707963267948966192313216916397514L; + return std::complex<_Tp>(__pi_2 - __t.real(), -__t.imag()); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_acos(__complex__ float __z) + { return __builtin_cacosf(__z); } + + inline __complex__ double + __complex_acos(__complex__ double __z) + { return __builtin_cacos(__z); } + + inline __complex__ long double + __complex_acos(const __complex__ long double& __z) + { return __builtin_cacosl(__z); } + + template + inline std::complex<_Tp> + acos(const std::complex<_Tp>& __z) + { return __complex_acos(__z.__rep()); } +#else + /// acos(__z) [8.1.2]. + // Effects: Behaves the same as C99 function cacos, defined + // in subclause 7.3.5.1. + template + inline std::complex<_Tp> + acos(const std::complex<_Tp>& __z) + { return __complex_acos(__z); } +#endif + + template + inline std::complex<_Tp> + __complex_asin(const std::complex<_Tp>& __z) + { + std::complex<_Tp> __t(-__z.imag(), __z.real()); + __t = std::asinh(__t); + return std::complex<_Tp>(__t.imag(), -__t.real()); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_asin(__complex__ float __z) + { return __builtin_casinf(__z); } + + inline __complex__ double + __complex_asin(__complex__ double __z) + { return __builtin_casin(__z); } + + inline __complex__ long double + __complex_asin(const __complex__ long double& __z) + { return __builtin_casinl(__z); } + + template + inline std::complex<_Tp> + asin(const std::complex<_Tp>& __z) + { return __complex_asin(__z.__rep()); } +#else + /// asin(__z) [8.1.3]. + // Effects: Behaves the same as C99 function casin, defined + // in subclause 7.3.5.2. + template + inline std::complex<_Tp> + asin(const std::complex<_Tp>& __z) + { return __complex_asin(__z); } +#endif + + template + std::complex<_Tp> + __complex_atan(const std::complex<_Tp>& __z) + { + const _Tp __r2 = __z.real() * __z.real(); + const _Tp __x = _Tp(1.0) - __r2 - __z.imag() * __z.imag(); + + _Tp __num = __z.imag() + _Tp(1.0); + _Tp __den = __z.imag() - _Tp(1.0); + + __num = __r2 + __num * __num; + __den = __r2 + __den * __den; + + return std::complex<_Tp>(_Tp(0.5) * atan2(_Tp(2.0) * __z.real(), __x), + _Tp(0.25) * log(__num / __den)); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_atan(__complex__ float __z) + { return __builtin_catanf(__z); } + + inline __complex__ double + __complex_atan(__complex__ double __z) + { return __builtin_catan(__z); } + + inline __complex__ long double + __complex_atan(const __complex__ long double& __z) + { return __builtin_catanl(__z); } + + template + inline std::complex<_Tp> + atan(const std::complex<_Tp>& __z) + { return __complex_atan(__z.__rep()); } +#else + /// atan(__z) [8.1.4]. + // Effects: Behaves the same as C99 function catan, defined + // in subclause 7.3.5.3. + template + inline std::complex<_Tp> + atan(const std::complex<_Tp>& __z) + { return __complex_atan(__z); } +#endif + + template + std::complex<_Tp> + __complex_acosh(const std::complex<_Tp>& __z) + { + // Kahan's formula. + return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0))) + + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0)))); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_acosh(__complex__ float __z) + { return __builtin_cacoshf(__z); } + + inline __complex__ double + __complex_acosh(__complex__ double __z) + { return __builtin_cacosh(__z); } + + inline __complex__ long double + __complex_acosh(const __complex__ long double& __z) + { return __builtin_cacoshl(__z); } + + template + inline std::complex<_Tp> + acosh(const std::complex<_Tp>& __z) + { return __complex_acosh(__z.__rep()); } +#else + /// acosh(__z) [8.1.5]. + // Effects: Behaves the same as C99 function cacosh, defined + // in subclause 7.3.6.1. + template + inline std::complex<_Tp> + acosh(const std::complex<_Tp>& __z) + { return __complex_acosh(__z); } +#endif + + template + std::complex<_Tp> + __complex_asinh(const std::complex<_Tp>& __z) + { + std::complex<_Tp> __t((__z.real() - __z.imag()) + * (__z.real() + __z.imag()) + _Tp(1.0), + _Tp(2.0) * __z.real() * __z.imag()); + __t = std::sqrt(__t); + + return std::log(__t + __z); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_asinh(__complex__ float __z) + { return __builtin_casinhf(__z); } + + inline __complex__ double + __complex_asinh(__complex__ double __z) + { return __builtin_casinh(__z); } + + inline __complex__ long double + __complex_asinh(const __complex__ long double& __z) + { return __builtin_casinhl(__z); } + + template + inline std::complex<_Tp> + asinh(const std::complex<_Tp>& __z) + { return __complex_asinh(__z.__rep()); } +#else + /// asinh(__z) [8.1.6]. + // Effects: Behaves the same as C99 function casin, defined + // in subclause 7.3.6.2. + template + inline std::complex<_Tp> + asinh(const std::complex<_Tp>& __z) + { return __complex_asinh(__z); } +#endif + + template + std::complex<_Tp> + __complex_atanh(const std::complex<_Tp>& __z) + { + const _Tp __i2 = __z.imag() * __z.imag(); + const _Tp __x = _Tp(1.0) - __i2 - __z.real() * __z.real(); + + _Tp __num = _Tp(1.0) + __z.real(); + _Tp __den = _Tp(1.0) - __z.real(); + + __num = __i2 + __num * __num; + __den = __i2 + __den * __den; + + return std::complex<_Tp>(_Tp(0.25) * (log(__num) - log(__den)), + _Tp(0.5) * atan2(_Tp(2.0) * __z.imag(), __x)); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_atanh(__complex__ float __z) + { return __builtin_catanhf(__z); } + + inline __complex__ double + __complex_atanh(__complex__ double __z) + { return __builtin_catanh(__z); } + + inline __complex__ long double + __complex_atanh(const __complex__ long double& __z) + { return __builtin_catanhl(__z); } + + template + inline std::complex<_Tp> + atanh(const std::complex<_Tp>& __z) + { return __complex_atanh(__z.__rep()); } +#else + /// atanh(__z) [8.1.7]. + // Effects: Behaves the same as C99 function catanh, defined + // in subclause 7.3.6.3. + template + inline std::complex<_Tp> + atanh(const std::complex<_Tp>& __z) + { return __complex_atanh(__z); } +#endif + + template + inline _Tp + /// fabs(__z) [8.1.8]. + // Effects: Behaves the same as C99 function cabs, defined + // in subclause 7.3.8.1. + fabs(const std::complex<_Tp>& __z) + { return std::abs(__z); } + + /// Additional overloads [8.1.9]. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + arg(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +#if (_GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) + return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L) + : __type(); +#else + return std::arg(std::complex<__type>(__x)); +#endif + } + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + imag(_Tp) + { return _Tp(); } + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + norm(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __type(__x) * __type(__x); + } + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + real(_Tp __x) + { return __x; } + + template + inline std::complex::__type> + pow(const std::complex<_Tp>& __x, const _Up& __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(std::complex<__type>(__x), __type(__y)); + } + + template + inline std::complex::__type> + pow(const _Tp& __x, const std::complex<_Up>& __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(__type(__x), std::complex<__type>(__y)); + } + + template + inline std::complex::__type> + pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(std::complex<__type>(__x), + std::complex<__type>(__y)); + } + + // Forward declarations. + // DR 781. + template std::complex<_Tp> proj(const std::complex<_Tp>&); + + template + std::complex<_Tp> + __complex_proj(const std::complex<_Tp>& __z) + { + const _Tp __den = (__z.real() * __z.real() + + __z.imag() * __z.imag() + _Tp(1.0)); + + return std::complex<_Tp>((_Tp(2.0) * __z.real()) / __den, + (_Tp(2.0) * __z.imag()) / __den); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_proj(__complex__ float __z) + { return __builtin_cprojf(__z); } + + inline __complex__ double + __complex_proj(__complex__ double __z) + { return __builtin_cproj(__z); } + + inline __complex__ long double + __complex_proj(const __complex__ long double& __z) + { return __builtin_cprojl(__z); } + + template + inline std::complex<_Tp> + proj(const std::complex<_Tp>& __z) + { return __complex_proj(__z.__rep()); } +#else + template + inline std::complex<_Tp> + proj(const std::complex<_Tp>& __z) + { return __complex_proj(__z); } +#endif + + // DR 1137. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + proj(_Tp __x) + { return __x; } + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + conj(_Tp __x) + { return __x; } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // C++11 + +#endif /* _GLIBCXX_COMPLEX */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/complex.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/complex.h new file mode 100644 index 0000000..be0e82d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/complex.h @@ -0,0 +1,46 @@ +// -*- C++ -*- compatibility header. + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file complex.h + * This is a Standard C++ Library header. + */ + +#include + +#if __cplusplus >= 201103L +# include +#endif + +#if _GLIBCXX_HAVE_COMPLEX_H +# include_next +# ifdef _GLIBCXX_COMPLEX +// See PR56111, keep the macro in C++03 if possible. +# undef complex +# endif +#endif + +#ifndef _GLIBCXX_COMPLEX_H +#define _GLIBCXX_COMPLEX_H 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/condition_variable b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/condition_variable new file mode 100644 index 0000000..5284655 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/condition_variable @@ -0,0 +1,286 @@ +// -*- C++ -*- + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/condition_variable + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CONDITION_VARIABLE +#define _GLIBCXX_CONDITION_VARIABLE 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include // unique_lock + +#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup condition_variables Condition Variables + * @ingroup concurrency + * + * Classes for condition_variable support. + * @{ + */ + + /// cv_status + enum class cv_status { no_timeout, timeout }; + + /// condition_variable + class condition_variable + { + typedef chrono::system_clock __clock_t; + typedef __gthread_cond_t __native_type; + +#ifdef __GTHREAD_COND_INIT + __native_type _M_cond = __GTHREAD_COND_INIT; +#else + __native_type _M_cond; +#endif + + public: + typedef __native_type* native_handle_type; + + condition_variable() noexcept; + ~condition_variable() noexcept; + + condition_variable(const condition_variable&) = delete; + condition_variable& operator=(const condition_variable&) = delete; + + void + notify_one() noexcept; + + void + notify_all() noexcept; + + void + wait(unique_lock& __lock); + + template + void + wait(unique_lock& __lock, _Predicate __p) + { + while (!__p()) + wait(__lock); + } + + template + cv_status + wait_until(unique_lock& __lock, + const chrono::time_point<__clock_t, _Duration>& __atime) + { return __wait_until_impl(__lock, __atime); } + + template + cv_status + wait_until(unique_lock& __lock, + const chrono::time_point<_Clock, _Duration>& __atime) + { + // DR 887 - Sync unknown clock to known clock. + const typename _Clock::time_point __c_entry = _Clock::now(); + const __clock_t::time_point __s_entry = __clock_t::now(); + const auto __delta = __atime - __c_entry; + const auto __s_atime = __s_entry + __delta; + + return __wait_until_impl(__lock, __s_atime); + } + + template + bool + wait_until(unique_lock& __lock, + const chrono::time_point<_Clock, _Duration>& __atime, + _Predicate __p) + { + while (!__p()) + if (wait_until(__lock, __atime) == cv_status::timeout) + return __p(); + return true; + } + + template + cv_status + wait_for(unique_lock& __lock, + const chrono::duration<_Rep, _Period>& __rtime) + { return wait_until(__lock, __clock_t::now() + __rtime); } + + template + bool + wait_for(unique_lock& __lock, + const chrono::duration<_Rep, _Period>& __rtime, + _Predicate __p) + { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); } + + native_handle_type + native_handle() + { return &_M_cond; } + + private: + template + cv_status + __wait_until_impl(unique_lock& __lock, + const chrono::time_point<__clock_t, _Dur>& __atime) + { + auto __s = chrono::time_point_cast(__atime); + auto __ns = chrono::duration_cast(__atime - __s); + + __gthread_time_t __ts = + { + static_cast(__s.time_since_epoch().count()), + static_cast(__ns.count()) + }; + + __gthread_cond_timedwait(&_M_cond, __lock.mutex()->native_handle(), + &__ts); + + return (__clock_t::now() < __atime + ? cv_status::no_timeout : cv_status::timeout); + } + }; + + /// condition_variable_any + // Like above, but mutex is not required to have try_lock. + class condition_variable_any + { + typedef chrono::system_clock __clock_t; + condition_variable _M_cond; + mutex _M_mutex; + + // scoped unlock - unlocks in ctor, re-locks in dtor + template + struct _Unlock + { + explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); } + + ~_Unlock() noexcept(false) + { + if (uncaught_exception()) + __try { _M_lock.lock(); } __catch(...) { } + else + _M_lock.lock(); + } + + _Unlock(const _Unlock&) = delete; + _Unlock& operator=(const _Unlock&) = delete; + + _Lock& _M_lock; + }; + + public: + + condition_variable_any() noexcept; + ~condition_variable_any() noexcept; + + condition_variable_any(const condition_variable_any&) = delete; + condition_variable_any& operator=(const condition_variable_any&) = delete; + + void + notify_one() noexcept + { + lock_guard __lock(_M_mutex); + _M_cond.notify_one(); + } + + void + notify_all() noexcept + { + lock_guard __lock(_M_mutex); + _M_cond.notify_all(); + } + + template + void + wait(_Lock& __lock) + { + unique_lock __my_lock(_M_mutex); + _Unlock<_Lock> __unlock(__lock); + // _M_mutex must be unlocked before re-locking __lock so move + // ownership of _M_mutex lock to an object with shorter lifetime. + unique_lock __my_lock2(std::move(__my_lock)); + _M_cond.wait(__my_lock2); + } + + + template + void + wait(_Lock& __lock, _Predicate __p) + { + while (!__p()) + wait(__lock); + } + + template + cv_status + wait_until(_Lock& __lock, + const chrono::time_point<_Clock, _Duration>& __atime) + { + unique_lock __my_lock(_M_mutex); + _Unlock<_Lock> __unlock(__lock); + // _M_mutex must be unlocked before re-locking __lock so move + // ownership of _M_mutex lock to an object with shorter lifetime. + unique_lock __my_lock2(std::move(__my_lock)); + return _M_cond.wait_until(__my_lock2, __atime); + } + + template + bool + wait_until(_Lock& __lock, + const chrono::time_point<_Clock, _Duration>& __atime, + _Predicate __p) + { + while (!__p()) + if (wait_until(__lock, __atime) == cv_status::timeout) + return __p(); + return true; + } + + template + cv_status + wait_for(_Lock& __lock, const chrono::duration<_Rep, _Period>& __rtime) + { return wait_until(__lock, __clock_t::now() + __rtime); } + + template + bool + wait_for(_Lock& __lock, + const chrono::duration<_Rep, _Period>& __rtime, _Predicate __p) + { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); } + }; + + // @} group condition_variables +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1 + +#endif // C++11 + +#endif // _GLIBCXX_CONDITION_VARIABLE diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/csetjmp b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/csetjmp new file mode 100644 index 0000000..c799db0 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/csetjmp @@ -0,0 +1,61 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file csetjmp + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c setjmp.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 20.4.6 C library +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CSETJMP +#define _GLIBCXX_CSETJMP 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef longjmp + +// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998 +#ifndef setjmp +#define setjmp(env) setjmp (env) +#endif + +namespace std +{ + using ::jmp_buf; + using ::longjmp; +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/csignal b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/csignal new file mode 100644 index 0000000..16446f5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/csignal @@ -0,0 +1,57 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file csignal + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c signal.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 20.4.6 C library +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CSIGNAL +#define _GLIBCXX_CSIGNAL 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef raise + +namespace std +{ + using ::sig_atomic_t; + using ::signal; + using ::raise; +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdalign b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdalign new file mode 100644 index 0000000..6500554 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdalign @@ -0,0 +1,44 @@ +// -*- C++ -*- + +// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cstdalign + * This is a Standard C++ Library header. + */ + +#pragma GCC system_header + +#ifndef _GLIBCXX_CSTDALIGN +#define _GLIBCXX_CSTDALIGN 1 + +#if __cplusplus < 201103L +# include +#else +# include +# if _GLIBCXX_HAVE_STDALIGN_H +# include +# endif +#endif + +#endif + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdarg b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdarg new file mode 100644 index 0000000..ea68de1 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdarg @@ -0,0 +1,57 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cstdarg + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c stdarg.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 20.4.6 C library +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CSTDARG +#define _GLIBCXX_CSTDARG 1 + +// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998 +#ifndef va_end +#define va_end(ap) va_end (ap) +#endif + +namespace std +{ + using ::va_list; +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdbool b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdbool new file mode 100644 index 0000000..0dabbed --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdbool @@ -0,0 +1,44 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cstdbool + * This is a Standard C++ Library header. + */ + +#pragma GCC system_header + +#ifndef _GLIBCXX_CSTDBOOL +#define _GLIBCXX_CSTDBOOL 1 + +#if __cplusplus < 201103L +# include +#else +# include +# if _GLIBCXX_HAVE_STDBOOL_H +# include +# endif +#endif + +#endif + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstddef b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstddef new file mode 100644 index 0000000..00660f3 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstddef @@ -0,0 +1,42 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file cstddef + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c stddef.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 18.1 Types +// + +#pragma GCC system_header + +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdint b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdint new file mode 100644 index 0000000..f945859 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdint @@ -0,0 +1,89 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cstdint + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CSTDINT +#define _GLIBCXX_CSTDINT 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include + +#if _GLIBCXX_HAVE_STDINT_H +# include +#endif + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + +namespace std +{ + using ::int8_t; + using ::int16_t; + using ::int32_t; + using ::int64_t; + + using ::int_fast8_t; + using ::int_fast16_t; + using ::int_fast32_t; + using ::int_fast64_t; + + using ::int_least8_t; + using ::int_least16_t; + using ::int_least32_t; + using ::int_least64_t; + + using ::intmax_t; + using ::intptr_t; + + using ::uint8_t; + using ::uint16_t; + using ::uint32_t; + using ::uint64_t; + + using ::uint_fast8_t; + using ::uint_fast16_t; + using ::uint_fast32_t; + using ::uint_fast64_t; + + using ::uint_least8_t; + using ::uint_least16_t; + using ::uint_least32_t; + using ::uint_least64_t; + + using ::uintmax_t; + using ::uintptr_t; +} // namespace std + +#endif // _GLIBCXX_USE_C99_STDINT_TR1 + +#endif // C++11 + +#endif // _GLIBCXX_CSTDINT diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdio b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdio new file mode 100644 index 0000000..e81e4b1 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdio @@ -0,0 +1,187 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cstdio + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c stdio.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 27.8.2 C Library files +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CSTDIO +#define _GLIBCXX_CSTDIO 1 + +#ifndef _GLIBCXX_HAVE_GETS +extern "C" char* gets (char* __s) __attribute__((deprecated)); +#endif + +// Get rid of those macros defined in in lieu of real functions. +#undef clearerr +#undef fclose +#undef feof +#undef ferror +#undef fflush +#undef fgetc +#undef fgetpos +#undef fgets +#undef fopen +#undef fprintf +#undef fputc +#undef fputs +#undef fread +#undef freopen +#undef fscanf +#undef fseek +#undef fsetpos +#undef ftell +#undef fwrite +#undef getc +#undef getchar +#undef gets +#undef perror +#undef printf +#undef putc +#undef putchar +#undef puts +#undef remove +#undef rename +#undef rewind +#undef scanf +#undef setbuf +#undef setvbuf +#undef sprintf +#undef sscanf +#undef tmpfile +#undef tmpnam +#undef ungetc +#undef vfprintf +#undef vprintf +#undef vsprintf + +namespace std +{ + using ::FILE; + using ::fpos_t; + + using ::clearerr; + using ::fclose; + using ::feof; + using ::ferror; + using ::fflush; + using ::fgetc; + using ::fgetpos; + using ::fgets; + using ::fopen; + using ::fprintf; + using ::fputc; + using ::fputs; + using ::fread; + using ::freopen; + using ::fscanf; + using ::fseek; + using ::fsetpos; + using ::ftell; + using ::fwrite; + using ::getc; + using ::getchar; + 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 + +#if _GLIBCXX_USE_C99 + +#undef snprintf +#undef vfscanf +#undef vscanf +#undef vsnprintf +#undef vsscanf + +namespace __gnu_cxx +{ +#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC + extern "C" int + (snprintf)(char * __restrict, std::size_t, const char * __restrict, ...) + throw (); + extern "C" int + (vfscanf)(FILE * __restrict, const char * __restrict, __gnuc_va_list); + extern "C" int (vscanf)(const char * __restrict, __gnuc_va_list); + extern "C" int + (vsnprintf)(char * __restrict, std::size_t, const char * __restrict, + __gnuc_va_list) throw (); + extern "C" int + (vsscanf)(const char * __restrict, const char * __restrict, __gnuc_va_list) + throw (); +#endif + +#if !_GLIBCXX_USE_C99_DYNAMIC + using ::snprintf; + using ::vfscanf; + using ::vscanf; + using ::vsnprintf; + using ::vsscanf; +#endif +} // namespace __gnu_cxx + +namespace std +{ + using ::__gnu_cxx::snprintf; + using ::__gnu_cxx::vfscanf; + using ::__gnu_cxx::vscanf; + using ::__gnu_cxx::vsnprintf; + using ::__gnu_cxx::vsscanf; +} // namespace std + +#endif // _GLIBCXX_USE_C99 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdlib b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdlib new file mode 100644 index 0000000..9180036 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstdlib @@ -0,0 +1,260 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cstdlib + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c stdlib.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 20.4.6 C library +// + +#pragma GCC system_header + +#include + +#ifndef _GLIBCXX_CSTDLIB +#define _GLIBCXX_CSTDLIB 1 + +#if !_GLIBCXX_HOSTED +// The C standard does not require a freestanding implementation to +// provide . However, the C++ standard does still require +// -- but only the functionality mentioned in +// [lib.support.start.term]. + +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 + +namespace std +{ + extern "C" void abort(void) throw () _GLIBCXX_NORETURN; + extern "C" int atexit(void (*)()) throw (); + extern "C" void exit(int) throw () _GLIBCXX_NORETURN; +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT + extern "C" int at_quick_exit(void (*)()) throw (); +# endif +# ifdef _GLIBCXX_HAVE_QUICK_EXIT + extern "C" void quick_exit(int) throw() _GLIBCXX_NORETURN; +# endif +#endif +} // namespace std + +#else + +#include + +// Get rid of those macros defined in in lieu of real functions. +#undef abort +#undef abs +#undef atexit +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT +# undef at_quick_exit +# endif +#endif +#undef atof +#undef atoi +#undef atol +#undef bsearch +#undef calloc +#undef div +#undef exit +#undef free +#undef getenv +#undef labs +#undef ldiv +#undef malloc +#undef mblen +#undef mbstowcs +#undef mbtowc +#undef qsort +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_QUICK_EXIT +# undef quick_exit +# endif +#endif +#undef rand +#undef realloc +#undef srand +#undef strtod +#undef strtol +#undef strtoul +#undef system +#undef wcstombs +#undef wctomb + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using ::div_t; + using ::ldiv_t; + + using ::abort; + using ::abs; + using ::atexit; +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT + using ::at_quick_exit; +# endif +#endif + using ::atof; + using ::atoi; + using ::atol; + using ::bsearch; + using ::calloc; + using ::div; + using ::exit; + using ::free; + using ::getenv; + using ::labs; + using ::ldiv; + using ::malloc; +#ifdef _GLIBCXX_HAVE_MBSTATE_T + using ::mblen; + using ::mbstowcs; + using ::mbtowc; +#endif // _GLIBCXX_HAVE_MBSTATE_T + using ::qsort; +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_QUICK_EXIT + using ::quick_exit; +# endif +#endif + using ::rand; + using ::realloc; + using ::srand; + using ::strtod; + using ::strtol; + using ::strtoul; + using ::system; +#ifdef _GLIBCXX_USE_WCHAR_T + using ::wcstombs; + using ::wctomb; +#endif // _GLIBCXX_USE_WCHAR_T + +#ifndef __CORRECT_ISO_CPP_STDLIB_H_PROTO + inline long + abs(long __i) { return __builtin_labs(__i); } + + inline ldiv_t + div(long __i, long __j) { return ldiv(__i, __j); } +#endif + +#ifdef _GLIBCXX_USE_LONG_LONG + inline long long + abs(long long __x) { return __builtin_llabs (__x); } +#endif + +#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_INT128) + inline __int128 + abs(__int128 __x) { return __x >= 0 ? __x : -__x; } +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if _GLIBCXX_USE_C99 + +#undef _Exit +#undef llabs +#undef lldiv +#undef atoll +#undef strtoll +#undef strtoull +#undef strtof +#undef strtold + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::lldiv_t; +#endif +#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC + extern "C" void (_Exit)(int) throw () _GLIBCXX_NORETURN; +#endif +#if !_GLIBCXX_USE_C99_DYNAMIC + using ::_Exit; +#endif + +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::llabs; + + inline lldiv_t + div(long long __n, long long __d) + { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } + + using ::lldiv; +#endif + +#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + extern "C" long long int (atoll)(const char *) throw (); + extern "C" long long int + (strtoll)(const char * __restrict, char ** __restrict, int) throw (); + extern "C" unsigned long long int + (strtoull)(const char * __restrict, char ** __restrict, int) throw (); +#endif +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::atoll; + using ::strtoll; + using ::strtoull; +#endif + using ::strtof; + using ::strtold; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __gnu_cxx + +namespace std +{ +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::__gnu_cxx::lldiv_t; +#endif + using ::__gnu_cxx::_Exit; +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::__gnu_cxx::llabs; + using ::__gnu_cxx::div; + using ::__gnu_cxx::lldiv; +#endif + using ::__gnu_cxx::atoll; + using ::__gnu_cxx::strtof; + using ::__gnu_cxx::strtoll; + using ::__gnu_cxx::strtoull; + using ::__gnu_cxx::strtold; +} // namespace std + +#endif // _GLIBCXX_USE_C99 + +#endif // !_GLIBCXX_HOSTED + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstring b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstring new file mode 100644 index 0000000..b6defab --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cstring @@ -0,0 +1,123 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file cstring + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c string.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 20.4.6 C library +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CSTRING +#define _GLIBCXX_CSTRING 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef memchr +#undef memcmp +#undef memcpy +#undef memmove +#undef memset +#undef strcat +#undef strchr +#undef strcmp +#undef strcoll +#undef strcpy +#undef strcspn +#undef strerror +#undef strlen +#undef strncat +#undef strncmp +#undef strncpy +#undef strpbrk +#undef strrchr +#undef strspn +#undef strstr +#undef strtok +#undef strxfrm + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + 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; + +#ifndef __CORRECT_ISO_CPP_STRING_H_PROTO + inline void* + memchr(void* __s, int __c, size_t __n) + { return __builtin_memchr(__s, __c, __n); } + + inline char* + strchr(char* __s, int __n) + { return __builtin_strchr(__s, __n); } + + inline char* + strpbrk(char* __s1, const char* __s2) + { return __builtin_strpbrk(__s1, __s2); } + + inline char* + strrchr(char* __s, int __n) + { return __builtin_strrchr(__s, __n); } + + inline char* + strstr(char* __s1, const char* __s2) + { return __builtin_strstr(__s1, __s2); } +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ctgmath b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ctgmath new file mode 100644 index 0000000..46999be --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ctgmath @@ -0,0 +1,41 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/ctgmath + * This is a Standard C++ Library header. + */ + +#pragma GCC system_header + +#ifndef _GLIBCXX_CTGMATH +#define _GLIBCXX_CTGMATH 1 + +#if __cplusplus < 201103L +# include +#else +# include +#endif + +#endif + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ctime b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ctime new file mode 100644 index 0000000..b6e040f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ctime @@ -0,0 +1,75 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/ctime + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c time.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 20.5 Date and time +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CTIME +#define _GLIBCXX_CTIME 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef clock +#undef difftime +#undef mktime +#undef time +#undef asctime +#undef ctime +#undef gmtime +#undef localtime +#undef strftime + +namespace std +{ + using ::clock_t; + using ::time_t; + using ::tm; + + using ::clock; + using ::difftime; + using ::mktime; + using ::time; + using ::asctime; + using ::ctime; + using ::gmtime; + using ::localtime; + using ::strftime; +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cwchar b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cwchar new file mode 100644 index 0000000..d8bb68f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cwchar @@ -0,0 +1,303 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cwchar + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c wchar.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 21.4 +// + +#pragma GCC system_header + +#include + +#if _GLIBCXX_HAVE_WCHAR_H +#include +#endif + +#ifndef _GLIBCXX_CWCHAR +#define _GLIBCXX_CWCHAR 1 + +// Need to do a bit of trickery here with mbstate_t as char_traits +// assumes it is in wchar.h, regardless of wchar_t specializations. +#ifndef _GLIBCXX_HAVE_MBSTATE_T +extern "C" +{ + typedef struct + { + int __fill[6]; + } mbstate_t; +} +#endif + +namespace std +{ + using ::mbstate_t; +} // namespace std + +// Get rid of those macros defined in in lieu of real functions. +#undef btowc +#undef fgetwc +#undef fgetws +#undef fputwc +#undef fputws +#undef fwide +#undef fwprintf +#undef fwscanf +#undef getwc +#undef getwchar +#undef mbrlen +#undef mbrtowc +#undef mbsinit +#undef mbsrtowcs +#undef putwc +#undef putwchar +#undef swprintf +#undef swscanf +#undef ungetwc +#undef vfwprintf +#if _GLIBCXX_HAVE_VFWSCANF +# undef vfwscanf +#endif +#undef vswprintf +#if _GLIBCXX_HAVE_VSWSCANF +# undef vswscanf +#endif +#undef vwprintf +#if _GLIBCXX_HAVE_VWSCANF +# undef vwscanf +#endif +#undef wcrtomb +#undef wcscat +#undef wcschr +#undef wcscmp +#undef wcscoll +#undef wcscpy +#undef wcscspn +#undef wcsftime +#undef wcslen +#undef wcsncat +#undef wcsncmp +#undef wcsncpy +#undef wcspbrk +#undef wcsrchr +#undef wcsrtombs +#undef wcsspn +#undef wcsstr +#undef wcstod +#if _GLIBCXX_HAVE_WCSTOF +# undef wcstof +#endif +#undef wcstok +#undef wcstol +#undef wcstoul +#undef wcsxfrm +#undef wctob +#undef wmemchr +#undef wmemcmp +#undef wmemcpy +#undef wmemmove +#undef wmemset +#undef wprintf +#undef wscanf + +#if _GLIBCXX_USE_WCHAR_T + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using ::wint_t; + + using ::btowc; + using ::fgetwc; + using ::fgetws; + using ::fputwc; + using ::fputws; + using ::fwide; + using ::fwprintf; + using ::fwscanf; + using ::getwc; + using ::getwchar; + using ::mbrlen; + using ::mbrtowc; + using ::mbsinit; + using ::mbsrtowcs; + using ::putwc; + using ::putwchar; +#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF + using ::swprintf; +#endif + using ::swscanf; + using ::ungetwc; + using ::vfwprintf; +#if _GLIBCXX_HAVE_VFWSCANF + using ::vfwscanf; +#endif +#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF + using ::vswprintf; +#endif +#if _GLIBCXX_HAVE_VSWSCANF + using ::vswscanf; +#endif + using ::vwprintf; +#if _GLIBCXX_HAVE_VWSCANF + using ::vwscanf; +#endif + using ::wcrtomb; + using ::wcscat; + using ::wcscmp; + using ::wcscoll; + using ::wcscpy; + using ::wcscspn; + using ::wcsftime; + using ::wcslen; + using ::wcsncat; + using ::wcsncmp; + using ::wcsncpy; + using ::wcsrtombs; + using ::wcsspn; + using ::wcstod; +#if _GLIBCXX_HAVE_WCSTOF + using ::wcstof; +#endif + using ::wcstok; + using ::wcstol; + using ::wcstoul; + using ::wcsxfrm; + using ::wctob; + using ::wmemcmp; + using ::wmemcpy; + using ::wmemmove; + using ::wmemset; + using ::wprintf; + using ::wscanf; + using ::wcschr; + using ::wcspbrk; + using ::wcsrchr; + using ::wcsstr; + using ::wmemchr; + +#ifndef __CORRECT_ISO_CPP_WCHAR_H_PROTO + inline wchar_t* + wcschr(wchar_t* __p, wchar_t __c) + { return wcschr(const_cast(__p), __c); } + + inline wchar_t* + wcspbrk(wchar_t* __s1, const wchar_t* __s2) + { return wcspbrk(const_cast(__s1), __s2); } + + inline wchar_t* + wcsrchr(wchar_t* __p, wchar_t __c) + { return wcsrchr(const_cast(__p), __c); } + + inline wchar_t* + wcsstr(wchar_t* __s1, const wchar_t* __s2) + { return wcsstr(const_cast(__s1), __s2); } + + inline wchar_t* + wmemchr(wchar_t* __p, wchar_t __c, size_t __n) + { return wmemchr(const_cast(__p), __c, __n); } +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if _GLIBCXX_USE_C99 + +#undef wcstold +#undef wcstoll +#undef wcstoull + +namespace __gnu_cxx +{ +#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC + extern "C" long double + (wcstold)(const wchar_t * __restrict, wchar_t ** __restrict) throw (); +#endif +#if !_GLIBCXX_USE_C99_DYNAMIC + using ::wcstold; +#endif +#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + extern "C" long long int + (wcstoll)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); + extern "C" unsigned long long int + (wcstoull)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); +#endif +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::wcstoll; + using ::wcstoull; +#endif +} // namespace __gnu_cxx + +namespace std +{ + using ::__gnu_cxx::wcstold; + using ::__gnu_cxx::wcstoll; + using ::__gnu_cxx::wcstoull; +} // namespace + +#endif + +#endif //_GLIBCXX_USE_WCHAR_T + +#if __cplusplus >= 201103L + +#ifdef _GLIBCXX_USE_WCHAR_T + +namespace std +{ +#if _GLIBCXX_HAVE_WCSTOF + using std::wcstof; +#endif +#if _GLIBCXX_HAVE_VFWSCANF + using std::vfwscanf; +#endif +#if _GLIBCXX_HAVE_VSWSCANF + using std::vswscanf; +#endif +#if _GLIBCXX_HAVE_VWSCANF + using std::vwscanf; +#endif + +#if _GLIBCXX_USE_C99 + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +#endif +} // namespace + +#endif // _GLIBCXX_USE_WCHAR_T + +#endif // C++11 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cwctype b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cwctype new file mode 100644 index 0000000..69457c9 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cwctype @@ -0,0 +1,110 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/cwctype + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c wctype.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: +// + +#pragma GCC system_header + +#include + +#if _GLIBCXX_HAVE_WCTYPE_H + +#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 10 +// Work around glibc BZ 9694 +#include +#endif + +#include +#endif // _GLIBCXX_HAVE_WCTYPE_H + +#ifndef _GLIBCXX_CWCTYPE +#define _GLIBCXX_CWCTYPE 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef iswalnum +#undef iswalpha +#if _GLIBCXX_HAVE_ISWBLANK +# undef iswblank +#endif +#undef iswcntrl +#undef iswctype +#undef iswdigit +#undef iswgraph +#undef iswlower +#undef iswprint +#undef iswpunct +#undef iswspace +#undef iswupper +#undef iswxdigit +#undef towctrans +#undef towlower +#undef towupper +#undef wctrans +#undef wctype + +#if _GLIBCXX_USE_WCHAR_T + +namespace std +{ + using ::wctrans_t; + using ::wctype_t; + using ::wint_t; + + using ::iswalnum; + using ::iswalpha; +#if _GLIBCXX_HAVE_ISWBLANK + using ::iswblank; +#endif + using ::iswcntrl; + using ::iswctype; + using ::iswdigit; + using ::iswgraph; + using ::iswlower; + using ::iswprint; + using ::iswpunct; + using ::iswspace; + using ::iswupper; + using ::iswxdigit; + using ::towctrans; + using ::towlower; + using ::towupper; + using ::wctrans; + using ::wctype; +} // namespace + +#endif //_GLIBCXX_USE_WCHAR_T + +#endif // _GLIBCXX_CWCTYPE diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cxxabi.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cxxabi.h new file mode 100644 index 0000000..f5301c0 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/cxxabi.h @@ -0,0 +1,700 @@ +// ABI Support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of GCC. +// +// GCC is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// GCC is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// Written by Nathan Sidwell, Codesourcery LLC, + +/* This file declares the new abi entry points into the runtime. It is not + normally necessary for user programs to include this header, or use the + entry points directly. However, this header is available should that be + needed. + + Some of the entry points are intended for both C and C++, thus this header + is includable from both C and C++. Though the C++ specific parts are not + available in C, naturally enough. */ + +/** @file cxxabi.h + * The header provides an interface to the C++ ABI. + */ + +#ifndef _CXXABI_H +#define _CXXABI_H 1 + +#pragma GCC system_header + +#pragma GCC visibility push(default) + +#include +#include +#include +#include + +#ifndef _GLIBCXX_CDTOR_CALLABI +#define _GLIBCXX_CDTOR_CALLABI +#endif + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + + typedef __cxa_cdtor_return_type (*__cxa_cdtor_type)(void *); + + // Allocate array. + void* + __cxa_vec_new(size_t __element_count, size_t __element_size, + size_t __padding_size, __cxa_cdtor_type __constructor, + __cxa_cdtor_type __destructor); + + void* + __cxa_vec_new2(size_t __element_count, size_t __element_size, + size_t __padding_size, __cxa_cdtor_type __constructor, + __cxa_cdtor_type __destructor, void *(*__alloc) (size_t), + void (*__dealloc) (void*)); + + void* + __cxa_vec_new3(size_t __element_count, size_t __element_size, + size_t __padding_size, __cxa_cdtor_type __constructor, + __cxa_cdtor_type __destructor, void *(*__alloc) (size_t), + void (*__dealloc) (void*, size_t)); + + // Construct array. + __cxa_vec_ctor_return_type + __cxa_vec_ctor(void* __array_address, size_t __element_count, + size_t __element_size, __cxa_cdtor_type __constructor, + __cxa_cdtor_type __destructor); + + __cxa_vec_ctor_return_type + __cxa_vec_cctor(void* __dest_array, void* __src_array, + size_t __element_count, size_t __element_size, + __cxa_cdtor_return_type (*__constructor) (void*, void*), + __cxa_cdtor_type __destructor); + + // Destruct array. + void + __cxa_vec_dtor(void* __array_address, size_t __element_count, + size_t __element_size, __cxa_cdtor_type __destructor); + + void + __cxa_vec_cleanup(void* __array_address, size_t __element_count, size_t __s, + __cxa_cdtor_type __destructor) _GLIBCXX_NOTHROW; + + // Destruct and release array. + void + __cxa_vec_delete(void* __array_address, size_t __element_size, + size_t __padding_size, __cxa_cdtor_type __destructor); + + void + __cxa_vec_delete2(void* __array_address, size_t __element_size, + size_t __padding_size, __cxa_cdtor_type __destructor, + void (*__dealloc) (void*)); + + void + __cxa_vec_delete3(void* __array_address, size_t __element_size, + size_t __padding_size, __cxa_cdtor_type __destructor, + void (*__dealloc) (void*, size_t)); + + int + __cxa_guard_acquire(__guard*); + + void + __cxa_guard_release(__guard*) _GLIBCXX_NOTHROW; + + void + __cxa_guard_abort(__guard*) _GLIBCXX_NOTHROW; + + // DSO destruction. + int + __cxa_atexit(void (*)(void*), void*, void*) _GLIBCXX_NOTHROW; + + int + __cxa_finalize(void*); + + // TLS destruction. + int + __cxa_thread_atexit(void (*)(void*), void*, void *) _GLIBCXX_NOTHROW; + + // Pure virtual functions. + void + __cxa_pure_virtual(void) __attribute__ ((__noreturn__)); + + void + __cxa_deleted_virtual(void) __attribute__ ((__noreturn__)); + + // Exception handling auxillary. + void + __cxa_bad_cast() __attribute__((__noreturn__)); + + void + __cxa_bad_typeid() __attribute__((__noreturn__)); + + + /** + * @brief Demangling routine. + * ABI-mandated entry point in the C++ runtime library for demangling. + * + * @param __mangled_name A NUL-terminated character string + * containing the name to be demangled. + * + * @param __output_buffer A region of memory, allocated with + * malloc, of @a *__length bytes, into which the demangled name is + * stored. If @a __output_buffer is not long enough, it is + * expanded using realloc. @a __output_buffer may instead be NULL; + * in that case, the demangled name is placed in a region of memory + * allocated with malloc. + * + * @param __length If @a __length is non-NULL, the length of the + * buffer containing the demangled name is placed in @a *__length. + * + * @param __status @a *__status is set to one of the following values: + * 0: The demangling operation succeeded. + * -1: A memory allocation failure occurred. + * -2: @a mangled_name is not a valid name under the C++ ABI mangling rules. + * -3: One of the arguments is invalid. + * + * @return A pointer to the start of the NUL-terminated demangled + * name, or NULL if the demangling fails. The caller is + * responsible for deallocating this memory using @c free. + * + * The demangling is performed using the C++ ABI mangling rules, + * with GNU extensions. For example, this function is used in + * __gnu_cxx::__verbose_terminate_handler. + * + * See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch39.html + * for other examples of use. + * + * @note The same demangling functionality is available via + * libiberty (@c and @c libiberty.a) in GCC + * 3.1 and later, but that requires explicit installation (@c + * --enable-install-libiberty) and uses a different API, although + * the ABI is unchanged. + */ + char* + __cxa_demangle(const char* __mangled_name, char* __output_buffer, + size_t* __length, int* __status); + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#ifdef __cplusplus + +#include + +namespace __cxxabiv1 +{ + // Type information for int, float etc. + class __fundamental_type_info : public std::type_info + { + public: + explicit + __fundamental_type_info(const char* __n) : std::type_info(__n) { } + + virtual + ~__fundamental_type_info(); + }; + + // Type information for array objects. + class __array_type_info : public std::type_info + { + public: + explicit + __array_type_info(const char* __n) : std::type_info(__n) { } + + virtual + ~__array_type_info(); + }; + + // Type information for functions (both member and non-member). + class __function_type_info : public std::type_info + { + public: + explicit + __function_type_info(const char* __n) : std::type_info(__n) { } + + virtual + ~__function_type_info(); + + protected: + // Implementation defined member function. + virtual bool + __is_function_p() const; + }; + + // Type information for enumerations. + class __enum_type_info : public std::type_info + { + public: + explicit + __enum_type_info(const char* __n) : std::type_info(__n) { } + + virtual + ~__enum_type_info(); + }; + + // Common type information for simple pointers and pointers to member. + class __pbase_type_info : public std::type_info + { + public: + unsigned int __flags; // Qualification of the target object. + const std::type_info* __pointee; // Type of pointed to object. + + explicit + __pbase_type_info(const char* __n, int __quals, + const std::type_info* __type) + : std::type_info(__n), __flags(__quals), __pointee(__type) + { } + + virtual + ~__pbase_type_info(); + + // Implementation defined type. + enum __masks + { + __const_mask = 0x1, + __volatile_mask = 0x2, + __restrict_mask = 0x4, + __incomplete_mask = 0x8, + __incomplete_class_mask = 0x10 + }; + + protected: + __pbase_type_info(const __pbase_type_info&); + + __pbase_type_info& + operator=(const __pbase_type_info&); + + // Implementation defined member functions. + virtual bool + __do_catch(const std::type_info* __thr_type, void** __thr_obj, + unsigned int __outer) const; + + inline virtual bool + __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj, + unsigned __outer) const; + }; + + // Type information for simple pointers. + class __pointer_type_info : public __pbase_type_info + { + public: + explicit + __pointer_type_info(const char* __n, int __quals, + const std::type_info* __type) + : __pbase_type_info (__n, __quals, __type) { } + + + virtual + ~__pointer_type_info(); + + protected: + // Implementation defined member functions. + virtual bool + __is_pointer_p() const; + + virtual bool + __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj, + unsigned __outer) const; + }; + + class __class_type_info; + + // Type information for a pointer to member variable. + class __pointer_to_member_type_info : public __pbase_type_info + { + public: + __class_type_info* __context; // Class of the member. + + explicit + __pointer_to_member_type_info(const char* __n, int __quals, + const std::type_info* __type, + __class_type_info* __klass) + : __pbase_type_info(__n, __quals, __type), __context(__klass) { } + + virtual + ~__pointer_to_member_type_info(); + + protected: + __pointer_to_member_type_info(const __pointer_to_member_type_info&); + + __pointer_to_member_type_info& + operator=(const __pointer_to_member_type_info&); + + // Implementation defined member function. + virtual bool + __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj, + unsigned __outer) const; + }; + + // Helper class for __vmi_class_type. + class __base_class_type_info + { + public: + const __class_type_info* __base_type; // Base class type. +#ifdef _GLIBCXX_LLP64 + long long __offset_flags; // Offset and info. +#else + long __offset_flags; // Offset and info. +#endif + + enum __offset_flags_masks + { + __virtual_mask = 0x1, + __public_mask = 0x2, + __hwm_bit = 2, + __offset_shift = 8 // Bits to shift offset. + }; + + // Implementation defined member functions. + bool + __is_virtual_p() const + { return __offset_flags & __virtual_mask; } + + bool + __is_public_p() const + { return __offset_flags & __public_mask; } + + ptrdiff_t + __offset() const + { + // This shift, being of a signed type, is implementation + // defined. GCC implements such shifts as arithmetic, which is + // what we want. + return static_cast(__offset_flags) >> __offset_shift; + } + }; + + // Type information for a class. + class __class_type_info : public std::type_info + { + public: + explicit + __class_type_info (const char *__n) : type_info(__n) { } + + virtual + ~__class_type_info (); + + // Implementation defined types. + // The type sub_kind tells us about how a base object is contained + // within a derived object. We often do this lazily, hence the + // UNKNOWN value. At other times we may use NOT_CONTAINED to mean + // not publicly contained. + enum __sub_kind + { + // We have no idea. + __unknown = 0, + + // Not contained within us (in some circumstances this might + // mean not contained publicly) + __not_contained, + + // Contained ambiguously. + __contained_ambig, + + // Via a virtual path. + __contained_virtual_mask = __base_class_type_info::__virtual_mask, + + // Via a public path. + __contained_public_mask = __base_class_type_info::__public_mask, + + // Contained within us. + __contained_mask = 1 << __base_class_type_info::__hwm_bit, + + __contained_private = __contained_mask, + __contained_public = __contained_mask | __contained_public_mask + }; + + struct __upcast_result; + struct __dyncast_result; + + protected: + // Implementation defined member functions. + virtual bool + __do_upcast(const __class_type_info* __dst_type, void**__obj_ptr) const; + + virtual bool + __do_catch(const type_info* __thr_type, void** __thr_obj, + unsigned __outer) const; + + public: + // Helper for upcast. See if DST is us, or one of our bases. + // Return false if not found, true if found. + virtual bool + __do_upcast(const __class_type_info* __dst, const void* __obj, + __upcast_result& __restrict __result) const; + + // Indicate whether SRC_PTR of type SRC_TYPE is contained publicly + // within OBJ_PTR. OBJ_PTR points to a base object of our type, + // which is the destination type. SRC2DST indicates how SRC + // objects might be contained within this type. If SRC_PTR is one + // of our SRC_TYPE bases, indicate the virtuality. Returns + // not_contained for non containment or private containment. + inline __sub_kind + __find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, + const __class_type_info* __src_type, + const void* __src_ptr) const; + + // Helper for dynamic cast. ACCESS_PATH gives the access from the + // most derived object to this base. DST_TYPE indicates the + // desired type we want. OBJ_PTR points to a base of our type + // within the complete object. SRC_TYPE indicates the static type + // started from and SRC_PTR points to that base within the most + // derived object. Fill in RESULT with what we find. Return true + // if we have located an ambiguous match. + virtual bool + __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path, + const __class_type_info* __dst_type, const void* __obj_ptr, + const __class_type_info* __src_type, const void* __src_ptr, + __dyncast_result& __result) const; + + // Helper for find_public_subobj. SRC2DST indicates how SRC_TYPE + // bases are inherited by the type started from -- which is not + // necessarily the current type. The current type will be a base + // of the destination type. OBJ_PTR points to the current base. + virtual __sub_kind + __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, + const __class_type_info* __src_type, + const void* __src_ptr) const; + }; + + // Type information for a class with a single non-virtual base. + class __si_class_type_info : public __class_type_info + { + public: + const __class_type_info* __base_type; + + explicit + __si_class_type_info(const char *__n, const __class_type_info *__base) + : __class_type_info(__n), __base_type(__base) { } + + virtual + ~__si_class_type_info(); + + protected: + __si_class_type_info(const __si_class_type_info&); + + __si_class_type_info& + operator=(const __si_class_type_info&); + + // Implementation defined member functions. + virtual bool + __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path, + const __class_type_info* __dst_type, const void* __obj_ptr, + const __class_type_info* __src_type, const void* __src_ptr, + __dyncast_result& __result) const; + + virtual __sub_kind + __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, + const __class_type_info* __src_type, + const void* __sub_ptr) const; + + virtual bool + __do_upcast(const __class_type_info*__dst, const void*__obj, + __upcast_result& __restrict __result) const; + }; + + // Type information for a class with multiple and/or virtual bases. + class __vmi_class_type_info : public __class_type_info + { + public: + unsigned int __flags; // Details about the class hierarchy. + unsigned int __base_count; // Number of direct bases. + + // The array of bases uses the trailing array struct hack so this + // class is not constructable with a normal constructor. It is + // internally generated by the compiler. + __base_class_type_info __base_info[1]; // Array of bases. + + explicit + __vmi_class_type_info(const char* __n, int ___flags) + : __class_type_info(__n), __flags(___flags), __base_count(0) { } + + virtual + ~__vmi_class_type_info(); + + // Implementation defined types. + enum __flags_masks + { + __non_diamond_repeat_mask = 0x1, // Distinct instance of repeated base. + __diamond_shaped_mask = 0x2, // Diamond shaped multiple inheritance. + __flags_unknown_mask = 0x10 + }; + + protected: + // Implementation defined member functions. + virtual bool + __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path, + const __class_type_info* __dst_type, const void* __obj_ptr, + const __class_type_info* __src_type, const void* __src_ptr, + __dyncast_result& __result) const; + + virtual __sub_kind + __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr, + const __class_type_info* __src_type, + const void* __src_ptr) const; + + virtual bool + __do_upcast(const __class_type_info* __dst, const void* __obj, + __upcast_result& __restrict __result) const; + }; + + // Exception handling forward declarations. + struct __cxa_exception; + struct __cxa_refcounted_exception; + struct __cxa_dependent_exception; + struct __cxa_eh_globals; + + extern "C" + { + // Dynamic cast runtime. + + // src2dst has the following possible values + // >-1: src_type is a unique public non-virtual base of dst_type + // dst_ptr + src2dst == src_ptr + // -1: unspecified relationship + // -2: src_type is not a public base of dst_type + // -3: src_type is a multiple public non-virtual base of dst_type + void* + __dynamic_cast(const void* __src_ptr, // Starting object. + const __class_type_info* __src_type, // Static type of object. + const __class_type_info* __dst_type, // Desired target type. + ptrdiff_t __src2dst); // How src and dst are related. + + + // Exception handling runtime. + + // The __cxa_eh_globals for the current thread can be obtained by using + // either of the following functions. The "fast" version assumes at least + // one prior call of __cxa_get_globals has been made from the current + // thread, so no initialization is necessary. + __cxa_eh_globals* + __cxa_get_globals() _GLIBCXX_NOTHROW __attribute__ ((__const__)); + + __cxa_eh_globals* + __cxa_get_globals_fast() _GLIBCXX_NOTHROW __attribute__ ((__const__)); + + // Allocate memory for the primary exception plus the thrown object. + void* + __cxa_allocate_exception(size_t) _GLIBCXX_NOTHROW; + + // Free the space allocated for the primary exception. + void + __cxa_free_exception(void*) _GLIBCXX_NOTHROW; + + // Throw the exception. + void + __cxa_throw(void*, std::type_info*, void (_GLIBCXX_CDTOR_CALLABI *) (void *)) + __attribute__((__noreturn__)); + + // Used to implement exception handlers. + void* + __cxa_get_exception_ptr(void*) _GLIBCXX_NOTHROW __attribute__ ((__pure__)); + + void* + __cxa_begin_catch(void*) _GLIBCXX_NOTHROW; + + void + __cxa_end_catch(); + + void + __cxa_rethrow() __attribute__((__noreturn__)); + + // Returns the type_info for the currently handled exception [15.3/8], or + // null if there is none. + std::type_info* + __cxa_current_exception_type() _GLIBCXX_NOTHROW __attribute__ ((__pure__)); + + // GNU Extensions. + + // Allocate memory for a dependent exception. + __cxa_dependent_exception* + __cxa_allocate_dependent_exception() _GLIBCXX_NOTHROW; + + // Free the space allocated for the dependent exception. + void + __cxa_free_dependent_exception(__cxa_dependent_exception*) _GLIBCXX_NOTHROW; + + } // extern "C" + + // A magic placeholder class that can be caught by reference + // to recognize foreign exceptions. + class __foreign_exception + { + virtual ~__foreign_exception() throw(); + virtual void __pure_dummy() = 0; // prevent catch by value + }; + +} // namespace __cxxabiv1 + +/** @namespace abi + * @brief The cross-vendor C++ Application Binary Interface. A + * namespace alias to __cxxabiv1, but user programs should use the + * alias 'abi'. + * + * A brief overview of an ABI is given in the libstdc++ FAQ, question + * 5.8 (you may have a copy of the FAQ locally, or you can view the online + * version at http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#5_8 ). + * + * GCC subscribes to a cross-vendor ABI for C++, sometimes + * called the IA64 ABI because it happens to be the native ABI for that + * platform. It is summarized at http://www.codesourcery.com/cxx-abi/ + * along with the current specification. + * + * For users of GCC greater than or equal to 3.x, entry points are + * available in , which notes, 'It is not normally + * necessary for user programs to include this header, or use the + * entry points directly. However, this header is available should + * that be needed.' +*/ +namespace abi = __cxxabiv1; + +namespace __gnu_cxx +{ + /** + * @brief Exception thrown by __cxa_guard_acquire. + * @ingroup exceptions + * + * 6.7[stmt.dcl]/4: If control re-enters the declaration (recursively) + * while the object is being initialized, the behavior is undefined. + * + * Since we already have a library function to handle locking, we might + * as well check for this situation and throw an exception. + * We use the second byte of the guard variable to remember that we're + * in the middle of an initialization. + */ + class recursive_init_error: public std::exception + { + public: + recursive_init_error() throw() { } + virtual ~recursive_init_error() throw (); + }; +} +#endif // __cplusplus + +#pragma GCC visibility pop + +#endif // __CXXABI_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/array b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/array new file mode 100644 index 0000000..bce10cf --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/array @@ -0,0 +1,305 @@ +// Debugging array implementation -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/array + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_DEBUG_ARRAY +#define _GLIBCXX_DEBUG_ARRAY 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + template + struct array + { + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* iterator; + typedef const value_type* const_iterator; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // Support for zero-sized arrays mandatory. + typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type; + typename _AT_Type::_Type _M_elems; + + template + struct _Array_check_subscript + { + std::size_t size() { return _Size; } + + _Array_check_subscript(std::size_t __index) + { __glibcxx_check_subscript(__index); } + }; + + template + struct _Array_check_nonempty + { + bool empty() { return _Size == 0; } + + _Array_check_nonempty() + { __glibcxx_check_nonempty(); } + }; + + // No explicit construct/copy/destroy for aggregate type. + + // DR 776. + void + fill(const value_type& __u) + { std::fill_n(begin(), size(), __u); } + + void + swap(array& __other) + noexcept(noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))) + { std::swap_ranges(begin(), end(), __other.begin()); } + + // Iterators. + 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()); } + + // Capacity. + constexpr size_type + size() const noexcept { return _Nm; } + + constexpr size_type + max_size() const noexcept { return _Nm; } + + constexpr bool + empty() const noexcept { return size() == 0; } + + // Element access. + reference + operator[](size_type __n) + { + __glibcxx_check_subscript(__n); + return _AT_Type::_S_ref(_M_elems, __n); + } + + constexpr const_reference + operator[](size_type __n) const noexcept + { + return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) + : (_GLIBCXX_THROW_OR_ABORT(_Array_check_subscript<_Nm>(__n)), + _AT_Type::_S_ref(_M_elems, 0)); + } + + reference + at(size_type __n) + { + if (__n >= _Nm) + std::__throw_out_of_range(__N("array::at")); + return _AT_Type::_S_ref(_M_elems, __n); + } + + constexpr const_reference + at(size_type __n) const + { + // Result of conditional expression must be an lvalue so use + // boolean ? lvalue : (throw-expr, lvalue) + return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) + : (std::__throw_out_of_range(__N("array::at")), + _AT_Type::_S_ref(_M_elems, 0)); + } + + reference + front() + { + __glibcxx_check_nonempty(); + return *begin(); + } + + constexpr const_reference + front() const + { + return _Nm ? _AT_Type::_S_ref(_M_elems, 0) + : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()), + _AT_Type::_S_ref(_M_elems, 0)); + } + + reference + back() + { + __glibcxx_check_nonempty(); + return _Nm ? *(end() - 1) : *end(); + } + + constexpr const_reference + back() const + { + return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) + : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()), + _AT_Type::_S_ref(_M_elems, 0)); + } + + 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)); } + }; + + // Array comparisons. + template + inline bool + operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return std::equal(__one.begin(), __one.end(), __two.begin()); } + + template + inline bool + operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one == __two); } + + template + inline bool + operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) + { + return std::lexicographical_compare(__a.begin(), __a.end(), + __b.begin(), __b.end()); + } + + template + inline bool + operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return __two < __one; } + + template + inline bool + operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one > __two); } + + template + inline bool + operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one < __two); } + + // Specialized algorithms. + template + inline void + swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) + noexcept(noexcept(__one.swap(__two))) + { __one.swap(__two); } + + template + constexpr _Tp& + get(array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + + template + constexpr _Tp&& + get(array<_Tp, _Nm>&& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return std::move(get<_Int>(__arr)); + } + + template + constexpr const _Tp& + get(const array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } +} // namespace __debug + + // Tuple interface to class template array. + + /// tuple_size + template + struct tuple_size<__debug::array<_Tp, _Nm>> + : public integral_constant { }; + + /// tuple_element + template + struct tuple_element<_Int, __debug::array<_Tp, _Nm>> + { + static_assert(_Int < _Nm, "index is out of bounds"); + typedef _Tp type; + }; +} // namespace std + +#endif // _GLIBCXX_DEBUG_ARRAY diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/bitset b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/bitset new file mode 100644 index 0000000..28d9184 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/bitset @@ -0,0 +1,426 @@ +// Debugging bitset implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/bitset + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_BITSET +#define _GLIBCXX_DEBUG_BITSET + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::bitset with additional safety/checking/debug instrumentation. + template + class bitset + : public _GLIBCXX_STD_C::bitset<_Nb> +#if __cplusplus < 201103L + , public __gnu_debug::_Safe_sequence_base +#endif + { + typedef _GLIBCXX_STD_C::bitset<_Nb> _Base; + + public: + // In C++0x we rely on normal reference type to preserve the property + // of bitset to be use as a literal. + // TODO: Find another solution. +#if __cplusplus >= 201103L + typedef typename _Base::reference reference; +#else + // bit reference: + class reference + : private _Base::reference + , public __gnu_debug::_Safe_iterator_base + { + typedef typename _Base::reference _Base_ref; + + friend class bitset; + reference(); + + reference(const _Base_ref& __base, + bitset* __seq __attribute__((__unused__))) _GLIBCXX_NOEXCEPT + : _Base_ref(__base) + , _Safe_iterator_base(__seq, false) + { } + + public: + reference(const reference& __x) _GLIBCXX_NOEXCEPT + : _Base_ref(__x) + , _Safe_iterator_base(__x, false) + { } + + reference& + operator=(bool __x) _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_write) + ._M_iterator(*this)); + *static_cast<_Base_ref*>(this) = __x; + return *this; + } + + reference& + operator=(const reference& __x) _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(! __x._M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_read) + ._M_iterator(__x)); + _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_write) + ._M_iterator(*this)); + *static_cast<_Base_ref*>(this) = __x; + return *this; + } + + bool + operator~() const _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_read) + ._M_iterator(*this)); + return ~(*static_cast(this)); + } + + operator bool() const _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_read) + ._M_iterator(*this)); + return *static_cast(this); + } + + reference& + flip() _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_flip) + ._M_iterator(*this)); + _Base_ref::flip(); + return *this; + } + }; +#endif + + // 23.3.5.1 constructors: + _GLIBCXX_CONSTEXPR bitset() _GLIBCXX_NOEXCEPT + : _Base() { } + +#if __cplusplus >= 201103L + constexpr bitset(unsigned long long __val) noexcept +#else + bitset(unsigned long __val) +#endif + : _Base(__val) { } + + template + explicit + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __pos = 0, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __n = (std::basic_string<_CharT, _Traits, _Alloc>::npos)) + : _Base(__str, __pos, __n) { } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + template + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __pos, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __n, + _CharT __zero, _CharT __one = _CharT('1')) + : _Base(__str, __pos, __n, __zero, __one) { } + + bitset(const _Base& __x) : _Base(__x) { } + +#if __cplusplus >= 201103L + template + explicit + bitset(const _CharT* __str, + typename std::basic_string<_CharT>::size_type __n + = std::basic_string<_CharT>::npos, + _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')) + : _Base(__str, __n, __zero, __one) { } +#endif + + // 23.3.5.2 bitset operations: + bitset<_Nb>& + operator&=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + _M_base() &= __rhs; + return *this; + } + + bitset<_Nb>& + operator|=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + _M_base() |= __rhs; + return *this; + } + + bitset<_Nb>& + operator^=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + _M_base() ^= __rhs; + return *this; + } + + bitset<_Nb>& + operator<<=(size_t __pos) _GLIBCXX_NOEXCEPT + { + _M_base() <<= __pos; + return *this; + } + + bitset<_Nb>& + operator>>=(size_t __pos) _GLIBCXX_NOEXCEPT + { + _M_base() >>= __pos; + return *this; + } + + bitset<_Nb>& + set() _GLIBCXX_NOEXCEPT + { + _Base::set(); + return *this; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 186. bitset::set() second parameter should be bool + bitset<_Nb>& + set(size_t __pos, bool __val = true) + { + _Base::set(__pos, __val); + return *this; + } + + bitset<_Nb>& + reset() _GLIBCXX_NOEXCEPT + { + _Base::reset(); + return *this; + } + + bitset<_Nb>& + reset(size_t __pos) + { + _Base::reset(__pos); + return *this; + } + + bitset<_Nb> + operator~() const _GLIBCXX_NOEXCEPT + { return bitset(~_M_base()); } + + bitset<_Nb>& + flip() _GLIBCXX_NOEXCEPT + { + _Base::flip(); + return *this; + } + + bitset<_Nb>& + flip(size_t __pos) + { + _Base::flip(__pos); + return *this; + } + + // element access: + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 11. Bitset minor problems + reference + operator[](size_t __pos) + { + __glibcxx_check_subscript(__pos); +#if __cplusplus >= 201103L + return _M_base()[__pos]; +#else + return reference(_M_base()[__pos], this); +#endif + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 11. Bitset minor problems + _GLIBCXX_CONSTEXPR bool + operator[](size_t __pos) const + { +#if __cplusplus < 201103L + // TODO: Check in debug-mode too. + __glibcxx_check_subscript(__pos); +#endif + return _Base::operator[](__pos); + } + + using _Base::to_ulong; +#if __cplusplus >= 201103L + using _Base::to_ullong; +#endif + + template + std::basic_string<_CharT, _Traits, _Alloc> + to_string() const + { return _M_base().template to_string<_CharT, _Traits, _Alloc>(); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + template + std::basic_string<_CharT, _Traits, _Alloc> + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { + return _M_base().template + to_string<_CharT, _Traits, _Alloc>(__zero, __one); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 434. bitset::to_string() hard to use. + template + std::basic_string<_CharT, _Traits, std::allocator<_CharT> > + to_string() const + { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 853. to_string needs updating with zero and one. + template + std::basic_string<_CharT, _Traits, std::allocator<_CharT> > + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { return to_string<_CharT, _Traits, + std::allocator<_CharT> >(__zero, __one); } + + template + std::basic_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> > + to_string() const + { + return to_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> >(); + } + + template + std::basic_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> > + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { + return to_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> >(__zero, __one); + } + + std::basic_string, std::allocator > + to_string() const + { + return to_string,std::allocator >(); + } + + std::basic_string, std::allocator > + to_string(char __zero, char __one = '1') const + { + return to_string, + std::allocator >(__zero, __one); + } + + using _Base::count; + using _Base::size; + + bool + operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return _M_base() == __rhs; } + + bool + operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return _M_base() != __rhs; } + + using _Base::test; + using _Base::all; + using _Base::any; + using _Base::none; + + bitset<_Nb> + operator<<(size_t __pos) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(_M_base() << __pos); } + + bitset<_Nb> + operator>>(size_t __pos) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(_M_base() >> __pos); } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT + { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT + { return *this; } + }; + + template + bitset<_Nb> + operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(__x) &= __y; } + + template + bitset<_Nb> + operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(__x) |= __y; } + + template + bitset<_Nb> + operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(__x) ^= __y; } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) + { return __is >> __x._M_base(); } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const bitset<_Nb>& __x) + { return __os << __x._M_base(); } + +} // namespace __debug + +#if __cplusplus >= 201103L + // DR 1182. + /// std::hash specialization for bitset. + template + struct hash<__debug::bitset<_Nb>> + : public __hash_base> + { + size_t + operator()(const __debug::bitset<_Nb>& __b) const noexcept + { return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); } + }; +#endif + +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/debug.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/debug.h new file mode 100644 index 0000000..99af42e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/debug.h @@ -0,0 +1,131 @@ +// Debugging support implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/debug.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MACRO_SWITCH_H +#define _GLIBCXX_DEBUG_MACRO_SWITCH_H 1 + +/** Macros and namespaces used by the implementation outside of debug + * wrappers to verify certain properties. The __glibcxx_requires_xxx + * macros are merely wrappers around the __glibcxx_check_xxx wrappers + * when we are compiling with debug mode, but disappear when we are + * in release mode so that there is no checking performed in, e.g., + * the standard library algorithms. +*/ + +// Debug mode namespaces. + +/** + * @namespace std::__debug + * @brief GNU debug code, replaces standard behavior with debug behavior. + */ +namespace std +{ + namespace __debug { } +} + +/** @namespace __gnu_debug + * @brief GNU debug classes for public use. +*/ +namespace __gnu_debug +{ + using namespace std::__debug; +} + +#ifndef _GLIBCXX_DEBUG + +# define _GLIBCXX_DEBUG_ASSERT(_Condition) +# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) +# define _GLIBCXX_DEBUG_ONLY(_Statement) ; +# define __glibcxx_requires_cond(_Cond,_Msg) +# define __glibcxx_requires_valid_range(_First,_Last) +# define __glibcxx_requires_non_empty_range(_First,_Last) +# define __glibcxx_requires_sorted(_First,_Last) +# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred) +# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) +# define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred) +# define __glibcxx_requires_partitioned_lower(_First,_Last,_Value) +# define __glibcxx_requires_partitioned_upper(_First,_Last,_Value) +# define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred) +# define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred) +# define __glibcxx_requires_heap(_First,_Last) +# define __glibcxx_requires_heap_pred(_First,_Last,_Pred) +# define __glibcxx_requires_nonempty() +# define __glibcxx_requires_string(_String) +# define __glibcxx_requires_string_len(_String,_Len) +# define __glibcxx_requires_subscript(_N) + +#else + +# include + +#define _GLIBCXX_DEBUG_ASSERT(_Condition) __glibcxx_assert(_Condition) + +#ifdef _GLIBCXX_DEBUG_PEDANTIC +# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) _GLIBCXX_DEBUG_ASSERT(_Condition) +#else +# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) +#endif + +# define _GLIBCXX_DEBUG_ONLY(_Statement) _Statement + +# define __glibcxx_requires_cond(_Cond,_Msg) _GLIBCXX_DEBUG_VERIFY(_Cond,_Msg) +# define __glibcxx_requires_valid_range(_First,_Last) \ + __glibcxx_check_valid_range(_First,_Last) +# define __glibcxx_requires_non_empty_range(_First,_Last) \ + __glibcxx_check_non_empty_range(_First,_Last) +# define __glibcxx_requires_sorted(_First,_Last) \ + __glibcxx_check_sorted(_First,_Last) +# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred) \ + __glibcxx_check_sorted_pred(_First,_Last,_Pred) +# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) \ + __glibcxx_check_sorted_set(_First1,_Last1,_First2) +# define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred) \ + __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred) +# define __glibcxx_requires_partitioned_lower(_First,_Last,_Value) \ + __glibcxx_check_partitioned_lower(_First,_Last,_Value) +# define __glibcxx_requires_partitioned_upper(_First,_Last,_Value) \ + __glibcxx_check_partitioned_upper(_First,_Last,_Value) +# define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred) \ + __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred) +# define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred) \ + __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred) +# define __glibcxx_requires_heap(_First,_Last) \ + __glibcxx_check_heap(_First,_Last) +# define __glibcxx_requires_heap_pred(_First,_Last,_Pred) \ + __glibcxx_check_heap_pred(_First,_Last,_Pred) +# define __glibcxx_requires_nonempty() __glibcxx_check_nonempty() +# define __glibcxx_requires_string(_String) __glibcxx_check_string(_String) +# define __glibcxx_requires_string_len(_String,_Len) \ + __glibcxx_check_string_len(_String,_Len) +# define __glibcxx_requires_subscript(_N) __glibcxx_check_subscript(_N) + +# include + +#endif + +#endif // _GLIBCXX_DEBUG_MACRO_SWITCH_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/deque b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/deque new file mode 100644 index 0000000..8442ec1 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/deque @@ -0,0 +1,579 @@ +// Debugging deque implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/deque + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_DEQUE +#define _GLIBCXX_DEBUG_DEQUE 1 + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::deque with safety/checking/debug instrumentation. + template > + class deque + : public _GLIBCXX_STD_C::deque<_Tp, _Allocator>, + public __gnu_debug::_Safe_sequence > + { + typedef _GLIBCXX_STD_C::deque<_Tp, _Allocator> _Base; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator,deque> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,deque> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef _Allocator allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.2.1.1 construct/copy/destroy: + explicit + deque(const _Allocator& __a = _Allocator()) + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + deque(size_type __n) + : _Base(__n) { } + + deque(size_type __n, const _Tp& __value, + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#else + explicit + deque(size_type __n, const _Tp& __value = _Tp(), + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + deque(_InputIterator __first, _InputIterator __last, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a) + { } + + deque(const deque& __x) + : _Base(__x) { } + + deque(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus >= 201103L + deque(deque&& __x) + : _Base(std::move(__x)) + { this->_M_swap(__x); } + + deque(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__l, __a) { } +#endif + + ~deque() _GLIBCXX_NOEXCEPT { } + + deque& + operator=(const deque& __x) + { + *static_cast<_Base*>(this) = __x; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + deque& + operator=(deque&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + deque& + operator=(initializer_list __l) + { + *static_cast<_Base*>(this) = __l; + this->_M_invalidate_all(); + return *this; + } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + assign(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::assign(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + this->_M_invalidate_all(); + } + + void + assign(size_type __n, const _Tp& __t) + { + _Base::assign(__n, __t); + this->_M_invalidate_all(); + } + +#if __cplusplus >= 201103L + void + assign(initializer_list __l) + { + _Base::assign(__l); + this->_M_invalidate_all(); + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + private: + void + _M_invalidate_after_nth(difference_type __n) + { + typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth; + this->_M_invalidate_if(_After_nth(__n, _Base::begin())); + } + + public: + // 23.2.1.2 capacity: + using _Base::size; + using _Base::max_size; + +#if __cplusplus >= 201103L + void + resize(size_type __sz) + { + bool __invalidate_all = __sz > this->size(); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + + _Base::resize(__sz); + + if (__invalidate_all) + this->_M_invalidate_all(); + } + + void + resize(size_type __sz, const _Tp& __c) + { + bool __invalidate_all = __sz > this->size(); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + + _Base::resize(__sz, __c); + + if (__invalidate_all) + this->_M_invalidate_all(); + } +#else + void + resize(size_type __sz, _Tp __c = _Tp()) + { + bool __invalidate_all = __sz > this->size(); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + + _Base::resize(__sz, __c); + + if (__invalidate_all) + this->_M_invalidate_all(); + } +#endif + +#if __cplusplus >= 201103L + void + shrink_to_fit() + { + if (_Base::_M_shrink_to_fit()) + this->_M_invalidate_all(); + } +#endif + + using _Base::empty; + + // element access: + reference + operator[](size_type __n) + { + __glibcxx_check_subscript(__n); + return _M_base()[__n]; + } + + const_reference + operator[](size_type __n) const + { + __glibcxx_check_subscript(__n); + return _M_base()[__n]; + } + + using _Base::at; + + reference + front() + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + const_reference + front() const + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + reference + back() + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + const_reference + back() const + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + // 23.2.1.3 modifiers: + void + push_front(const _Tp& __x) + { + _Base::push_front(__x); + this->_M_invalidate_all(); + } + + void + push_back(const _Tp& __x) + { + _Base::push_back(__x); + this->_M_invalidate_all(); + } + +#if __cplusplus >= 201103L + void + push_front(_Tp&& __x) + { emplace_front(std::move(__x)); } + + void + push_back(_Tp&& __x) + { emplace_back(std::move(__x)); } + + template + void + emplace_front(_Args&&... __args) + { + _Base::emplace_front(std::forward<_Args>(__args)...); + this->_M_invalidate_all(); + } + + template + void + emplace_back(_Args&&... __args) + { + _Base::emplace_back(std::forward<_Args>(__args)...); + this->_M_invalidate_all(); + } + + template + iterator + emplace(iterator __position, _Args&&... __args) + { + __glibcxx_check_insert(__position); + _Base_iterator __res = _Base::emplace(__position.base(), + std::forward<_Args>(__args)...); + this->_M_invalidate_all(); + return iterator(__res, this); + } +#endif + + iterator + insert(iterator __position, const _Tp& __x) + { + __glibcxx_check_insert(__position); + _Base_iterator __res = _Base::insert(__position.base(), __x); + this->_M_invalidate_all(); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + iterator + insert(iterator __position, _Tp&& __x) + { return emplace(__position, std::move(__x)); } + + void + insert(iterator __p, initializer_list __l) + { + _Base::insert(__p, __l); + this->_M_invalidate_all(); + } +#endif + + void + insert(iterator __position, size_type __n, const _Tp& __x) + { + __glibcxx_check_insert(__position); + _Base::insert(__position.base(), __n, __x); + this->_M_invalidate_all(); + } + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + insert(iterator __position, + _InputIterator __first, _InputIterator __last) + { + __glibcxx_check_insert_range(__position, __first, __last); + _Base::insert(__position.base(), __gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + this->_M_invalidate_all(); + } + + void + pop_front() + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(_Base::begin())); + _Base::pop_front(); + } + + void + pop_back() + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(--_Base::end())); + _Base::pop_back(); + } + + iterator + erase(iterator __position) + { + __glibcxx_check_erase(__position); + _Base_iterator __victim = __position.base(); + if (__victim == _Base::begin() || __victim == _Base::end()-1) + { + this->_M_invalidate_if(_Equal(__victim)); + return iterator(_Base::erase(__victim), this); + } + else + { + _Base_iterator __res = _Base::erase(__victim); + this->_M_invalidate_all(); + return iterator(__res, this); + } + } + + iterator + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + + if (__first.base() == __last.base()) + return __first; + else if (__first.base() == _Base::begin() + || __last.base() == _Base::end()) + { + this->_M_detach_singular(); + for (_Base_iterator __position = __first.base(); + __position != __last.base(); ++__position) + { + this->_M_invalidate_if(_Equal(__position)); + } + __try + { + return iterator(_Base::erase(__first.base(), __last.base()), + this); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } + else + { + _Base_iterator __res = _Base::erase(__first.base(), + __last.base()); + this->_M_invalidate_all(); + return iterator(__res, this); + } + } + + void + swap(deque& __x) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + _Base::clear(); + this->_M_invalidate_all(); + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + }; + + template + inline bool + operator==(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs) + { __lhs.swap(__rhs); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/formatter.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/formatter.h new file mode 100644 index 0000000..4c65e1a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/formatter.h @@ -0,0 +1,462 @@ +// Debug-mode error formatting implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/formatter.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_FORMATTER_H +#define _GLIBCXX_DEBUG_FORMATTER_H 1 + +#include +#include +#include + +namespace __gnu_debug +{ + using std::type_info; + + template + bool __check_singular(_Iterator&); + + class _Safe_sequence_base; + + template + class _Safe_iterator; + + template + class _Safe_local_iterator; + + template + class _Safe_sequence; + + enum _Debug_msg_id + { + // General checks + __msg_valid_range, + __msg_insert_singular, + __msg_insert_different, + __msg_erase_bad, + __msg_erase_different, + __msg_subscript_oob, + __msg_empty, + __msg_unpartitioned, + __msg_unpartitioned_pred, + __msg_unsorted, + __msg_unsorted_pred, + __msg_not_heap, + __msg_not_heap_pred, + // std::bitset checks + __msg_bad_bitset_write, + __msg_bad_bitset_read, + __msg_bad_bitset_flip, + // std::list checks + __msg_self_splice, + __msg_splice_alloc, + __msg_splice_bad, + __msg_splice_other, + __msg_splice_overlap, + // iterator checks + __msg_init_singular, + __msg_init_copy_singular, + __msg_init_const_singular, + __msg_copy_singular, + __msg_bad_deref, + __msg_bad_inc, + __msg_bad_dec, + __msg_iter_subscript_oob, + __msg_advance_oob, + __msg_retreat_oob, + __msg_iter_compare_bad, + __msg_compare_different, + __msg_iter_order_bad, + __msg_order_different, + __msg_distance_bad, + __msg_distance_different, + // istream_iterator + __msg_deref_istream, + __msg_inc_istream, + // ostream_iterator + __msg_output_ostream, + // istreambuf_iterator + __msg_deref_istreambuf, + __msg_inc_istreambuf, + // forward_list + __msg_insert_after_end, + __msg_erase_after_bad, + __msg_valid_range2, + // unordered container local iterators + __msg_local_iter_compare_bad, + __msg_non_empty_range, + // self move assign + __msg_self_move_assign, + // unordered container buckets + __msg_bucket_index_oob, + __msg_valid_load_factor, + __msg_equal_allocs + }; + + class _Error_formatter + { + /// Whether an iterator is constant, mutable, or unknown + enum _Constness + { + __unknown_constness, + __const_iterator, + __mutable_iterator, + __last_constness + }; + + // The state of the iterator (fine-grained), if we know it. + enum _Iterator_state + { + __unknown_state, + __singular, // singular, may still be attached to a sequence + __begin, // dereferenceable, and at the beginning + __middle, // dereferenceable, not at the beginning + __end, // past-the-end, may be at beginning if sequence empty + __before_begin, // before begin + __last_state + }; + + // Tags denoting the type of parameter for construction + struct _Is_iterator { }; + struct _Is_sequence { }; + + // A parameter that may be referenced by an error message + struct _Parameter + { + enum + { + __unused_param, + __iterator, + __sequence, + __integer, + __string + } _M_kind; + + union + { + // When _M_kind == __iterator + struct + { + const char* _M_name; + const void* _M_address; + const type_info* _M_type; + _Constness _M_constness; + _Iterator_state _M_state; + const void* _M_sequence; + const type_info* _M_seq_type; + } _M_iterator; + + // When _M_kind == __sequence + struct + { + const char* _M_name; + const void* _M_address; + const type_info* _M_type; + } _M_sequence; + + // When _M_kind == __integer + struct + { + const char* _M_name; + long _M_value; + } _M_integer; + + // When _M_kind == __string + struct + { + const char* _M_name; + const char* _M_value; + } _M_string; + } _M_variant; + + _Parameter() : _M_kind(__unused_param), _M_variant() { } + + _Parameter(long __value, const char* __name) + : _M_kind(__integer), _M_variant() + { + _M_variant._M_integer._M_name = __name; + _M_variant._M_integer._M_value = __value; + } + + _Parameter(const char* __value, const char* __name) + : _M_kind(__string), _M_variant() + { + _M_variant._M_string._M_name = __name; + _M_variant._M_string._M_value = __value; + } + + template + _Parameter(const _Safe_iterator<_Iterator, _Sequence>& __it, + const char* __name, _Is_iterator) + : _M_kind(__iterator), _M_variant() + { + _M_variant._M_iterator._M_name = __name; + _M_variant._M_iterator._M_address = &__it; +#ifdef __GXX_RTTI + _M_variant._M_iterator._M_type = &typeid(__it); +#else + _M_variant._M_iterator._M_type = 0; +#endif + _M_variant._M_iterator._M_constness = + std::__are_same<_Safe_iterator<_Iterator, _Sequence>, + typename _Sequence::iterator>:: + __value ? __mutable_iterator : __const_iterator; + _M_variant._M_iterator._M_sequence = __it._M_get_sequence(); +#ifdef __GXX_RTTI + _M_variant._M_iterator._M_seq_type = &typeid(_Sequence); +#else + _M_variant._M_iterator._M_seq_type = 0; +#endif + + if (__it._M_singular()) + _M_variant._M_iterator._M_state = __singular; + else + { + if (__it._M_is_before_begin()) + _M_variant._M_iterator._M_state = __before_begin; + else if (__it._M_is_end()) + _M_variant._M_iterator._M_state = __end; + else if (__it._M_is_begin()) + _M_variant._M_iterator._M_state = __begin; + else + _M_variant._M_iterator._M_state = __middle; + } + } + + template + _Parameter(const _Safe_local_iterator<_Iterator, _Sequence>& __it, + const char* __name, _Is_iterator) + : _M_kind(__iterator), _M_variant() + { + _M_variant._M_iterator._M_name = __name; + _M_variant._M_iterator._M_address = &__it; +#ifdef __GXX_RTTI + _M_variant._M_iterator._M_type = &typeid(__it); +#else + _M_variant._M_iterator._M_type = 0; +#endif + _M_variant._M_iterator._M_constness = + std::__are_same<_Safe_local_iterator<_Iterator, _Sequence>, + typename _Sequence::local_iterator>:: + __value ? __mutable_iterator : __const_iterator; + _M_variant._M_iterator._M_sequence = __it._M_get_sequence(); +#ifdef __GXX_RTTI + _M_variant._M_iterator._M_seq_type = &typeid(_Sequence); +#else + _M_variant._M_iterator._M_seq_type = 0; +#endif + + if (__it._M_singular()) + _M_variant._M_iterator._M_state = __singular; + else + { + if (__it._M_is_end()) + _M_variant._M_iterator._M_state = __end; + else if (__it._M_is_begin()) + _M_variant._M_iterator._M_state = __begin; + else + _M_variant._M_iterator._M_state = __middle; + } + } + + template + _Parameter(const _Type*& __it, const char* __name, _Is_iterator) + : _M_kind(__iterator), _M_variant() + { + _M_variant._M_iterator._M_name = __name; + _M_variant._M_iterator._M_address = &__it; +#ifdef __GXX_RTTI + _M_variant._M_iterator._M_type = &typeid(__it); +#else + _M_variant._M_iterator._M_type = 0; +#endif + _M_variant._M_iterator._M_constness = __mutable_iterator; + _M_variant._M_iterator._M_state = __it? __unknown_state : __singular; + _M_variant._M_iterator._M_sequence = 0; + _M_variant._M_iterator._M_seq_type = 0; + } + + template + _Parameter(_Type*& __it, const char* __name, _Is_iterator) + : _M_kind(__iterator), _M_variant() + { + _M_variant._M_iterator._M_name = __name; + _M_variant._M_iterator._M_address = &__it; +#ifdef __GXX_RTTI + _M_variant._M_iterator._M_type = &typeid(__it); +#else + _M_variant._M_iterator._M_type = 0; +#endif + _M_variant._M_iterator._M_constness = __const_iterator; + _M_variant._M_iterator._M_state = __it? __unknown_state : __singular; + _M_variant._M_iterator._M_sequence = 0; + _M_variant._M_iterator._M_seq_type = 0; + } + + template + _Parameter(const _Iterator& __it, const char* __name, _Is_iterator) + : _M_kind(__iterator), _M_variant() + { + _M_variant._M_iterator._M_name = __name; + _M_variant._M_iterator._M_address = &__it; +#ifdef __GXX_RTTI + _M_variant._M_iterator._M_type = &typeid(__it); +#else + _M_variant._M_iterator._M_type = 0; +#endif + _M_variant._M_iterator._M_constness = __unknown_constness; + _M_variant._M_iterator._M_state = + __gnu_debug::__check_singular(__it)? __singular : __unknown_state; + _M_variant._M_iterator._M_sequence = 0; + _M_variant._M_iterator._M_seq_type = 0; + } + + template + _Parameter(const _Safe_sequence<_Sequence>& __seq, + const char* __name, _Is_sequence) + : _M_kind(__sequence), _M_variant() + { + _M_variant._M_sequence._M_name = __name; + _M_variant._M_sequence._M_address = + static_cast(&__seq); +#ifdef __GXX_RTTI + _M_variant._M_sequence._M_type = &typeid(_Sequence); +#else + _M_variant._M_sequence._M_type = 0; +#endif + } + + template + _Parameter(const _Sequence& __seq, const char* __name, _Is_sequence) + : _M_kind(__sequence), _M_variant() + { + _M_variant._M_sequence._M_name = __name; + _M_variant._M_sequence._M_address = &__seq; +#ifdef __GXX_RTTI + _M_variant._M_sequence._M_type = &typeid(_Sequence); +#else + _M_variant._M_sequence._M_type = 0; +#endif + } + + void + _M_print_field(const _Error_formatter* __formatter, + const char* __name) const; + + void + _M_print_description(const _Error_formatter* __formatter) const; + }; + + friend struct _Parameter; + + public: + template + const _Error_formatter& + _M_iterator(const _Iterator& __it, const char* __name = 0) const + { + if (_M_num_parameters < std::size_t(__max_parameters)) + _M_parameters[_M_num_parameters++] = _Parameter(__it, __name, + _Is_iterator()); + return *this; + } + + const _Error_formatter& + _M_integer(long __value, const char* __name = 0) const + { + if (_M_num_parameters < std::size_t(__max_parameters)) + _M_parameters[_M_num_parameters++] = _Parameter(__value, __name); + return *this; + } + + const _Error_formatter& + _M_string(const char* __value, const char* __name = 0) const + { + if (_M_num_parameters < std::size_t(__max_parameters)) + _M_parameters[_M_num_parameters++] = _Parameter(__value, __name); + return *this; + } + + template + const _Error_formatter& + _M_sequence(const _Sequence& __seq, const char* __name = 0) const + { + if (_M_num_parameters < std::size_t(__max_parameters)) + _M_parameters[_M_num_parameters++] = _Parameter(__seq, __name, + _Is_sequence()); + return *this; + } + + const _Error_formatter& + _M_message(const char* __text) const + { _M_text = __text; return *this; } + + const _Error_formatter& + _M_message(_Debug_msg_id __id) const throw (); + + _GLIBCXX_NORETURN void + _M_error() const; + + private: + _Error_formatter(const char* __file, std::size_t __line) + : _M_file(__file), _M_line(__line), _M_num_parameters(0), _M_text(0), + _M_max_length(78), _M_column(1), _M_first_line(true), _M_wordwrap(false) + { _M_get_max_length(); } + + template + void + _M_format_word(char*, int, const char*, _Tp) const throw (); + + void + _M_print_word(const char* __word) const; + + void + _M_print_string(const char* __string) const; + + void + _M_get_max_length() const throw (); + + enum { __max_parameters = 9 }; + + const char* _M_file; + std::size_t _M_line; + mutable _Parameter _M_parameters[__max_parameters]; + mutable std::size_t _M_num_parameters; + mutable const char* _M_text; + mutable std::size_t _M_max_length; + enum { _M_indent = 4 } ; + mutable std::size_t _M_column; + mutable bool _M_first_line; + mutable bool _M_wordwrap; + + public: + static _Error_formatter + _M_at(const char* __file, std::size_t __line) + { return _Error_formatter(__file, __line); } + }; +} // namespace __gnu_debug + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/forward_list b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/forward_list new file mode 100644 index 0000000..90a2e9c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/forward_list @@ -0,0 +1,801 @@ +// -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/forward_list + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_FORWARD_LIST +#define _GLIBCXX_DEBUG_FORWARD_LIST 1 + +#pragma GCC system_header + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::forward_list with safety/checking/debug instrumentation. + template > + class forward_list + : public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc>, + public __gnu_debug::_Safe_sequence > + { + typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> _Base; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + + typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template + rebind<_GLIBCXX_STD_C::_Fwd_list_node<_Tp>>::other _Node_alloc_type; + + typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits; + + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, + forward_list> iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, + forward_list> const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef _Alloc allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + + // 23.2.3.1 construct/copy/destroy: + explicit + forward_list(const _Alloc& __al = _Alloc()) + : _Base(__al) { } + + forward_list(const forward_list& __list, const _Alloc& __al) + : _Base(__list, __al) + { } + + forward_list(forward_list&& __list, const _Alloc& __al) + : _Base(std::move(__list._M_base()), __al) + { + if (__list.get_allocator() == __al) + this->_M_swap(__list); + else + __list._M_invalidate_all(); + } + + explicit + forward_list(size_type __n, const _Alloc& __al = _Alloc()) + : _Base(__n, __al) + { } + + forward_list(size_type __n, const _Tp& __value, + const _Alloc& __al = _Alloc()) + : _Base(__n, __value, __al) + { } + + template> + forward_list(_InputIterator __first, _InputIterator __last, + const _Alloc& __al = _Alloc()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __al) + { } + + forward_list(const forward_list& __list) + : _Base(__list) + { } + + forward_list(forward_list&& __list) noexcept + : _Base(std::move(__list._M_base())) + { + this->_M_swap(__list); + } + + forward_list(std::initializer_list<_Tp> __il, + const _Alloc& __al = _Alloc()) + : _Base(__il, __al) + { } + + ~forward_list() noexcept + { } + + forward_list& + operator=(const forward_list& __list) + { + static_cast<_Base&>(*this) = __list; + this->_M_invalidate_all(); + return *this; + } + + forward_list& + operator=(forward_list&& __list) + noexcept(_Node_alloc_traits::_S_nothrow_move()) + { + __glibcxx_check_self_move_assign(__list); + bool xfer_memory = _Node_alloc_traits::_S_propagate_on_move_assign() + || __list.get_allocator() == this->get_allocator(); + static_cast<_Base&>(*this) = std::move(__list); + if (xfer_memory) + this->_M_swap(__list); + else + this->_M_invalidate_all(); + __list._M_invalidate_all(); + return *this; + } + + forward_list& + operator=(std::initializer_list<_Tp> __il) + { + static_cast<_Base&>(*this) = __il; + this->_M_invalidate_all(); + return *this; + } + + template> + void + assign(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::assign(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + this->_M_invalidate_all(); + } + + void + assign(size_type __n, const _Tp& __val) + { + _Base::assign(__n, __val); + this->_M_invalidate_all(); + } + + void + assign(std::initializer_list<_Tp> __il) + { + _Base::assign(__il); + this->_M_invalidate_all(); + } + + using _Base::get_allocator; + + // iterators: + + iterator + before_begin() noexcept + { return iterator(_Base::before_begin(), this); } + + const_iterator + before_begin() const noexcept + { return const_iterator(_Base::before_begin(), this); } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::cbegin(), this); } + + const_iterator + cbefore_begin() const noexcept + { return const_iterator(_Base::cbefore_begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::cend(), this); } + + using _Base::empty; + using _Base::max_size; + + // element access: + + reference + front() + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + const_reference + front() const + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + // modiï¬ers: + + using _Base::emplace_front; + using _Base::push_front; + + void + pop_front() + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if([this](_Base_const_iterator __it) + { return __it == this->_M_base().cbegin(); }); + _Base::pop_front(); + } + + template + iterator + emplace_after(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::emplace_after(__pos.base(), + std::forward<_Args>(__args)...), + this); + } + + iterator + insert_after(const_iterator __pos, const _Tp& __val) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::insert_after(__pos.base(), __val), this); + } + + iterator + insert_after(const_iterator __pos, _Tp&& __val) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::insert_after(__pos.base(), std::move(__val)), + this); + } + + iterator + insert_after(const_iterator __pos, size_type __n, const _Tp& __val) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::insert_after(__pos.base(), __n, __val), + this); + } + + template> + iterator + insert_after(const_iterator __pos, + _InputIterator __first, _InputIterator __last) + { + __glibcxx_check_insert_range_after(__pos, __first, __last); + return iterator(_Base::insert_after(__pos.base(), + __gnu_debug::__base(__first), + __gnu_debug::__base(__last)), + this); + } + + iterator + insert_after(const_iterator __pos, std::initializer_list<_Tp> __il) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::insert_after(__pos.base(), __il), this); + } + + private: + _Base_iterator + _M_erase_after(_Base_const_iterator __pos) + { + _Base_const_iterator __next = std::next(__pos); + this->_M_invalidate_if([__next](_Base_const_iterator __it) + { return __it == __next; }); + return _Base::erase_after(__pos); + } + public: + iterator + erase_after(const_iterator __pos) + { + __glibcxx_check_erase_after(__pos); + return iterator(_M_erase_after(__pos.base()), this); + } + + iterator + erase_after(const_iterator __pos, const_iterator __last) + { + __glibcxx_check_erase_range_after(__pos, __last); + for (_Base_const_iterator __victim = std::next(__pos.base()); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range2) + ._M_sequence(*this, "this") + ._M_iterator(__pos, "pos") + ._M_iterator(__last, "last")); + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + } + return iterator(_Base::erase_after(__pos.base(), __last.base()), this); + } + + void + swap(forward_list& __list) + noexcept(_Node_alloc_traits::_S_nothrow_swap()) + { + if (!_Node_alloc_traits::_S_propagate_on_swap()) + __glibcxx_check_equal_allocs(__list); + _Base::swap(__list); + this->_M_swap(__list); + } + + void + resize(size_type __sz) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin+__sz, end() + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + } + + __try + { + _Base::resize(__sz); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } + + void + resize(size_type __sz, const value_type& __val) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin+__sz, end()) + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + } + + __try + { + _Base::resize(__sz, __val); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + // 23.2.3.5 forward_list operations: + void + splice_after(const_iterator __pos, forward_list&& __list) + { + __glibcxx_check_insert_after(__pos); + _GLIBCXX_DEBUG_VERIFY(&__list != this, + _M_message(__gnu_debug::__msg_self_splice) + ._M_sequence(*this, "this")); + _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(), + _M_message(__gnu_debug::__msg_splice_alloc) + ._M_sequence(*this) + ._M_sequence(__list, "__list")); + this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it) + { + return __it != __list._M_base().cbefore_begin() + && __it != __list._M_base().end(); + }); + _Base::splice_after(__pos.base(), std::move(__list._M_base())); + } + + void + splice_after(const_iterator __pos, forward_list& __list) + { splice_after(__pos, std::move(__list)); } + + void + splice_after(const_iterator __pos, forward_list&& __list, + const_iterator __i) + { + __glibcxx_check_insert_after(__pos); + _GLIBCXX_DEBUG_VERIFY(__i._M_before_dereferenceable(), + _M_message(__gnu_debug::__msg_splice_bad) + ._M_iterator(__i, "__i")); + _GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(&__list), + _M_message(__gnu_debug::__msg_splice_other) + ._M_iterator(__i, "__i") + ._M_sequence(__list, "__list")); + _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(), + _M_message(__gnu_debug::__msg_splice_alloc) + ._M_sequence(*this) + ._M_sequence(__list, "__list")); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 250. splicing invalidates iterators + _Base_const_iterator __next = std::next(__i.base()); + this->_M_transfer_from_if(__list, [__next](_Base_const_iterator __it) + { return __it == __next; }); + _Base::splice_after(__pos.base(), std::move(__list._M_base()), + __i.base()); + } + + void + splice_after(const_iterator __pos, forward_list& __list, + const_iterator __i) + { splice_after(__pos, std::move(__list), __i); } + + void + splice_after(const_iterator __pos, forward_list&& __list, + const_iterator __before, const_iterator __last) + { + __glibcxx_check_insert_after(__pos); + __glibcxx_check_valid_range(__before, __last); + _GLIBCXX_DEBUG_VERIFY(__before._M_attached_to(&__list), + _M_message(__gnu_debug::__msg_splice_other) + ._M_sequence(__list, "list") + ._M_iterator(__before, "before")); + _GLIBCXX_DEBUG_VERIFY(__before._M_dereferenceable() + || __before._M_is_before_begin(), + _M_message(__gnu_debug::__msg_valid_range2) + ._M_sequence(__list, "list") + ._M_iterator(__before, "before") + ._M_iterator(__last, "last")); + _GLIBCXX_DEBUG_VERIFY(__before != __last, + _M_message(__gnu_debug::__msg_valid_range2) + ._M_sequence(__list, "list") + ._M_iterator(__before, "before") + ._M_iterator(__last, "last")); + _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(), + _M_message(__gnu_debug::__msg_splice_alloc) + ._M_sequence(*this) + ._M_sequence(__list, "__list")); + + for (_Base_const_iterator __tmp = std::next(__before.base()); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != __list._M_base().end(), + _M_message(__gnu_debug::__msg_valid_range2) + ._M_sequence(__list, "list") + ._M_iterator(__before, "before") + ._M_iterator(__last, "last")); + _GLIBCXX_DEBUG_VERIFY(&__list != this || __tmp != __pos.base(), + _M_message(__gnu_debug::__msg_splice_overlap) + ._M_iterator(__tmp, "position") + ._M_iterator(__before, "before") + ._M_iterator(__last, "last")); + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 250. splicing invalidates iterators + this->_M_transfer_from_if(__list, [__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + } + + _Base::splice_after(__pos.base(), std::move(__list._M_base()), + __before.base(), __last.base()); + } + + void + splice_after(const_iterator __pos, forward_list& __list, + const_iterator __before, const_iterator __last) + { splice_after(__pos, std::move(__list), __before, __last); } + + void + remove(const _Tp& __val) + { + _Base_iterator __x = _Base::before_begin(); + _Base_iterator __old = __x++; + while (__x != _Base::end()) + { + if (*__x == __val) + __x = _M_erase_after(__old); + else + __old = __x++; + } + } + + template + void + remove_if(_Pred __pred) + { + _Base_iterator __x = _Base::before_begin(); + _Base_iterator __old = __x++; + while (__x != _Base::end()) + { + if (__pred(*__x)) + __x = _M_erase_after(__old); + else + __old = __x++; + } + } + + void + unique() + { + _Base_iterator __first = _Base::begin(); + _Base_iterator __last = _Base::end(); + if (__first == __last) + return; + _Base_iterator __next = std::next(__first); + while (__next != __last) + { + if (*__first == *__next) + __next = _M_erase_after(__first); + else + __first = __next++; + } + } + + template + void + unique(_BinPred __binary_pred) + { + _Base_iterator __first = _Base::begin(); + _Base_iterator __last = _Base::end(); + if (__first == __last) + return; + _Base_iterator __next = std::next(__first); + while (__next != __last) + { + if (__binary_pred(*__first, *__next)) + __next = _M_erase_after(__first); + else + __first = __next++; + } + } + + void + merge(forward_list&& __list) + { + if (this != &__list) + { + __glibcxx_check_sorted(_Base::begin(), _Base::end()); + __glibcxx_check_sorted(__list._M_base().begin(), + __list._M_base().end()); + this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it) + { + return __it != __list._M_base().cbefore_begin() + && __it != __list._M_base().cend(); + }); + _Base::merge(std::move(__list._M_base())); + } + } + + void + merge(forward_list& __list) + { merge(std::move(__list)); } + + template + void + merge(forward_list&& __list, _Comp __comp) + { + if (this != &__list) + { + __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), __comp); + __glibcxx_check_sorted_pred(__list._M_base().begin(), + __list._M_base().end(), __comp); + this->_M_transfer_from_if(__list, + [&__list](_Base_const_iterator __it) + { + return __it != __list._M_base().cbefore_begin() + && __it != __list._M_base().cend(); + }); + _Base::merge(std::move(__list._M_base()), __comp); + } + } + + template + void + merge(forward_list& __list, _Comp __comp) + { merge(std::move(__list), __comp); } + + using _Base::sort; + using _Base::reverse; + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + private: + void + _M_invalidate_all() + { + this->_M_invalidate_if([this](_Base_const_iterator __it) + { + return __it != this->_M_base().cbefore_begin() + && __it != this->_M_base().cend(); + }); + } + typedef __gnu_debug::_Safe_iterator_base _Safe_iterator_base; + static void + _M_swap_aux(forward_list& __lhs, + _Safe_iterator_base*& __lhs_iterators, + forward_list& __rhs, + _Safe_iterator_base*& __rhs_iterators); + void _M_swap(forward_list& __list); + }; + + template + void + forward_list<_Tp, _Alloc>:: + _M_swap_aux(forward_list<_Tp, _Alloc>& __lhs, + __gnu_debug::_Safe_iterator_base*& __lhs_iterators, + forward_list<_Tp, _Alloc>& __rhs, + __gnu_debug::_Safe_iterator_base*& __rhs_iterators) + { + using __gnu_debug::_Safe_iterator_base; + _Safe_iterator_base* __bbegin_its = 0; + _Safe_iterator_base* __last_bbegin = 0; + for (_Safe_iterator_base* __iter = __lhs_iterators; __iter;) + { + // Even iterator are casted to const_iterator, not a problem. + const_iterator* __victim = static_cast(__iter); + __iter = __iter->_M_next; + if (__victim->base() == __rhs._M_base().cbefore_begin()) + { + __victim->_M_unlink(); + if (__lhs_iterators == __victim) + __lhs_iterators = __victim->_M_next; + if (__bbegin_its) + { + __victim->_M_next = __bbegin_its; + __bbegin_its->_M_prior = __victim; + } + else + __last_bbegin = __victim; + __bbegin_its = __victim; + } + else + __victim->_M_sequence = &__lhs; + } + + if (__bbegin_its) + { + if (__rhs_iterators) + { + __rhs_iterators->_M_prior = __last_bbegin; + __last_bbegin->_M_next = __rhs_iterators; + } + __rhs_iterators = __bbegin_its; + } + } + + /* Special forward_list _M_swap version that do not swap the + * before-begin ownership.*/ + template + void + forward_list<_Tp, _Alloc>:: + _M_swap(forward_list<_Tp, _Alloc>& __list) + { + __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex()); + std::swap(this->_M_iterators, __list._M_iterators); + std::swap(this->_M_const_iterators, __list._M_const_iterators); + // Useless, always 1 on forward_list + //std::swap(this->_M_version, __list._M_version); + _Safe_iterator_base* __this_its = this->_M_iterators; + _M_swap_aux(__list, __list._M_iterators, *this, this->_M_iterators); + _Safe_iterator_base* __this_const_its = this->_M_const_iterators; + _M_swap_aux(__list, __list._M_const_iterators, *this, + this->_M_const_iterators); + _M_swap_aux(*this, __this_its, __list, __list._M_iterators); + _M_swap_aux(*this, __this_const_its, __list, __list._M_const_iterators); + } + + template + bool + operator==(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return __lx._M_base() == __ly._M_base(); } + + template + inline bool + operator<(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return __lx._M_base() < __ly._M_base(); } + + template + inline bool + operator!=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__lx == __ly); } + + /// Based on operator< + template + inline bool + operator>(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return (__ly < __lx); } + + /// Based on operator< + template + inline bool + operator>=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__lx < __ly); } + + /// Based on operator< + template + inline bool + operator<=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__ly < __lx); } + + /// See std::forward_list::swap(). + template + inline void + swap(forward_list<_Tp, _Alloc>& __lx, + forward_list<_Tp, _Alloc>& __ly) + { __lx.swap(__ly); } + +} // namespace __debug +} // namespace std + +namespace __gnu_debug +{ + template + struct _BeforeBeginHelper > + { + typedef std::__debug::forward_list<_Tp, _Alloc> _Sequence; + typedef typename _Sequence::const_iterator _It; + typedef typename _It::iterator_type _BaseIt; + + static bool + _S_Is(_BaseIt __it, const _Sequence* __seq) + { return __it == __seq->_M_base().cbefore_begin(); } + + static bool + _S_Is_Beginnest(_BaseIt __it, const _Sequence* __seq) + { return _S_Is(__it, __seq); } + }; +} + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/functions.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/functions.h new file mode 100644 index 0000000..d3a1223 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/functions.h @@ -0,0 +1,450 @@ +// Debugging support implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/functions.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_FUNCTIONS_H +#define _GLIBCXX_DEBUG_FUNCTIONS_H 1 + +#include +#include // for iterator_traits, categories and + // _Iter_base +#include // for __is_integer +#include + +namespace __gnu_debug +{ + template + class _Safe_iterator; + + // An arbitrary iterator pointer is not singular. + inline bool + __check_singular_aux(const void*) { return false; } + + // We may have an iterator that derives from _Safe_iterator_base but isn't + // a _Safe_iterator. + template + inline bool + __check_singular(_Iterator& __x) + { return __check_singular_aux(&__x); } + + /** Non-NULL pointers are nonsingular. */ + template + inline bool + __check_singular(const _Tp* __ptr) + { return __ptr == 0; } + + /** Safe iterators know if they are singular. */ + template + inline bool + __check_singular(const _Safe_iterator<_Iterator, _Sequence>& __x) + { return __x._M_singular(); } + + /** Assume that some arbitrary iterator is dereferenceable, because we + can't prove that it isn't. */ + template + inline bool + __check_dereferenceable(_Iterator&) + { return true; } + + /** Non-NULL pointers are dereferenceable. */ + template + inline bool + __check_dereferenceable(const _Tp* __ptr) + { return __ptr; } + + /** Safe iterators know if they are singular. */ + template + inline bool + __check_dereferenceable(const _Safe_iterator<_Iterator, _Sequence>& __x) + { return __x._M_dereferenceable(); } + + /** If the distance between two random access iterators is + * nonnegative, assume the range is valid. + */ + template + inline bool + __valid_range_aux2(const _RandomAccessIterator& __first, + const _RandomAccessIterator& __last, + std::random_access_iterator_tag) + { return __last - __first >= 0; } + + /** Can't test for a valid range with input iterators, because + * iteration may be destructive. So we just assume that the range + * is valid. + */ + template + inline bool + __valid_range_aux2(const _InputIterator&, const _InputIterator&, + std::input_iterator_tag) + { return true; } + + /** We say that integral types for a valid range, and defer to other + * routines to realize what to do with integral types instead of + * iterators. + */ + template + inline bool + __valid_range_aux(const _Integral&, const _Integral&, std::__true_type) + { return true; } + + /** We have iterators, so figure out what kind of iterators that are + * to see if we can check the range ahead of time. + */ + template + inline bool + __valid_range_aux(const _InputIterator& __first, + const _InputIterator& __last, std::__false_type) + { return __valid_range_aux2(__first, __last, + std::__iterator_category(__first)); } + + /** Don't know what these iterators are, or if they are even + * iterators (we may get an integral type for InputIterator), so + * see if they are integral and pass them on to the next phase + * otherwise. + */ + template + inline bool + __valid_range(const _InputIterator& __first, const _InputIterator& __last) + { + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + return __valid_range_aux(__first, __last, _Integral()); + } + + /** Safe iterators know how to check if they form a valid range. */ + template + inline bool + __valid_range(const _Safe_iterator<_Iterator, _Sequence>& __first, + const _Safe_iterator<_Iterator, _Sequence>& __last) + { return __first._M_valid_range(__last); } + + /** Safe local iterators know how to check if they form a valid range. */ + template + inline bool + __valid_range(const _Safe_local_iterator<_Iterator, _Sequence>& __first, + const _Safe_local_iterator<_Iterator, _Sequence>& __last) + { return __first._M_valid_range(__last); } + + /* Checks that [first, last) is a valid range, and then returns + * __first. This routine is useful when we can't use a separate + * assertion statement because, e.g., we are in a constructor. + */ + template + inline _InputIterator + __check_valid_range(const _InputIterator& __first, + const _InputIterator& __last + __attribute__((__unused__))) + { + __glibcxx_check_valid_range(__first, __last); + return __first; + } + + /** Checks that __s is non-NULL or __n == 0, and then returns __s. */ + template + inline const _CharT* + __check_string(const _CharT* __s, + const _Integer& __n __attribute__((__unused__))) + { +#ifdef _GLIBCXX_DEBUG_PEDANTIC + __glibcxx_assert(__s != 0 || __n == 0); +#endif + return __s; + } + + /** Checks that __s is non-NULL and then returns __s. */ + template + inline const _CharT* + __check_string(const _CharT* __s) + { +#ifdef _GLIBCXX_DEBUG_PEDANTIC + __glibcxx_assert(__s != 0); +#endif + return __s; + } + + // Can't check if an input iterator sequence is sorted, because we + // can't step through the sequence. + template + inline bool + __check_sorted_aux(const _InputIterator&, const _InputIterator&, + std::input_iterator_tag) + { return true; } + + // Can verify if a forward iterator sequence is in fact sorted using + // std::__is_sorted + template + inline bool + __check_sorted_aux(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag) + { + if (__first == __last) + return true; + + _ForwardIterator __next = __first; + for (++__next; __next != __last; __first = __next, ++__next) + if (*__next < *__first) + return false; + + return true; + } + + // For performance reason, as the iterator range has been validated, check on + // random access safe iterators is done using the base iterator. + template + inline bool + __check_sorted_aux(const _Safe_iterator<_Iterator, _Sequence>& __first, + const _Safe_iterator<_Iterator, _Sequence>& __last, + std::random_access_iterator_tag __tag) + { return __check_sorted_aux(__first.base(), __last.base(), __tag); } + + // Can't check if an input iterator sequence is sorted, because we can't step + // through the sequence. + template + inline bool + __check_sorted_aux(const _InputIterator&, const _InputIterator&, + _Predicate, std::input_iterator_tag) + { return true; } + + // Can verify if a forward iterator sequence is in fact sorted using + // std::__is_sorted + template + inline bool + __check_sorted_aux(_ForwardIterator __first, _ForwardIterator __last, + _Predicate __pred, std::forward_iterator_tag) + { + if (__first == __last) + return true; + + _ForwardIterator __next = __first; + for (++__next; __next != __last; __first = __next, ++__next) + if (__pred(*__next, *__first)) + return false; + + return true; + } + + // For performance reason, as the iterator range has been validated, check on + // random access safe iterators is done using the base iterator. + template + inline bool + __check_sorted_aux(const _Safe_iterator<_Iterator, _Sequence>& __first, + const _Safe_iterator<_Iterator, _Sequence>& __last, + _Predicate __pred, + std::random_access_iterator_tag __tag) + { return __check_sorted_aux(__first.base(), __last.base(), __pred, __tag); } + + // Determine if a sequence is sorted. + template + inline bool + __check_sorted(const _InputIterator& __first, const _InputIterator& __last) + { + // Verify that the < operator for elements in the sequence is a + // StrictWeakOrdering by checking that it is irreflexive. + __glibcxx_assert(__first == __last || !(*__first < *__first)); + + return __check_sorted_aux(__first, __last, + std::__iterator_category(__first)); + } + + template + inline bool + __check_sorted(const _InputIterator& __first, const _InputIterator& __last, + _Predicate __pred) + { + // Verify that the predicate is StrictWeakOrdering by checking that it + // is irreflexive. + __glibcxx_assert(__first == __last || !__pred(*__first, *__first)); + + return __check_sorted_aux(__first, __last, __pred, + std::__iterator_category(__first)); + } + + template + inline bool + __check_sorted_set_aux(const _InputIterator& __first, + const _InputIterator& __last, + std::__true_type) + { return __check_sorted(__first, __last); } + + template + inline bool + __check_sorted_set_aux(const _InputIterator&, + const _InputIterator&, + std::__false_type) + { return true; } + + template + inline bool + __check_sorted_set_aux(const _InputIterator& __first, + const _InputIterator& __last, + _Predicate __pred, std::__true_type) + { return __check_sorted(__first, __last, __pred); } + + template + inline bool + __check_sorted_set_aux(const _InputIterator&, + const _InputIterator&, _Predicate, + std::__false_type) + { return true; } + + // ... special variant used in std::merge, std::includes, std::set_*. + template + inline bool + __check_sorted_set(const _InputIterator1& __first, + const _InputIterator1& __last, + const _InputIterator2&) + { + typedef typename std::iterator_traits<_InputIterator1>::value_type + _ValueType1; + typedef typename std::iterator_traits<_InputIterator2>::value_type + _ValueType2; + + typedef typename std::__are_same<_ValueType1, _ValueType2>::__type + _SameType; + return __check_sorted_set_aux(__first, __last, _SameType()); + } + + template + inline bool + __check_sorted_set(const _InputIterator1& __first, + const _InputIterator1& __last, + const _InputIterator2&, _Predicate __pred) + { + typedef typename std::iterator_traits<_InputIterator1>::value_type + _ValueType1; + typedef typename std::iterator_traits<_InputIterator2>::value_type + _ValueType2; + + typedef typename std::__are_same<_ValueType1, _ValueType2>::__type + _SameType; + return __check_sorted_set_aux(__first, __last, __pred, _SameType()); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 270. Binary search requirements overly strict + // Determine if a sequence is partitioned w.r.t. this element. + template + inline bool + __check_partitioned_lower(_ForwardIterator __first, + _ForwardIterator __last, const _Tp& __value) + { + while (__first != __last && *__first < __value) + ++__first; + if (__first != __last) + { + ++__first; + while (__first != __last && !(*__first < __value)) + ++__first; + } + return __first == __last; + } + + template + inline bool + __check_partitioned_upper(_ForwardIterator __first, + _ForwardIterator __last, const _Tp& __value) + { + while (__first != __last && !(__value < *__first)) + ++__first; + if (__first != __last) + { + ++__first; + while (__first != __last && __value < *__first) + ++__first; + } + return __first == __last; + } + + // Determine if a sequence is partitioned w.r.t. this element. + template + inline bool + __check_partitioned_lower(_ForwardIterator __first, + _ForwardIterator __last, const _Tp& __value, + _Pred __pred) + { + while (__first != __last && bool(__pred(*__first, __value))) + ++__first; + if (__first != __last) + { + ++__first; + while (__first != __last && !bool(__pred(*__first, __value))) + ++__first; + } + return __first == __last; + } + + template + inline bool + __check_partitioned_upper(_ForwardIterator __first, + _ForwardIterator __last, const _Tp& __value, + _Pred __pred) + { + while (__first != __last && !bool(__pred(__value, *__first))) + ++__first; + if (__first != __last) + { + ++__first; + while (__first != __last && bool(__pred(__value, *__first))) + ++__first; + } + return __first == __last; + } + + // Helper struct to detect random access safe iterators. + template + struct __is_safe_random_iterator + { + enum { __value = 0 }; + typedef std::__false_type __type; + }; + + template + struct __is_safe_random_iterator<_Safe_iterator<_Iterator, _Sequence> > + : std::__are_same:: + iterator_category> + { }; + + template + struct _Siter_base + : std::_Iter_base<_Iterator, __is_safe_random_iterator<_Iterator>::__value> + { }; + + /** Helper function to extract base iterator of random access safe iterator + in order to reduce performance impact of debug mode. Limited to random + access iterator because it is the only category for which it is possible + to check for correct iterators order in the __valid_range function + thanks to the < operator. + */ + template + inline typename _Siter_base<_Iterator>::iterator_type + __base(_Iterator __it) + { return _Siter_base<_Iterator>::_S_base(__it); } +} // namespace __gnu_debug + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/list b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/list new file mode 100644 index 0000000..8fcc5bf --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/list @@ -0,0 +1,757 @@ +// Debugging list implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/list + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_LIST +#define _GLIBCXX_DEBUG_LIST 1 + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::list with safety/checking/debug instrumentation. + template > + class list + : public _GLIBCXX_STD_C::list<_Tp, _Allocator>, + public __gnu_debug::_Safe_sequence > + { + typedef _GLIBCXX_STD_C::list<_Tp, _Allocator> _Base; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal; + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, list> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, list> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef _Allocator allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.2.2.1 construct/copy/destroy: + explicit + list(const _Allocator& __a = _Allocator()) + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + list(size_type __n) + : _Base(__n) { } + + list(size_type __n, const _Tp& __value, + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#else + explicit + list(size_type __n, const _Tp& __value = _Tp(), + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + list(_InputIterator __first, _InputIterator __last, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a) + { } + + list(const list& __x) + : _Base(__x) { } + + list(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus >= 201103L + list(list&& __x) noexcept + : _Base(std::move(__x)) + { this->_M_swap(__x); } + + list(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__l, __a) { } +#endif + + ~list() _GLIBCXX_NOEXCEPT { } + + list& + operator=(const list& __x) + { + static_cast<_Base&>(*this) = __x; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + list& + operator=(list&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + list& + operator=(initializer_list __l) + { + static_cast<_Base&>(*this) = __l; + this->_M_invalidate_all(); + return *this; + } + + void + assign(initializer_list __l) + { + _Base::assign(__l); + this->_M_invalidate_all(); + } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + assign(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::assign(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + this->_M_invalidate_all(); + } + + void + assign(size_type __n, const _Tp& __t) + { + _Base::assign(__n, __t); + this->_M_invalidate_all(); + } + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // 23.2.2.2 capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + +#if __cplusplus >= 201103L + void + resize(size_type __sz) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin+__sz, end()) + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + { + this->_M_invalidate_if(_Equal(__victim)); + } + + __try + { + _Base::resize(__sz); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } + + void + resize(size_type __sz, const _Tp& __c) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin+__sz, end()) + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + { + this->_M_invalidate_if(_Equal(__victim)); + } + + __try + { + _Base::resize(__sz, __c); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } +#else + void + resize(size_type __sz, _Tp __c = _Tp()) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin+__sz, end()) + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + { + this->_M_invalidate_if(_Equal(__victim)); + } + + __try + { + _Base::resize(__sz, __c); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } +#endif + + // element access: + reference + front() + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + const_reference + front() const + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + reference + back() + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + const_reference + back() const + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + // 23.2.2.3 modifiers: + using _Base::push_front; + +#if __cplusplus >= 201103L + using _Base::emplace_front; +#endif + + void + pop_front() + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(_Base::begin())); + _Base::pop_front(); + } + + using _Base::push_back; + +#if __cplusplus >= 201103L + using _Base::emplace_back; +#endif + + void + pop_back() + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(--_Base::end())); + _Base::pop_back(); + } + +#if __cplusplus >= 201103L + template + iterator + emplace(iterator __position, _Args&&... __args) + { + __glibcxx_check_insert(__position); + return iterator(_Base::emplace(__position.base(), + std::forward<_Args>(__args)...), this); + } +#endif + + iterator + insert(iterator __position, const _Tp& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + iterator + insert(iterator __position, _Tp&& __x) + { return emplace(__position, std::move(__x)); } + + void + insert(iterator __p, initializer_list __l) + { + __glibcxx_check_insert(__p); + _Base::insert(__p.base(), __l); + } +#endif + + void + insert(iterator __position, size_type __n, const _Tp& __x) + { + __glibcxx_check_insert(__position); + _Base::insert(__position.base(), __n, __x); + } + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + insert(iterator __position, _InputIterator __first, + _InputIterator __last) + { + __glibcxx_check_insert_range(__position, __first, __last); + _Base::insert(__position.base(), __gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + } + + private: + _Base_iterator + _M_erase(_Base_iterator __position) + { + this->_M_invalidate_if(_Equal(__position)); + return _Base::erase(__position); + } + public: + iterator + erase(iterator __position) + { + __glibcxx_check_erase(__position); + return iterator(_M_erase(__position.base()), this); + } + + iterator + erase(iterator __position, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__position, __last); + for (_Base_iterator __victim = __position.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__position, "position") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__position.base(), __last.base()), this); + } + + void + swap(list& __x) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + _Base::clear(); + this->_M_invalidate_all(); + } + + // 23.2.2.4 list operations: + void +#if __cplusplus >= 201103L + splice(iterator __position, list&& __x) +#else + splice(iterator __position, list& __x) +#endif + { + _GLIBCXX_DEBUG_VERIFY(&__x != this, + _M_message(__gnu_debug::__msg_self_splice) + ._M_sequence(*this, "this")); + this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end())); + _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base())); + } + +#if __cplusplus >= 201103L + void + splice(iterator __position, list& __x) + { splice(__position, std::move(__x)); } +#endif + + void +#if __cplusplus >= 201103L + splice(iterator __position, list&& __x, iterator __i) +#else + splice(iterator __position, list& __x, iterator __i) +#endif + { + __glibcxx_check_insert(__position); + + // We used to perform the splice_alloc check: not anymore, redundant + // after implementing the relevant bits of N1599. + + _GLIBCXX_DEBUG_VERIFY(__i._M_dereferenceable(), + _M_message(__gnu_debug::__msg_splice_bad) + ._M_iterator(__i, "__i")); + _GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(&__x), + _M_message(__gnu_debug::__msg_splice_other) + ._M_iterator(__i, "__i")._M_sequence(__x, "__x")); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 250. splicing invalidates iterators + this->_M_transfer_from_if(__x, _Equal(__i.base())); + _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()), + __i.base()); + } + +#if __cplusplus >= 201103L + void + splice(iterator __position, list& __x, iterator __i) + { splice(__position, std::move(__x), __i); } +#endif + + void +#if __cplusplus >= 201103L + splice(iterator __position, list&& __x, iterator __first, + iterator __last) +#else + splice(iterator __position, list& __x, iterator __first, + iterator __last) +#endif + { + __glibcxx_check_insert(__position); + __glibcxx_check_valid_range(__first, __last); + _GLIBCXX_DEBUG_VERIFY(__first._M_attached_to(&__x), + _M_message(__gnu_debug::__msg_splice_other) + ._M_sequence(__x, "x") + ._M_iterator(__first, "first")); + + // We used to perform the splice_alloc check: not anymore, redundant + // after implementing the relevant bits of N1599. + + for (_Base_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + _GLIBCXX_DEBUG_VERIFY(&__x != this || __tmp != __position, + _M_message(__gnu_debug::__msg_splice_overlap) + ._M_iterator(__tmp, "position") + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 250. splicing invalidates iterators + this->_M_transfer_from_if(__x, _Equal(__tmp)); + } + + _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()), + __first.base(), __last.base()); + } + +#if __cplusplus >= 201103L + void + splice(iterator __position, list& __x, iterator __first, iterator __last) + { splice(__position, std::move(__x), __first, __last); } +#endif + + void + remove(const _Tp& __value) + { + for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); ) + { + if (*__x == __value) + __x = _M_erase(__x); + else + ++__x; + } + } + + template + void + remove_if(_Predicate __pred) + { + for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); ) + { + if (__pred(*__x)) + __x = _M_erase(__x); + else + ++__x; + } + } + + void + unique() + { + _Base_iterator __first = _Base::begin(); + _Base_iterator __last = _Base::end(); + if (__first == __last) + return; + _Base_iterator __next = __first; ++__next; + while (__next != __last) + { + if (*__first == *__next) + __next = _M_erase(__next); + else + __first = __next++; + } + } + + template + void + unique(_BinaryPredicate __binary_pred) + { + _Base_iterator __first = _Base::begin(); + _Base_iterator __last = _Base::end(); + if (__first == __last) + return; + _Base_iterator __next = __first; ++__next; + while (__next != __last) + { + if (__binary_pred(*__first, *__next)) + __next = _M_erase(__next); + else + __first = __next++; + } + } + + void +#if __cplusplus >= 201103L + merge(list&& __x) +#else + merge(list& __x) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 300. list::merge() specification incomplete + if (this != &__x) + { + __glibcxx_check_sorted(_Base::begin(), _Base::end()); + __glibcxx_check_sorted(__x.begin().base(), __x.end().base()); + this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end())); + _Base::merge(_GLIBCXX_MOVE(__x._M_base())); + } + } + +#if __cplusplus >= 201103L + void + merge(list& __x) + { merge(std::move(__x)); } +#endif + + template + void +#if __cplusplus >= 201103L + merge(list&& __x, _Compare __comp) +#else + merge(list& __x, _Compare __comp) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 300. list::merge() specification incomplete + if (this != &__x) + { + __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), + __comp); + __glibcxx_check_sorted_pred(__x.begin().base(), __x.end().base(), + __comp); + this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end())); + _Base::merge(_GLIBCXX_MOVE(__x._M_base()), __comp); + } + } + +#if __cplusplus >= 201103L + template + void + merge(list& __x, _Compare __comp) + { merge(std::move(__x), __comp); } +#endif + + void + sort() { _Base::sort(); } + + template + void + sort(_StrictWeakOrdering __pred) { _Base::sort(__pred); } + + using _Base::reverse; + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + void + _M_invalidate_all() + { + this->_M_invalidate_if(_Not_equal(_Base::end())); + } + }; + + template + inline bool + operator==(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(list<_Tp, _Alloc>& __lhs, list<_Tp, _Alloc>& __rhs) + { __lhs.swap(__rhs); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/macros.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/macros.h new file mode 100644 index 0000000..31bcaf3 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/macros.h @@ -0,0 +1,353 @@ +// Debugging support implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/macros.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MACROS_H +#define _GLIBCXX_DEBUG_MACROS_H 1 + +/** + * Macros used by the implementation to verify certain + * properties. These macros may only be used directly by the debug + * wrappers. Note that these are macros (instead of the more obviously + * @a correct choice of making them functions) because we need line and + * file information at the call site, to minimize the distance between + * the user error and where the error is reported. + * + */ +#define _GLIBCXX_DEBUG_VERIFY_AT(_Condition,_ErrorMessage,_File,_Line) \ + do \ + { \ + if (! (_Condition)) \ + __gnu_debug::_Error_formatter::_M_at(_File, _Line) \ + ._ErrorMessage._M_error(); \ + } while (false) + +#define _GLIBCXX_DEBUG_VERIFY(_Condition,_ErrorMessage) \ + _GLIBCXX_DEBUG_VERIFY_AT(_Condition,_ErrorMessage,__FILE__,__LINE__) + +// Verify that [_First, _Last) forms a valid iterator range. +#define __glibcxx_check_valid_range(_First,_Last) \ +_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__valid_range(_First, _Last), \ + _M_message(__gnu_debug::__msg_valid_range) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)) + +// Verify that [_First, _Last) forms a non-empty iterator range. +#define __glibcxx_check_non_empty_range(_First,_Last) \ +_GLIBCXX_DEBUG_VERIFY(_First != _Last, \ + _M_message(__gnu_debug::__msg_non_empty_range) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)) + +/** Verify that we can insert into *this with the iterator _Position. + * Insertion into a container at a specific position requires that + * the iterator be nonsingular, either dereferenceable or past-the-end, + * and that it reference the sequence we are inserting into. Note that + * this macro is only valid when the container is a_Safe_sequence and + * the iterator is a _Safe_iterator. +*/ +#define __glibcxx_check_insert(_Position) \ +_GLIBCXX_DEBUG_VERIFY(!_Position._M_singular(), \ + _M_message(__gnu_debug::__msg_insert_singular) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_Position, #_Position)); \ +_GLIBCXX_DEBUG_VERIFY(_Position._M_attached_to(this), \ + _M_message(__gnu_debug::__msg_insert_different) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_Position, #_Position)) + +/** Verify that we can insert into *this after the iterator _Position. + * Insertion into a container after a specific position requires that + * the iterator be nonsingular, either dereferenceable or before-begin, + * and that it reference the sequence we are inserting into. Note that + * this macro is only valid when the container is a_Safe_sequence and + * the iterator is a _Safe_iterator. +*/ +#define __glibcxx_check_insert_after(_Position) \ +__glibcxx_check_insert(_Position); \ +_GLIBCXX_DEBUG_VERIFY(!_Position._M_is_end(), \ + _M_message(__gnu_debug::__msg_insert_after_end) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_Position, #_Position)) + +/** Verify that we can insert the values in the iterator range + * [_First, _Last) into *this with the iterator _Position. Insertion + * into a container at a specific position requires that the iterator + * be nonsingular (i.e., either dereferenceable or past-the-end), + * that it reference the sequence we are inserting into, and that the + * iterator range [_First, Last) is a valid (possibly empty) + * range. Note that this macro is only valid when the container is a + * _Safe_sequence and the iterator is a _Safe_iterator. + * + * @todo We would like to be able to check for noninterference of + * _Position and the range [_First, _Last), but that can't (in + * general) be done. +*/ +#define __glibcxx_check_insert_range(_Position,_First,_Last) \ +__glibcxx_check_valid_range(_First,_Last); \ +__glibcxx_check_insert(_Position) + +/** Verify that we can insert the values in the iterator range + * [_First, _Last) into *this after the iterator _Position. Insertion + * into a container after a specific position requires that the iterator + * be nonsingular (i.e., either dereferenceable or past-the-end), + * that it reference the sequence we are inserting into, and that the + * iterator range [_First, Last) is a valid (possibly empty) + * range. Note that this macro is only valid when the container is a + * _Safe_sequence and the iterator is a _Safe_iterator. + * + * @todo We would like to be able to check for noninterference of + * _Position and the range [_First, _Last), but that can't (in + * general) be done. +*/ +#define __glibcxx_check_insert_range_after(_Position,_First,_Last) \ +__glibcxx_check_valid_range(_First,_Last); \ +__glibcxx_check_insert_after(_Position) + +/** Verify that we can erase the element referenced by the iterator + * _Position. We can erase the element if the _Position iterator is + * dereferenceable and references this sequence. +*/ +#define __glibcxx_check_erase(_Position) \ +_GLIBCXX_DEBUG_VERIFY(_Position._M_dereferenceable(), \ + _M_message(__gnu_debug::__msg_erase_bad) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_Position, #_Position)); \ +_GLIBCXX_DEBUG_VERIFY(_Position._M_attached_to(this), \ + _M_message(__gnu_debug::__msg_erase_different) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_Position, #_Position)) + +/** Verify that we can erase the element after the iterator + * _Position. We can erase the element if the _Position iterator is + * before a dereferenceable one and references this sequence. +*/ +#define __glibcxx_check_erase_after(_Position) \ +_GLIBCXX_DEBUG_VERIFY(_Position._M_before_dereferenceable(), \ + _M_message(__gnu_debug::__msg_erase_after_bad) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_Position, #_Position)); \ +_GLIBCXX_DEBUG_VERIFY(_Position._M_attached_to(this), \ + _M_message(__gnu_debug::__msg_erase_different) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_Position, #_Position)) + +/** Verify that we can erase the elements in the iterator range + * [_First, _Last). We can erase the elements if [_First, _Last) is a + * valid iterator range within this sequence. +*/ +#define __glibcxx_check_erase_range(_First,_Last) \ +__glibcxx_check_valid_range(_First,_Last); \ +_GLIBCXX_DEBUG_VERIFY(_First._M_attached_to(this), \ + _M_message(__gnu_debug::__msg_erase_different) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)) + +/** Verify that we can erase the elements in the iterator range + * (_First, _Last). We can erase the elements if (_First, _Last) is a + * valid iterator range within this sequence. +*/ +#define __glibcxx_check_erase_range_after(_First,_Last) \ +_GLIBCXX_DEBUG_VERIFY(_First._M_can_compare(_Last), \ + _M_message(__gnu_debug::__msg_erase_different) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)); \ +_GLIBCXX_DEBUG_VERIFY(_First._M_attached_to(this), \ + _M_message(__gnu_debug::__msg_erase_different) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_First, #_First)); \ +_GLIBCXX_DEBUG_VERIFY(_First != _Last, \ + _M_message(__gnu_debug::__msg_valid_range2) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)); \ +_GLIBCXX_DEBUG_VERIFY(_First._M_incrementable(), \ + _M_message(__gnu_debug::__msg_valid_range2) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)); \ +_GLIBCXX_DEBUG_VERIFY(!_Last._M_is_before_begin(), \ + _M_message(__gnu_debug::__msg_valid_range2) \ + ._M_sequence(*this, "this") \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)) \ + +// Verify that the subscript _N is less than the container's size. +#define __glibcxx_check_subscript(_N) \ +_GLIBCXX_DEBUG_VERIFY(_N < this->size(), \ + _M_message(__gnu_debug::__msg_subscript_oob) \ + ._M_sequence(*this, "this") \ + ._M_integer(_N, #_N) \ + ._M_integer(this->size(), "size")) + +// Verify that the bucket _N is less than the container's buckets count. +#define __glibcxx_check_bucket_index(_N) \ +_GLIBCXX_DEBUG_VERIFY(_N < this->bucket_count(), \ + _M_message(__gnu_debug::__msg_bucket_index_oob) \ + ._M_sequence(*this, "this") \ + ._M_integer(_N, #_N) \ + ._M_integer(this->bucket_count(), "size")) + +// Verify that the container is nonempty +#define __glibcxx_check_nonempty() \ +_GLIBCXX_DEBUG_VERIFY(! this->empty(), \ + _M_message(__gnu_debug::__msg_empty) \ + ._M_sequence(*this, "this")) + +// Verify that the iterator range [_First, _Last) is sorted +#define __glibcxx_check_sorted(_First,_Last) \ +__glibcxx_check_valid_range(_First,_Last); \ +_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_sorted(_First, _Last), \ + _M_message(__gnu_debug::__msg_unsorted) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)) + +/** Verify that the iterator range [_First, _Last) is sorted by the + predicate _Pred. */ +#define __glibcxx_check_sorted_pred(_First,_Last,_Pred) \ +__glibcxx_check_valid_range(_First,_Last); \ +_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_sorted(_First, _Last, _Pred), \ + _M_message(__gnu_debug::__msg_unsorted_pred) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last) \ + ._M_string(#_Pred)) + +// Special variant for std::merge, std::includes, std::set_* +#define __glibcxx_check_sorted_set(_First1,_Last1,_First2) \ +__glibcxx_check_valid_range(_First1,_Last1); \ +_GLIBCXX_DEBUG_VERIFY( \ + __gnu_debug::__check_sorted_set(_First1, _Last1, _First2), \ + _M_message(__gnu_debug::__msg_unsorted) \ + ._M_iterator(_First1, #_First1) \ + ._M_iterator(_Last1, #_Last1)) + +// Likewise with a _Pred. +#define __glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred) \ +__glibcxx_check_valid_range(_First1,_Last1); \ +_GLIBCXX_DEBUG_VERIFY( \ + __gnu_debug::__check_sorted_set(_First1, _Last1, _First2, _Pred), \ + _M_message(__gnu_debug::__msg_unsorted_pred) \ + ._M_iterator(_First1, #_First1) \ + ._M_iterator(_Last1, #_Last1) \ + ._M_string(#_Pred)) + +/** Verify that the iterator range [_First, _Last) is partitioned + w.r.t. the value _Value. */ +#define __glibcxx_check_partitioned_lower(_First,_Last,_Value) \ +__glibcxx_check_valid_range(_First,_Last); \ +_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower( \ + __gnu_debug::__base(_First), \ + __gnu_debug::__base(_Last), _Value), \ + _M_message(__gnu_debug::__msg_unpartitioned) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last) \ + ._M_string(#_Value)) + +#define __glibcxx_check_partitioned_upper(_First,_Last,_Value) \ +__glibcxx_check_valid_range(_First,_Last); \ +_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper( \ + __gnu_debug::__base(_First), \ + __gnu_debug::__base(_Last), _Value), \ + _M_message(__gnu_debug::__msg_unpartitioned) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last) \ + ._M_string(#_Value)) + +/** Verify that the iterator range [_First, _Last) is partitioned + w.r.t. the value _Value and predicate _Pred. */ +#define __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred) \ +__glibcxx_check_valid_range(_First,_Last); \ +_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower( \ + __gnu_debug::__base(_First), \ + __gnu_debug::__base(_Last), _Value, _Pred), \ + _M_message(__gnu_debug::__msg_unpartitioned_pred) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last) \ + ._M_string(#_Pred) \ + ._M_string(#_Value)) + +/** Verify that the iterator range [_First, _Last) is partitioned + w.r.t. the value _Value and predicate _Pred. */ +#define __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred) \ +__glibcxx_check_valid_range(_First,_Last); \ +_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper( \ + __gnu_debug::__base(_First), \ + __gnu_debug::__base(_Last), _Value, _Pred), \ + _M_message(__gnu_debug::__msg_unpartitioned_pred) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last) \ + ._M_string(#_Pred) \ + ._M_string(#_Value)) + +// Verify that the iterator range [_First, _Last) is a heap +#define __glibcxx_check_heap(_First,_Last) \ + _GLIBCXX_DEBUG_VERIFY(std::__is_heap(__gnu_debug::__base(_First), \ + __gnu_debug::__base(_Last)), \ + _M_message(__gnu_debug::__msg_not_heap) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)) + +/** Verify that the iterator range [_First, _Last) is a heap + w.r.t. the predicate _Pred. */ +#define __glibcxx_check_heap_pred(_First,_Last,_Pred) \ + _GLIBCXX_DEBUG_VERIFY(std::__is_heap(__gnu_debug::__base(_First), \ + __gnu_debug::__base(_Last), \ + _Pred), \ + _M_message(__gnu_debug::__msg_not_heap_pred) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last) \ + ._M_string(#_Pred)) + +// Verify that the container is not self move assigned +#define __glibcxx_check_self_move_assign(_Other) \ +_GLIBCXX_DEBUG_VERIFY(this != &_Other, \ + _M_message(__gnu_debug::__msg_self_move_assign) \ + ._M_sequence(*this, "this")) + +// Verify that load factor is position +#define __glibcxx_check_max_load_factor(_F) \ +_GLIBCXX_DEBUG_VERIFY(_F > 0.0f, \ + _M_message(__gnu_debug::__msg_valid_load_factor) \ + ._M_sequence(*this, "this")) + +#define __glibcxx_check_equal_allocs(_Other) \ +_GLIBCXX_DEBUG_VERIFY(this->get_allocator() == _Other.get_allocator(), \ + _M_message(__gnu_debug::__msg_equal_allocs) \ + ._M_sequence(*this, "this")) + +#ifdef _GLIBCXX_DEBUG_PEDANTIC +# define __glibcxx_check_string(_String) _GLIBCXX_DEBUG_ASSERT(_String != 0) +# define __glibcxx_check_string_len(_String,_Len) \ + _GLIBCXX_DEBUG_ASSERT(_String != 0 || _Len == 0) +#else +# define __glibcxx_check_string(_String) +# define __glibcxx_check_string_len(_String,_Len) +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/map b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/map new file mode 100644 index 0000000..365a82e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/map @@ -0,0 +1,36 @@ +// Debugging map/multimap implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/map + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MAP +#define _GLIBCXX_DEBUG_MAP 1 + +#include +#include +#include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/map.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/map.h new file mode 100644 index 0000000..23ac538 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/map.h @@ -0,0 +1,491 @@ +// Debugging map implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/map.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MAP_H +#define _GLIBCXX_DEBUG_MAP_H 1 + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::map with safety/checking/debug instrumentation. + template, + typename _Allocator = std::allocator > > + class map + : public _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator>, + public __gnu_debug::_Safe_sequence > + { + typedef _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator> _Base; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + public: + // types: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair value_type; + typedef _Compare key_compare; + typedef _Allocator allocator_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, map> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, map> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.3.1.1 construct/copy/destroy: + explicit map(const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + + template + map(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), + __comp, __a) { } + + map(const map& __x) + : _Base(__x) { } + + map(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus >= 201103L + map(map&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _Base(std::move(__x)) + { this->_M_swap(__x); } + + map(initializer_list __l, + const _Compare& __c = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __c, __a) { } +#endif + + ~map() _GLIBCXX_NOEXCEPT { } + + map& + operator=(const map& __x) + { + *static_cast<_Base*>(this) = __x; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + map& + operator=(map&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + map& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l); + return *this; + } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 133. map missing get_allocator() + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + + // 23.3.1.2 element access: + using _Base::operator[]; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 464. Suggestion for new member functions in standard containers. + using _Base::at; + + // modifiers: +#if __cplusplus >= 201103L + template + std::pair + emplace(_Args&&... __args) + { + auto __res = _Base::emplace(std::forward<_Args>(__args)...); + return std::pair(iterator(__res.first, this), + __res.second); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert(__pos); + return iterator(_Base::emplace_hint(__pos.base(), + std::forward<_Args>(__args)...), + this); + } +#endif + + std::pair + insert(const value_type& __x) + { + std::pair<_Base_iterator, bool> __res = _Base::insert(__x); + return std::pair(iterator(__res.first, this), + __res.second); + } + +#if __cplusplus >= 201103L + template::value>::type> + std::pair + insert(_Pair&& __x) + { + std::pair<_Base_iterator, bool> __res + = _Base::insert(std::forward<_Pair>(__x)); + return std::pair(iterator(__res.first, this), + __res.second); + } +#endif + +#if __cplusplus >= 201103L + void + insert(std::initializer_list __list) + { _Base::insert(__list); } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const value_type& __x) +#else + insert(iterator __position, const value_type& __x) +#endif + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + template::value>::type> + iterator + insert(const_iterator __position, _Pair&& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), + std::forward<_Pair>(__x)), this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::insert(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return iterator(_Base::erase(__position.base()), this); + } + + iterator + erase(iterator __position) + { return erase(const_iterator(__position)); } +#else + void + erase(iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + _Base::erase(__position.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + _Base_iterator __victim = _Base::find(__x); + if (__victim == _Base::end()) + return 0; + else + { + this->_M_invalidate_if(_Equal(__victim)); + _Base::erase(__victim); + return 1; + } + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + _Base::erase(__first.base(), __last.base()); + } +#endif + + void + swap(map& __x) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_invalidate_all(); + _Base::clear(); + } + + // observers: + using _Base::key_comp; + using _Base::value_comp; + + // 23.3.1.3 map operations: + iterator + find(const key_type& __x) + { return iterator(_Base::find(__x), this); } + + const_iterator + find(const key_type& __x) const + { return const_iterator(_Base::find(__x), this); } + + using _Base::count; + + iterator + lower_bound(const key_type& __x) + { return iterator(_Base::lower_bound(__x), this); } + + const_iterator + lower_bound(const key_type& __x) const + { return const_iterator(_Base::lower_bound(__x), this); } + + iterator + upper_bound(const key_type& __x) + { return iterator(_Base::upper_bound(__x), this); } + + const_iterator + upper_bound(const key_type& __x) const + { return const_iterator(_Base::upper_bound(__x), this); } + + std::pair + equal_range(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __x) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + void + _M_invalidate_all() + { + typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal; + this->_M_invalidate_if(_Not_equal(_M_base().end())); + } + }; + + template + inline bool + operator==(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(map<_Key, _Tp, _Compare, _Allocator>& __lhs, + map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { __lhs.swap(__rhs); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/multimap.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/multimap.h new file mode 100644 index 0000000..903198f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/multimap.h @@ -0,0 +1,474 @@ +// Debugging multimap implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/multimap.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MULTIMAP_H +#define _GLIBCXX_DEBUG_MULTIMAP_H 1 + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::multimap with safety/checking/debug instrumentation. + template, + typename _Allocator = std::allocator > > + class multimap + : public _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator>, + public __gnu_debug::_Safe_sequence > + { + typedef _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator> _Base; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + public: + // types: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair value_type; + typedef _Compare key_compare; + typedef _Allocator allocator_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, multimap> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, + multimap> const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.3.1.1 construct/copy/destroy: + explicit multimap(const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + + template + multimap(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), + __comp, __a) { } + + multimap(const multimap& __x) + : _Base(__x) { } + + multimap(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus >= 201103L + multimap(multimap&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _Base(std::move(__x)) + { this->_M_swap(__x); } + + multimap(initializer_list __l, + const _Compare& __c = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __c, __a) { } +#endif + + ~multimap() _GLIBCXX_NOEXCEPT { } + + multimap& + operator=(const multimap& __x) + { + *static_cast<_Base*>(this) = __x; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + multimap& + operator=(multimap&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + multimap& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l); + return *this; + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + + // modifiers: +#if __cplusplus >= 201103L + template + iterator + emplace(_Args&&... __args) + { + return iterator(_Base::emplace(std::forward<_Args>(__args)...), this); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert(__pos); + return iterator(_Base::emplace_hint(__pos.base(), + std::forward<_Args>(__args)...), + this); + } +#endif + + iterator + insert(const value_type& __x) + { return iterator(_Base::insert(__x), this); } + +#if __cplusplus >= 201103L + template::value>::type> + iterator + insert(_Pair&& __x) + { return iterator(_Base::insert(std::forward<_Pair>(__x)), this); } +#endif + +#if __cplusplus >= 201103L + void + insert(std::initializer_list __list) + { _Base::insert(__list); } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const value_type& __x) +#else + insert(iterator __position, const value_type& __x) +#endif + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + template::value>::type> + iterator + insert(const_iterator __position, _Pair&& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), + std::forward<_Pair>(__x)), this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::insert(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return iterator(_Base::erase(__position.base()), this); + } + + iterator + erase(iterator __position) + { return erase(const_iterator(__position)); } +#else + void + erase(iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + _Base::erase(__position.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __victims = + _Base::equal_range(__x); + size_type __count = 0; + _Base_iterator __victim = __victims.first; + while (__victim != __victims.second) + { + this->_M_invalidate_if(_Equal(__victim)); + _Base::erase(__victim++); + ++__count; + } + return __count; + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + _Base::erase(__first.base(), __last.base()); + } +#endif + + void + swap(multimap& __x) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_invalidate_all(); + _Base::clear(); + } + + // observers: + using _Base::key_comp; + using _Base::value_comp; + + // 23.3.1.3 multimap operations: + iterator + find(const key_type& __x) + { return iterator(_Base::find(__x), this); } + + const_iterator + find(const key_type& __x) const + { return const_iterator(_Base::find(__x), this); } + + using _Base::count; + + iterator + lower_bound(const key_type& __x) + { return iterator(_Base::lower_bound(__x), this); } + + const_iterator + lower_bound(const key_type& __x) const + { return const_iterator(_Base::lower_bound(__x), this); } + + iterator + upper_bound(const key_type& __x) + { return iterator(_Base::upper_bound(__x), this); } + + const_iterator + upper_bound(const key_type& __x) const + { return const_iterator(_Base::upper_bound(__x), this); } + + std::pair + equal_range(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __x) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + void + _M_invalidate_all() + { + typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal; + this->_M_invalidate_if(_Not_equal(_Base::end())); + } + }; + + template + inline bool + operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { __lhs.swap(__rhs); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/multiset.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/multiset.h new file mode 100644 index 0000000..3cc761e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/multiset.h @@ -0,0 +1,460 @@ +// Debugging multiset implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/multiset.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MULTISET_H +#define _GLIBCXX_DEBUG_MULTISET_H 1 + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::multiset with safety/checking/debug instrumentation. + template, + typename _Allocator = std::allocator<_Key> > + class multiset + : public _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator>, + public __gnu_debug::_Safe_sequence > + { + typedef _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> _Base; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + public: + // types: + typedef _Key key_type; + typedef _Key value_type; + typedef _Compare key_compare; + typedef _Compare value_compare; + typedef _Allocator allocator_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, multiset> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, + multiset> const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.3.3.1 construct/copy/destroy: + explicit multiset(const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + + template + multiset(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), + __comp, __a) { } + + multiset(const multiset& __x) + : _Base(__x) { } + + multiset(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus >= 201103L + multiset(multiset&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _Base(std::move(__x)) + { this->_M_swap(__x); } + + multiset(initializer_list __l, + const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __comp, __a) { } +#endif + + ~multiset() _GLIBCXX_NOEXCEPT { } + + multiset& + operator=(const multiset& __x) + { + *static_cast<_Base*>(this) = __x; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + multiset& + operator=(multiset&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + multiset& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l); + return *this; + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + + // modifiers: +#if __cplusplus >= 201103L + template + iterator + emplace(_Args&&... __args) + { + return iterator(_Base::emplace(std::forward<_Args>(__args)...), this); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert(__pos); + return iterator(_Base::emplace_hint(__pos.base(), + std::forward<_Args>(__args)...), + this); + } +#endif + + iterator + insert(const value_type& __x) + { return iterator(_Base::insert(__x), this); } + +#if __cplusplus >= 201103L + iterator + insert(value_type&& __x) + { return iterator(_Base::insert(std::move(__x)), this); } +#endif + + iterator + insert(const_iterator __position, const value_type& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, value_type&& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), std::move(__x)), + this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::insert(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + } + +#if __cplusplus >= 201103L + void + insert(initializer_list __l) + { _Base::insert(__l); } +#endif + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return iterator(_Base::erase(__position.base()), this); + } +#else + void + erase(iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + _Base::erase(__position.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __victims = + _Base::equal_range(__x); + size_type __count = 0; + _Base_iterator __victim = __victims.first; + while (__victim != __victims.second) + { + this->_M_invalidate_if(_Equal(__victim)); + _Base::erase(__victim++); + ++__count; + } + return __count; + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + _Base::erase(__first.base(), __last.base()); + } +#endif + + void + swap(multiset& __x) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_invalidate_all(); + _Base::clear(); + } + + // observers: + using _Base::key_comp; + using _Base::value_comp; + + // multiset operations: + iterator + find(const key_type& __x) + { return iterator(_Base::find(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + find(const key_type& __x) const + { return const_iterator(_Base::find(__x), this); } + + using _Base::count; + + iterator + lower_bound(const key_type& __x) + { return iterator(_Base::lower_bound(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + lower_bound(const key_type& __x) const + { return const_iterator(_Base::lower_bound(__x), this); } + + iterator + upper_bound(const key_type& __x) + { return iterator(_Base::upper_bound(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + upper_bound(const key_type& __x) const + { return const_iterator(_Base::upper_bound(__x), this); } + + std::pair + equal_range(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + std::pair + equal_range(const key_type& __x) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + void + _M_invalidate_all() + { + typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal; + this->_M_invalidate_if(_Not_equal(_Base::end())); + } + }; + + template + inline bool + operator==(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + void + swap(multiset<_Key, _Compare, _Allocator>& __x, + multiset<_Key, _Compare, _Allocator>& __y) + { return __x.swap(__y); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_base.h new file mode 100644 index 0000000..31af747 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_base.h @@ -0,0 +1,254 @@ +// Safe sequence/iterator base implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_base.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_BASE_H +#define _GLIBCXX_DEBUG_SAFE_BASE_H 1 + +#include + +namespace __gnu_debug +{ + class _Safe_sequence_base; + + /** \brief Basic functionality for a @a safe iterator. + * + * The %_Safe_iterator_base base class implements the functionality + * of a safe iterator that is not specific to a particular iterator + * type. It contains a pointer back to the sequence it references + * along with iterator version information and pointers to form a + * doubly-linked list of iterators referenced by the container. + * + * This class must not perform any operations that can throw an + * exception, or the exception guarantees of derived iterators will + * be broken. + */ + class _Safe_iterator_base + { + public: + /** The sequence this iterator references; may be NULL to indicate + a singular iterator. */ + _Safe_sequence_base* _M_sequence; + + /** The version number of this iterator. The sentinel value 0 is + * used to indicate an invalidated iterator (i.e., one that is + * singular because of an operation on the container). This + * version number must equal the version number in the sequence + * referenced by _M_sequence for the iterator to be + * non-singular. + */ + unsigned int _M_version; + + /** Pointer to the previous iterator in the sequence's list of + iterators. Only valid when _M_sequence != NULL. */ + _Safe_iterator_base* _M_prior; + + /** Pointer to the next iterator in the sequence's list of + iterators. Only valid when _M_sequence != NULL. */ + _Safe_iterator_base* _M_next; + + protected: + /** Initializes the iterator and makes it singular. */ + _Safe_iterator_base() + : _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0) + { } + + /** Initialize the iterator to reference the sequence pointed to + * by @p __seq. @p __constant is true when we are initializing a + * constant iterator, and false if it is a mutable iterator. Note + * that @p __seq may be NULL, in which case the iterator will be + * singular. Otherwise, the iterator will reference @p __seq and + * be nonsingular. + */ + _Safe_iterator_base(const _Safe_sequence_base* __seq, bool __constant) + : _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0) + { this->_M_attach(const_cast<_Safe_sequence_base*>(__seq), __constant); } + + /** Initializes the iterator to reference the same sequence that + @p __x does. @p __constant is true if this is a constant + iterator, and false if it is mutable. */ + _Safe_iterator_base(const _Safe_iterator_base& __x, bool __constant) + : _M_sequence(0), _M_version(0), _M_prior(0), _M_next(0) + { this->_M_attach(__x._M_sequence, __constant); } + + _Safe_iterator_base& + operator=(const _Safe_iterator_base&); + + explicit + _Safe_iterator_base(const _Safe_iterator_base&); + + ~_Safe_iterator_base() { this->_M_detach(); } + + /** For use in _Safe_iterator. */ + __gnu_cxx::__mutex& _M_get_mutex() throw (); + + public: + /** Attaches this iterator to the given sequence, detaching it + * from whatever sequence it was attached to originally. If the + * new sequence is the NULL pointer, the iterator is left + * unattached. + */ + void _M_attach(_Safe_sequence_base* __seq, bool __constant); + + /** Likewise, but not thread-safe. */ + void _M_attach_single(_Safe_sequence_base* __seq, bool __constant) throw (); + + /** Detach the iterator for whatever sequence it is attached to, + * if any. + */ + void _M_detach(); + + /** Likewise, but not thread-safe. */ + void _M_detach_single() throw (); + + /** Determines if we are attached to the given sequence. */ + bool _M_attached_to(const _Safe_sequence_base* __seq) const + { return _M_sequence == __seq; } + + /** Is this iterator singular? */ + _GLIBCXX_PURE bool _M_singular() const throw (); + + /** Can we compare this iterator to the given iterator @p __x? + Returns true if both iterators are nonsingular and reference + the same sequence. */ + _GLIBCXX_PURE bool _M_can_compare(const _Safe_iterator_base& __x) const throw (); + + /** Invalidate the iterator, making it singular. */ + void + _M_invalidate() + { _M_version = 0; } + + /** Reset all member variables */ + void + _M_reset() throw (); + + /** Unlink itself */ + void + _M_unlink() throw () + { + if (_M_prior) + _M_prior->_M_next = _M_next; + if (_M_next) + _M_next->_M_prior = _M_prior; + } + }; + + /** + * @brief Base class that supports tracking of iterators that + * reference a sequence. + * + * The %_Safe_sequence_base class provides basic support for + * tracking iterators into a sequence. Sequences that track + * iterators must derived from %_Safe_sequence_base publicly, so + * that safe iterators (which inherit _Safe_iterator_base) can + * attach to them. This class contains two linked lists of + * iterators, one for constant iterators and one for mutable + * iterators, and a version number that allows very fast + * invalidation of all iterators that reference the container. + * + * This class must ensure that no operation on it may throw an + * exception, otherwise @a safe sequences may fail to provide the + * exception-safety guarantees required by the C++ standard. + */ + class _Safe_sequence_base + { + public: + /// The list of mutable iterators that reference this container + _Safe_iterator_base* _M_iterators; + + /// The list of constant iterators that reference this container + _Safe_iterator_base* _M_const_iterators; + + /// The container version number. This number may never be 0. + mutable unsigned int _M_version; + + protected: + // Initialize with a version number of 1 and no iterators + _Safe_sequence_base() + : _M_iterators(0), _M_const_iterators(0), _M_version(1) + { } + + /** Notify all iterators that reference this sequence that the + sequence is being destroyed. */ + ~_Safe_sequence_base() + { this->_M_detach_all(); } + + /** Detach all iterators, leaving them singular. */ + void + _M_detach_all(); + + /** Detach all singular iterators. + * @post for all iterators i attached to this sequence, + * i->_M_version == _M_version. + */ + void + _M_detach_singular(); + + /** Revalidates all attached singular iterators. This method may + * be used to validate iterators that were invalidated before + * (but for some reason, such as an exception, need to become + * valid again). + */ + void + _M_revalidate_singular(); + + /** Swap this sequence with the given sequence. This operation + * also swaps ownership of the iterators, so that when the + * operation is complete all iterators that originally referenced + * one container now reference the other container. + */ + void + _M_swap(_Safe_sequence_base& __x); + + /** For use in _Safe_sequence. */ + __gnu_cxx::__mutex& _M_get_mutex() throw (); + + public: + /** Invalidates all iterators. */ + void + _M_invalidate_all() const + { if (++_M_version == 0) _M_version = 1; } + + /** Attach an iterator to this sequence. */ + void + _M_attach(_Safe_iterator_base* __it, bool __constant); + + /** Likewise but not thread safe. */ + void + _M_attach_single(_Safe_iterator_base* __it, bool __constant) throw (); + + /** Detach an iterator from this sequence */ + void + _M_detach(_Safe_iterator_base* __it); + + /** Likewise but not thread safe. */ + void + _M_detach_single(_Safe_iterator_base* __it) throw (); + }; +} // namespace __gnu_debug + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_iterator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_iterator.h new file mode 100644 index 0000000..b8a971b --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_iterator.h @@ -0,0 +1,719 @@ +// Safe iterator implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_iterator.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_ITERATOR_H +#define _GLIBCXX_DEBUG_SAFE_ITERATOR_H 1 + +#include +#include +#include +#include +#include +#include + +namespace __gnu_debug +{ + /** Helper struct to deal with sequence offering a before_begin + * iterator. + **/ + template + struct _BeforeBeginHelper + { + typedef typename _Sequence::const_iterator _It; + typedef typename _It::iterator_type _BaseIt; + + static bool + _S_Is(_BaseIt, const _Sequence*) + { return false; } + + static bool + _S_Is_Beginnest(_BaseIt __it, const _Sequence* __seq) + { return __it == __seq->_M_base().begin(); } + }; + + /** Iterators that derive from _Safe_iterator_base but that aren't + * _Safe_iterators can be determined singular or non-singular via + * _Safe_iterator_base. + */ + inline bool + __check_singular_aux(const _Safe_iterator_base* __x) + { return __x->_M_singular(); } + + /** The precision to which we can calculate the distance between + * two iterators. + */ + enum _Distance_precision + { + __dp_equality, //< Can compare iterator equality, only + __dp_sign, //< Can determine equality and ordering + __dp_exact //< Can determine distance precisely + }; + + /** Determine the distance between two iterators with some known + * precision. + */ + template + inline std::pair::difference_type, + _Distance_precision> + __get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs, + std::random_access_iterator_tag) + { return std::make_pair(__rhs - __lhs, __dp_exact); } + + template + inline std::pair::difference_type, + _Distance_precision> + __get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs, + std::forward_iterator_tag) + { return std::make_pair(__lhs == __rhs? 0 : 1, __dp_equality); } + + template + inline std::pair::difference_type, + _Distance_precision> + __get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs) + { + typedef typename std::iterator_traits<_Iterator1>::iterator_category + _Category; + return __get_distance(__lhs, __rhs, _Category()); + } + + /** \brief Safe iterator wrapper. + * + * The class template %_Safe_iterator is a wrapper around an + * iterator that tracks the iterator's movement among sequences and + * checks that operations performed on the "safe" iterator are + * legal. In additional to the basic iterator operations (which are + * validated, and then passed to the underlying iterator), + * %_Safe_iterator has member functions for iterator invalidation, + * attaching/detaching the iterator from sequences, and querying + * the iterator's state. + */ + template + class _Safe_iterator : public _Safe_iterator_base + { + typedef _Safe_iterator _Self; + + /// The underlying iterator + _Iterator _M_current; + + /// Determine if this is a constant iterator. + bool + _M_constant() const + { + typedef typename _Sequence::const_iterator const_iterator; + return std::__are_same::__value; + } + + typedef std::iterator_traits<_Iterator> _Traits; + + public: + typedef _Iterator iterator_type; + typedef typename _Traits::iterator_category iterator_category; + typedef typename _Traits::value_type value_type; + typedef typename _Traits::difference_type difference_type; + typedef typename _Traits::reference reference; + typedef typename _Traits::pointer pointer; + + /// @post the iterator is singular and unattached + _Safe_iterator() : _M_current() { } + + /** + * @brief Safe iterator construction from an unsafe iterator and + * its sequence. + * + * @pre @p seq is not NULL + * @post this is not singular + */ + _Safe_iterator(const _Iterator& __i, const _Sequence* __seq) + : _Safe_iterator_base(__seq, _M_constant()), _M_current(__i) + { + _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(), + _M_message(__msg_init_singular) + ._M_iterator(*this, "this")); + } + + /** + * @brief Copy construction. + */ + _Safe_iterator(const _Safe_iterator& __x) + : _Safe_iterator_base(__x, _M_constant()), _M_current(__x._M_current) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 408. Is vector > forbidden? + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() + || __x._M_current == _Iterator(), + _M_message(__msg_init_copy_singular) + ._M_iterator(*this, "this") + ._M_iterator(__x, "other")); + } + +#if __cplusplus >= 201103L + /** + * @brief Move construction. + * @post __x is singular and unattached + */ + _Safe_iterator(_Safe_iterator&& __x) : _M_current() + { + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() + || __x._M_current == _Iterator(), + _M_message(__msg_init_copy_singular) + ._M_iterator(*this, "this") + ._M_iterator(__x, "other")); + std::swap(_M_current, __x._M_current); + this->_M_attach(__x._M_sequence); + __x._M_detach(); + } +#endif + + /** + * @brief Converting constructor from a mutable iterator to a + * constant iterator. + */ + template + _Safe_iterator( + const _Safe_iterator<_MutableIterator, + typename __gnu_cxx::__enable_if<(std::__are_same<_MutableIterator, + typename _Sequence::iterator::iterator_type>::__value), + _Sequence>::__type>& __x) + : _Safe_iterator_base(__x, _M_constant()), _M_current(__x.base()) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 408. Is vector > forbidden? + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() + || __x.base() == _Iterator(), + _M_message(__msg_init_const_singular) + ._M_iterator(*this, "this") + ._M_iterator(__x, "other")); + } + + /** + * @brief Copy assignment. + */ + _Safe_iterator& + operator=(const _Safe_iterator& __x) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 408. Is vector > forbidden? + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() + || __x._M_current == _Iterator(), + _M_message(__msg_copy_singular) + ._M_iterator(*this, "this") + ._M_iterator(__x, "other")); + _M_current = __x._M_current; + this->_M_attach(__x._M_sequence); + return *this; + } + +#if __cplusplus >= 201103L + /** + * @brief Move assignment. + * @post __x is singular and unattached + */ + _Safe_iterator& + operator=(_Safe_iterator&& __x) + { + _GLIBCXX_DEBUG_VERIFY(this != &__x, + _M_message(__msg_self_move_assign) + ._M_iterator(*this, "this")); + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() + || __x._M_current == _Iterator(), + _M_message(__msg_copy_singular) + ._M_iterator(*this, "this") + ._M_iterator(__x, "other")); + _M_current = __x._M_current; + _M_attach(__x._M_sequence); + __x._M_detach(); + __x._M_current = _Iterator(); + return *this; + } +#endif + + /** + * @brief Iterator dereference. + * @pre iterator is dereferenceable + */ + reference + operator*() const + { + _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(), + _M_message(__msg_bad_deref) + ._M_iterator(*this, "this")); + return *_M_current; + } + + /** + * @brief Iterator dereference. + * @pre iterator is dereferenceable + * @todo Make this correct w.r.t. iterators that return proxies + * @todo Use addressof() instead of & operator + */ + pointer + operator->() const + { + _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(), + _M_message(__msg_bad_deref) + ._M_iterator(*this, "this")); + return &*_M_current; + } + + // ------ Input iterator requirements ------ + /** + * @brief Iterator preincrement + * @pre iterator is incrementable + */ + _Safe_iterator& + operator++() + { + _GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(), + _M_message(__msg_bad_inc) + ._M_iterator(*this, "this")); + ++_M_current; + return *this; + } + + /** + * @brief Iterator postincrement + * @pre iterator is incrementable + */ + _Safe_iterator + operator++(int) + { + _GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(), + _M_message(__msg_bad_inc) + ._M_iterator(*this, "this")); + _Safe_iterator __tmp(*this); + ++_M_current; + return __tmp; + } + + // ------ Bidirectional iterator requirements ------ + /** + * @brief Iterator predecrement + * @pre iterator is decrementable + */ + _Safe_iterator& + operator--() + { + _GLIBCXX_DEBUG_VERIFY(this->_M_decrementable(), + _M_message(__msg_bad_dec) + ._M_iterator(*this, "this")); + --_M_current; + return *this; + } + + /** + * @brief Iterator postdecrement + * @pre iterator is decrementable + */ + _Safe_iterator + operator--(int) + { + _GLIBCXX_DEBUG_VERIFY(this->_M_decrementable(), + _M_message(__msg_bad_dec) + ._M_iterator(*this, "this")); + _Safe_iterator __tmp(*this); + --_M_current; + return __tmp; + } + + // ------ Random access iterator requirements ------ + reference + operator[](const difference_type& __n) const + { + _GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(__n) + && this->_M_can_advance(__n+1), + _M_message(__msg_iter_subscript_oob) + ._M_iterator(*this)._M_integer(__n)); + + return _M_current[__n]; + } + + _Safe_iterator& + operator+=(const difference_type& __n) + { + _GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(__n), + _M_message(__msg_advance_oob) + ._M_iterator(*this)._M_integer(__n)); + _M_current += __n; + return *this; + } + + _Safe_iterator + operator+(const difference_type& __n) const + { + _Safe_iterator __tmp(*this); + __tmp += __n; + return __tmp; + } + + _Safe_iterator& + operator-=(const difference_type& __n) + { + _GLIBCXX_DEBUG_VERIFY(this->_M_can_advance(-__n), + _M_message(__msg_retreat_oob) + ._M_iterator(*this)._M_integer(__n)); + _M_current += -__n; + return *this; + } + + _Safe_iterator + operator-(const difference_type& __n) const + { + _Safe_iterator __tmp(*this); + __tmp -= __n; + return __tmp; + } + + // ------ Utilities ------ + /** + * @brief Return the underlying iterator + */ + _Iterator + base() const { return _M_current; } + + /** + * @brief Conversion to underlying non-debug iterator to allow + * better interaction with non-debug containers. + */ + operator _Iterator() const { return _M_current; } + + /** Attach iterator to the given sequence. */ + void + _M_attach(_Safe_sequence_base* __seq) + { + _Safe_iterator_base::_M_attach(__seq, _M_constant()); + } + + /** Likewise, but not thread-safe. */ + void + _M_attach_single(_Safe_sequence_base* __seq) + { + _Safe_iterator_base::_M_attach_single(__seq, _M_constant()); + } + + /// Is the iterator dereferenceable? + bool + _M_dereferenceable() const + { return !this->_M_singular() && !_M_is_end() && !_M_is_before_begin(); } + + /// Is the iterator before a dereferenceable one? + bool + _M_before_dereferenceable() const + { + if (this->_M_incrementable()) + { + _Iterator __base = base(); + return ++__base != _M_get_sequence()->_M_base().end(); + } + return false; + } + + /// Is the iterator incrementable? + bool + _M_incrementable() const + { return !this->_M_singular() && !_M_is_end(); } + + // Is the iterator decrementable? + bool + _M_decrementable() const { return !_M_singular() && !_M_is_begin(); } + + // Can we advance the iterator @p __n steps (@p __n may be negative) + bool + _M_can_advance(const difference_type& __n) const; + + // Is the iterator range [*this, __rhs) valid? + template + bool + _M_valid_range(const _Safe_iterator<_Other, _Sequence>& __rhs) const; + + // The sequence this iterator references. + const _Sequence* + _M_get_sequence() const + { return static_cast(_M_sequence); } + + /// Is this iterator equal to the sequence's begin() iterator? + bool _M_is_begin() const + { return base() == _M_get_sequence()->_M_base().begin(); } + + /// Is this iterator equal to the sequence's end() iterator? + bool _M_is_end() const + { return base() == _M_get_sequence()->_M_base().end(); } + + /// Is this iterator equal to the sequence's before_begin() iterator if + /// any? + bool _M_is_before_begin() const + { + return _BeforeBeginHelper<_Sequence>::_S_Is(base(), _M_get_sequence()); + } + + /// Is this iterator equal to the sequence's before_begin() iterator if + /// any or begin() otherwise? + bool _M_is_beginnest() const + { + return _BeforeBeginHelper<_Sequence>::_S_Is_Beginnest(base(), + _M_get_sequence()); + } + }; + + template + inline bool + operator==(const _Safe_iterator<_IteratorL, _Sequence>& __lhs, + const _Safe_iterator<_IteratorR, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_compare_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() == __rhs.base(); + } + + template + inline bool + operator==(const _Safe_iterator<_Iterator, _Sequence>& __lhs, + const _Safe_iterator<_Iterator, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_compare_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() == __rhs.base(); + } + + template + inline bool + operator!=(const _Safe_iterator<_IteratorL, _Sequence>& __lhs, + const _Safe_iterator<_IteratorR, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_compare_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() != __rhs.base(); + } + + template + inline bool + operator!=(const _Safe_iterator<_Iterator, _Sequence>& __lhs, + const _Safe_iterator<_Iterator, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_compare_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() != __rhs.base(); + } + + template + inline bool + operator<(const _Safe_iterator<_IteratorL, _Sequence>& __lhs, + const _Safe_iterator<_IteratorR, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_order_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_order_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() < __rhs.base(); + } + + template + inline bool + operator<(const _Safe_iterator<_Iterator, _Sequence>& __lhs, + const _Safe_iterator<_Iterator, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_order_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_order_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() < __rhs.base(); + } + + template + inline bool + operator<=(const _Safe_iterator<_IteratorL, _Sequence>& __lhs, + const _Safe_iterator<_IteratorR, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_order_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_order_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() <= __rhs.base(); + } + + template + inline bool + operator<=(const _Safe_iterator<_Iterator, _Sequence>& __lhs, + const _Safe_iterator<_Iterator, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_order_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_order_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() <= __rhs.base(); + } + + template + inline bool + operator>(const _Safe_iterator<_IteratorL, _Sequence>& __lhs, + const _Safe_iterator<_IteratorR, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_order_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_order_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() > __rhs.base(); + } + + template + inline bool + operator>(const _Safe_iterator<_Iterator, _Sequence>& __lhs, + const _Safe_iterator<_Iterator, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_order_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_order_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() > __rhs.base(); + } + + template + inline bool + operator>=(const _Safe_iterator<_IteratorL, _Sequence>& __lhs, + const _Safe_iterator<_IteratorR, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_order_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_order_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() >= __rhs.base(); + } + + template + inline bool + operator>=(const _Safe_iterator<_Iterator, _Sequence>& __lhs, + const _Safe_iterator<_Iterator, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_order_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_order_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() >= __rhs.base(); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // According to the resolution of DR179 not only the various comparison + // operators but also operator- must accept mixed iterator/const_iterator + // parameters. + template + inline typename _Safe_iterator<_IteratorL, _Sequence>::difference_type + operator-(const _Safe_iterator<_IteratorL, _Sequence>& __lhs, + const _Safe_iterator<_IteratorR, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_distance_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_distance_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() - __rhs.base(); + } + + template + inline typename _Safe_iterator<_Iterator, _Sequence>::difference_type + operator-(const _Safe_iterator<_Iterator, _Sequence>& __lhs, + const _Safe_iterator<_Iterator, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_distance_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_distance_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() - __rhs.base(); + } + + template + inline _Safe_iterator<_Iterator, _Sequence> + operator+(typename _Safe_iterator<_Iterator,_Sequence>::difference_type __n, + const _Safe_iterator<_Iterator, _Sequence>& __i) + { return __i + __n; } +} // namespace __gnu_debug + +#include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_iterator.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_iterator.tcc new file mode 100644 index 0000000..daa9c6b --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_iterator.tcc @@ -0,0 +1,106 @@ +// Debugging iterator implementation (out of line) -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_iterator.tcc + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_ITERATOR_TCC +#define _GLIBCXX_DEBUG_SAFE_ITERATOR_TCC 1 + +namespace __gnu_debug +{ + template + bool + _Safe_iterator<_Iterator, _Sequence>:: + _M_can_advance(const difference_type& __n) const + { + typedef typename _Sequence::const_iterator const_debug_iterator; + typedef typename const_debug_iterator::iterator_type const_iterator; + + if (this->_M_singular()) + return false; + if (__n == 0) + return true; + if (__n < 0) + { + const_iterator __begin = _M_get_sequence()->_M_base().begin(); + std::pair __dist = + __get_distance(__begin, base()); + bool __ok = ((__dist.second == __dp_exact && __dist.first >= -__n) + || (__dist.second != __dp_exact && __dist.first > 0)); + return __ok; + } + else + { + const_iterator __end = _M_get_sequence()->_M_base().end(); + std::pair __dist = + __get_distance(base(), __end); + bool __ok = ((__dist.second == __dp_exact && __dist.first >= __n) + || (__dist.second != __dp_exact && __dist.first > 0)); + return __ok; + } + } + + template + template + bool + _Safe_iterator<_Iterator, _Sequence>:: + _M_valid_range(const _Safe_iterator<_Other, _Sequence>& __rhs) const + { + if (!_M_can_compare(__rhs)) + return false; + + /* Determine if we can order the iterators without the help of + the container */ + std::pair __dist = + __get_distance(base(), __rhs.base()); + switch (__dist.second) { + case __dp_equality: + if (__dist.first == 0) + return true; + break; + + case __dp_sign: + case __dp_exact: + return __dist.first >= 0; + } + + /* We can only test for equality, but check if one of the + iterators is at an extreme. */ + /* Optim for classic [begin, it) or [it, end) ranges, limit checks + * when code is valid. Note, for the special case of forward_list, + * before_begin replaces the role of begin. */ + if (_M_is_beginnest() || __rhs._M_is_end()) + return true; + if (_M_is_end() || __rhs._M_is_beginnest()) + return false; + + // Assume that this is a valid range; we can't check anything else + return true; + } +} // namespace __gnu_debug + +#endif + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_local_iterator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_local_iterator.h new file mode 100644 index 0000000..6426ed8 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_local_iterator.h @@ -0,0 +1,369 @@ +// Safe iterator implementation -*- C++ -*- + +// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_local_iterator.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_LOCAL_ITERATOR_H +#define _GLIBCXX_DEBUG_SAFE_LOCAL_ITERATOR_H 1 + +#include +#include +#include +#include +#include + +namespace __gnu_debug +{ + /** \brief Safe iterator wrapper. + * + * The class template %_Safe_local_iterator is a wrapper around an + * iterator that tracks the iterator's movement among sequences and + * checks that operations performed on the "safe" iterator are + * legal. In additional to the basic iterator operations (which are + * validated, and then passed to the underlying iterator), + * %_Safe_local_iterator has member functions for iterator invalidation, + * attaching/detaching the iterator from sequences, and querying + * the iterator's state. + */ + template + class _Safe_local_iterator : public _Safe_local_iterator_base + { + typedef _Safe_local_iterator _Self; + typedef typename _Sequence::size_type size_type; + + /// The underlying iterator + _Iterator _M_current; + + /// The bucket this local iterator belongs to + size_type _M_bucket; + + /// Determine if this is a constant iterator. + bool + _M_constant() const + { + typedef typename _Sequence::const_local_iterator const_iterator; + return std::__are_same::__value; + } + + typedef std::iterator_traits<_Iterator> _Traits; + + public: + typedef _Iterator iterator_type; + typedef typename _Traits::iterator_category iterator_category; + typedef typename _Traits::value_type value_type; + typedef typename _Traits::difference_type difference_type; + typedef typename _Traits::reference reference; + typedef typename _Traits::pointer pointer; + + /// @post the iterator is singular and unattached + _Safe_local_iterator() : _M_current() { } + + /** + * @brief Safe iterator construction from an unsafe iterator and + * its sequence. + * + * @pre @p seq is not NULL + * @post this is not singular + */ + _Safe_local_iterator(const _Iterator& __i, size_type __bucket, + const _Sequence* __seq) + : _Safe_local_iterator_base(__seq, _M_constant()), _M_current(__i), + _M_bucket(__bucket) + { + _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), + _M_message(__msg_init_singular) + ._M_iterator(*this, "this")); + } + + /** + * @brief Copy construction. + */ + _Safe_local_iterator(const _Safe_local_iterator& __x) + : _Safe_local_iterator_base(__x, _M_constant()), + _M_current(__x._M_current), _M_bucket(__x._M_bucket) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 408. Is vector > forbidden? + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() + || __x._M_current == _Iterator(), + _M_message(__msg_init_copy_singular) + ._M_iterator(*this, "this") + ._M_iterator(__x, "other")); + } + + /** + * @brief Converting constructor from a mutable iterator to a + * constant iterator. + */ + template + _Safe_local_iterator( + const _Safe_local_iterator<_MutableIterator, + typename __gnu_cxx::__enable_if::__value, + _Sequence>::__type>& __x) + : _Safe_local_iterator_base(__x, _M_constant()), + _M_current(__x.base()), _M_bucket(__x._M_bucket) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 408. Is vector > forbidden? + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() + || __x.base() == _Iterator(), + _M_message(__msg_init_const_singular) + ._M_iterator(*this, "this") + ._M_iterator(__x, "other")); + } + + /** + * @brief Copy assignment. + */ + _Safe_local_iterator& + operator=(const _Safe_local_iterator& __x) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 408. Is vector > forbidden? + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular() + || __x._M_current == _Iterator(), + _M_message(__msg_copy_singular) + ._M_iterator(*this, "this") + ._M_iterator(__x, "other")); + _M_current = __x._M_current; + _M_bucket = __x._M_bucket; + this->_M_attach(__x._M_sequence); + return *this; + } + + /** + * @brief Iterator dereference. + * @pre iterator is dereferenceable + */ + reference + operator*() const + { + _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(), + _M_message(__msg_bad_deref) + ._M_iterator(*this, "this")); + return *_M_current; + } + + /** + * @brief Iterator dereference. + * @pre iterator is dereferenceable + * @todo Make this correct w.r.t. iterators that return proxies + * @todo Use addressof() instead of & operator + */ + pointer + operator->() const + { + _GLIBCXX_DEBUG_VERIFY(this->_M_dereferenceable(), + _M_message(__msg_bad_deref) + ._M_iterator(*this, "this")); + return &*_M_current; + } + + // ------ Input iterator requirements ------ + /** + * @brief Iterator preincrement + * @pre iterator is incrementable + */ + _Safe_local_iterator& + operator++() + { + _GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(), + _M_message(__msg_bad_inc) + ._M_iterator(*this, "this")); + ++_M_current; + return *this; + } + + /** + * @brief Iterator postincrement + * @pre iterator is incrementable + */ + _Safe_local_iterator + operator++(int) + { + _GLIBCXX_DEBUG_VERIFY(this->_M_incrementable(), + _M_message(__msg_bad_inc) + ._M_iterator(*this, "this")); + _Safe_local_iterator __tmp(*this); + ++_M_current; + return __tmp; + } + + // ------ Utilities ------ + /** + * @brief Return the underlying iterator + */ + _Iterator + base() const { return _M_current; } + + /** + * @brief Return the bucket + */ + size_type + bucket() const { return _M_bucket; } + + /** + * @brief Conversion to underlying non-debug iterator to allow + * better interaction with non-debug containers. + */ + operator _Iterator() const { return _M_current; } + + /** Attach iterator to the given sequence. */ + void + _M_attach(_Safe_sequence_base* __seq) + { _Safe_iterator_base::_M_attach(__seq, _M_constant()); } + + /** Likewise, but not thread-safe. */ + void + _M_attach_single(_Safe_sequence_base* __seq) + { _Safe_iterator_base::_M_attach_single(__seq, _M_constant()); } + + /// Is the iterator dereferenceable? + bool + _M_dereferenceable() const + { return !this->_M_singular() && !_M_is_end(); } + + /// Is the iterator incrementable? + bool + _M_incrementable() const + { return !this->_M_singular() && !_M_is_end(); } + + // Is the iterator range [*this, __rhs) valid? + template + bool + _M_valid_range(const _Safe_local_iterator<_Other, + _Sequence>& __rhs) const; + + // The sequence this iterator references. + const _Sequence* + _M_get_sequence() const + { return static_cast(_M_sequence); } + + /// Is this iterator equal to the sequence's begin() iterator? + bool _M_is_begin() const + { return base() == _M_get_sequence()->_M_base().begin(_M_bucket); } + + /// Is this iterator equal to the sequence's end() iterator? + bool _M_is_end() const + { return base() == _M_get_sequence()->_M_base().end(_M_bucket); } + + /// Is this iterator part of the same bucket as the other one? + template + bool _M_in_same_bucket(const _Safe_local_iterator<_Other, + _Sequence>& __other) const + { return _M_bucket == __other.bucket(); } + }; + + template + inline bool + operator==(const _Safe_local_iterator<_IteratorL, _Sequence>& __lhs, + const _Safe_local_iterator<_IteratorR, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_compare_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_compare_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_in_same_bucket(__rhs), + _M_message(__msg_local_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() == __rhs.base(); + } + + template + inline bool + operator==(const _Safe_local_iterator<_Iterator, _Sequence>& __lhs, + const _Safe_local_iterator<_Iterator, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_compare_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_in_same_bucket(__rhs), + _M_message(__msg_local_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() == __rhs.base(); + } + + template + inline bool + operator!=(const _Safe_local_iterator<_IteratorL, _Sequence>& __lhs, + const _Safe_local_iterator<_IteratorR, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_compare_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_in_same_bucket(__rhs), + _M_message(__msg_local_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() != __rhs.base(); + } + + template + inline bool + operator!=(const _Safe_local_iterator<_Iterator, _Sequence>& __lhs, + const _Safe_local_iterator<_Iterator, _Sequence>& __rhs) + { + _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(), + _M_message(__msg_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_can_compare(__rhs), + _M_message(__msg_compare_different) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + _GLIBCXX_DEBUG_VERIFY(__lhs._M_in_same_bucket(__rhs), + _M_message(__msg_local_iter_compare_bad) + ._M_iterator(__lhs, "lhs") + ._M_iterator(__rhs, "rhs")); + return __lhs.base() != __rhs.base(); + } +} // namespace __gnu_debug + +#include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_local_iterator.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_local_iterator.tcc new file mode 100644 index 0000000..fac971e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_local_iterator.tcc @@ -0,0 +1,75 @@ +// Debugging iterator implementation (out of line) -*- C++ -*- + +// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_local_iterator.tcc + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_LOCAL_ITERATOR_TCC +#define _GLIBCXX_DEBUG_SAFE_LOCAL_ITERATOR_TCC 1 + +namespace __gnu_debug +{ + template + template + bool + _Safe_local_iterator<_Iterator, _Sequence>:: + _M_valid_range(const _Safe_local_iterator<_Other, _Sequence>& __rhs) const + { + if (!_M_can_compare(__rhs)) + return false; + if (_M_bucket != __rhs._M_bucket) + return false; + + /* Determine if we can order the iterators without the help of + the container */ + std::pair __dist = + __get_distance(base(), __rhs.base()); + switch (__dist.second) + { + case __dp_equality: + if (__dist.first == 0) + return true; + break; + + case __dp_sign: + case __dp_exact: + return __dist.first >= 0; + } + + /* We can only test for equality, but check if one of the + iterators is at an extreme. */ + /* Optim for classic [begin, it) or [it, end) ranges, limit checks + * when code is valid. */ + if (_M_is_begin() || __rhs._M_is_end()) + return true; + if (_M_is_end() || __rhs._M_is_begin()) + return false; + + // Assume that this is a valid range; we can't check anything else + return true; + } +} // namespace __gnu_debug + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_sequence.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_sequence.h new file mode 100644 index 0000000..b457ede --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_sequence.h @@ -0,0 +1,134 @@ +// Safe sequence implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_sequence.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_SEQUENCE_H +#define _GLIBCXX_DEBUG_SAFE_SEQUENCE_H 1 + +#include +#include +#include +#include + +namespace __gnu_debug +{ + template + class _Safe_iterator; + + /** A simple function object that returns true if the passed-in + * value is not equal to the stored value. It saves typing over + * using both bind1st and not_equal. + */ + template + class _Not_equal_to + { + _Type __value; + + public: + explicit _Not_equal_to(const _Type& __v) : __value(__v) { } + + bool + operator()(const _Type& __x) const + { return __value != __x; } + }; + + /** A simple function object that returns true if the passed-in + * value is equal to the stored value. */ + template + class _Equal_to + { + _Type __value; + + public: + explicit _Equal_to(const _Type& __v) : __value(__v) { } + + bool + operator()(const _Type& __x) const + { return __value == __x; } + }; + + /** A function object that returns true when the given random access + iterator is at least @c n steps away from the given iterator. */ + template + class _After_nth_from + { + typedef typename std::iterator_traits<_Iterator>::difference_type + difference_type; + + _Iterator _M_base; + difference_type _M_n; + + public: + _After_nth_from(const difference_type& __n, const _Iterator& __base) + : _M_base(__base), _M_n(__n) { } + + bool + operator()(const _Iterator& __x) const + { return __x - _M_base >= _M_n; } + }; + + /** + * @brief Base class for constructing a @a safe sequence type that + * tracks iterators that reference it. + * + * The class template %_Safe_sequence simplifies the construction of + * @a safe sequences that track the iterators that reference the + * sequence, so that the iterators are notified of changes in the + * sequence that may affect their operation, e.g., if the container + * invalidates its iterators or is destructed. This class template + * may only be used by deriving from it and passing the name of the + * derived class as its template parameter via the curiously + * recurring template pattern. The derived class must have @c + * iterator and @c const_iterator types that are instantiations of + * class template _Safe_iterator for this sequence. Iterators will + * then be tracked automatically. + */ + template + class _Safe_sequence : public _Safe_sequence_base + { + public: + /** Invalidates all iterators @c x that reference this sequence, + are not singular, and for which @c __pred(x) returns @c + true. @c __pred will be invoked with the normal iterators nested + in the safe ones. */ + template + void + _M_invalidate_if(_Predicate __pred); + + /** Transfers all iterators @c x that reference @c from sequence, + are not singular, and for which @c __pred(x) returns @c + true. @c __pred will be invoked with the normal iterators nested + in the safe ones. */ + template + void + _M_transfer_from_if(_Safe_sequence& __from, _Predicate __pred); + }; +} // namespace __gnu_debug + +#include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_sequence.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_sequence.tcc new file mode 100644 index 0000000..d6f8740 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_sequence.tcc @@ -0,0 +1,150 @@ +// Safe sequence implementation -*- C++ -*- + +// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_sequence.tcc + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_SEQUENCE_TCC +#define _GLIBCXX_DEBUG_SAFE_SEQUENCE_TCC 1 + +namespace __gnu_debug +{ + template + template + void + _Safe_sequence<_Sequence>:: + _M_invalidate_if(_Predicate __pred) + { + typedef typename _Sequence::iterator iterator; + typedef typename _Sequence::const_iterator const_iterator; + + __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex()); + for (_Safe_iterator_base* __iter = _M_iterators; __iter;) + { + iterator* __victim = static_cast(__iter); + __iter = __iter->_M_next; + if (!__victim->_M_singular() && __pred(__victim->base())) + { + __victim->_M_invalidate(); + } + } + + for (_Safe_iterator_base* __iter2 = _M_const_iterators; __iter2;) + { + const_iterator* __victim = static_cast(__iter2); + __iter2 = __iter2->_M_next; + if (!__victim->_M_singular() && __pred(__victim->base())) + { + __victim->_M_invalidate(); + } + } + } + + template + template + void + _Safe_sequence<_Sequence>:: + _M_transfer_from_if(_Safe_sequence& __from, _Predicate __pred) + { + typedef typename _Sequence::iterator iterator; + typedef typename _Sequence::const_iterator const_iterator; + + _Safe_iterator_base* __transfered_iterators = 0; + _Safe_iterator_base* __transfered_const_iterators = 0; + _Safe_iterator_base* __last_iterator = 0; + _Safe_iterator_base* __last_const_iterator = 0; + { + // We lock __from first and detach iterator(s) to transfer + __gnu_cxx::__scoped_lock sentry(__from._M_get_mutex()); + + for (_Safe_iterator_base* __iter = __from._M_iterators; __iter;) + { + iterator* __victim = static_cast(__iter); + __iter = __iter->_M_next; + if (!__victim->_M_singular() && __pred(__victim->base())) + { + __victim->_M_detach_single(); + if (__transfered_iterators) + { + __victim->_M_next = __transfered_iterators; + __transfered_iterators->_M_prior = __victim; + } + else + __last_iterator = __victim; + __victim->_M_sequence = this; + __victim->_M_version = this->_M_version; + __transfered_iterators = __victim; + } + } + + for (_Safe_iterator_base* __iter2 = __from._M_const_iterators; + __iter2;) + { + const_iterator* __victim = static_cast(__iter2); + __iter2 = __iter2->_M_next; + if (!__victim->_M_singular() && __pred(__victim->base())) + { + __victim->_M_detach_single(); + if (__transfered_const_iterators) + { + __victim->_M_next = __transfered_const_iterators; + __transfered_const_iterators->_M_prior = __victim; + } + else + __last_const_iterator = __victim; + __victim->_M_sequence = this; + __victim->_M_version = this->_M_version; + __transfered_const_iterators = __victim; + } + } + } + + // Now we can lock *this and add the transfered iterators if any + if (__last_iterator || __last_const_iterator) + { + __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex()); + if (__last_iterator) + { + if (this->_M_iterators) + { + this->_M_iterators->_M_prior = __last_iterator; + __last_iterator->_M_next = this->_M_iterators; + } + this->_M_iterators = __transfered_iterators; + } + if (__last_const_iterator) + { + if (this->_M_const_iterators) + { + this->_M_const_iterators->_M_prior = __last_const_iterator; + __last_const_iterator->_M_next = this->_M_const_iterators; + } + this->_M_const_iterators = __transfered_const_iterators; + } + } + } +} // namespace __gnu_debug + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_base.h new file mode 100644 index 0000000..23026cb --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_base.h @@ -0,0 +1,175 @@ +// Safe container/iterator base implementation -*- C++ -*- + +// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_unordered_base.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_UNORDERED_BASE_H +#define _GLIBCXX_DEBUG_SAFE_UNORDERED_BASE_H 1 + +#include + +namespace __gnu_debug +{ + class _Safe_unordered_container_base; + + /** \brief Basic functionality for a @a safe iterator. + * + * The %_Safe_local_iterator_base base class implements the functionality + * of a safe local iterator that is not specific to a particular iterator + * type. It contains a pointer back to the container it references + * along with iterator version information and pointers to form a + * doubly-linked list of local iterators referenced by the container. + * + * This class must not perform any operations that can throw an + * exception, or the exception guarantees of derived iterators will + * be broken. + */ + class _Safe_local_iterator_base : public _Safe_iterator_base + { + protected: + /** Initializes the iterator and makes it singular. */ + _Safe_local_iterator_base() + { } + + /** Initialize the iterator to reference the container pointed to + * by @p __seq. @p __constant is true when we are initializing a + * constant local iterator, and false if it is a mutable local iterator. + * Note that @p __seq may be NULL, in which case the iterator will be + * singular. Otherwise, the iterator will reference @p __seq and + * be nonsingular. + */ + _Safe_local_iterator_base(const _Safe_sequence_base* __seq, bool __constant) + { this->_M_attach(const_cast<_Safe_sequence_base*>(__seq), __constant); } + + /** Initializes the iterator to reference the same container that + @p __x does. @p __constant is true if this is a constant + iterator, and false if it is mutable. */ + _Safe_local_iterator_base(const _Safe_local_iterator_base& __x, + bool __constant) + { this->_M_attach(__x._M_sequence, __constant); } + + _Safe_local_iterator_base& + operator=(const _Safe_local_iterator_base&); + + explicit + _Safe_local_iterator_base(const _Safe_local_iterator_base&); + + ~_Safe_local_iterator_base() { this->_M_detach(); } + + _Safe_unordered_container_base* + _M_get_container() const _GLIBCXX_NOEXCEPT; + + public: + /** Attaches this iterator to the given container, detaching it + * from whatever container it was attached to originally. If the + * new container is the NULL pointer, the iterator is left + * unattached. + */ + void _M_attach(_Safe_sequence_base* __seq, bool __constant); + + /** Likewise, but not thread-safe. */ + void _M_attach_single(_Safe_sequence_base* __seq, bool __constant) throw (); + + /** Detach the iterator for whatever container it is attached to, + * if any. + */ + void _M_detach(); + + /** Likewise, but not thread-safe. */ + void _M_detach_single() throw (); + }; + + /** + * @brief Base class that supports tracking of local iterators that + * reference an unordered container. + * + * The %_Safe_unordered_container_base class provides basic support for + * tracking iterators into an unordered container. Containers that track + * iterators must derived from %_Safe_unordered_container_base publicly, so + * that safe iterators (which inherit _Safe_iterator_base) can + * attach to them. This class contains four linked lists of + * iterators, one for constant iterators, one for mutable + * iterators, one for constant local iterators, one for mutable local + * iterators and a version number that allows very fast + * invalidation of all iterators that reference the container. + * + * This class must ensure that no operation on it may throw an + * exception, otherwise @a safe containers may fail to provide the + * exception-safety guarantees required by the C++ standard. + */ + class _Safe_unordered_container_base : public _Safe_sequence_base + { + typedef _Safe_sequence_base _Base; + public: + /// The list of mutable local iterators that reference this container + _Safe_iterator_base* _M_local_iterators; + + /// The list of constant local iterators that reference this container + _Safe_iterator_base* _M_const_local_iterators; + + protected: + // Initialize with a version number of 1 and no iterators + _Safe_unordered_container_base() + : _M_local_iterators(0), _M_const_local_iterators(0) + { } + + /** Notify all iterators that reference this container that the + container is being destroyed. */ + ~_Safe_unordered_container_base() + { this->_M_detach_all(); } + + /** Detach all iterators, leaving them singular. */ + void + _M_detach_all(); + + /** Swap this container with the given container. This operation + * also swaps ownership of the iterators, so that when the + * operation is complete all iterators that originally referenced + * one container now reference the other container. + */ + void + _M_swap(_Safe_unordered_container_base& __x); + + public: + /** Attach an iterator to this container. */ + void + _M_attach_local(_Safe_iterator_base* __it, bool __constant); + + /** Likewise but not thread safe. */ + void + _M_attach_local_single(_Safe_iterator_base* __it, bool __constant) throw (); + + /** Detach an iterator from this container */ + void + _M_detach_local(_Safe_iterator_base* __it); + + /** Likewise but not thread safe. */ + void + _M_detach_local_single(_Safe_iterator_base* __it) throw (); + }; +} // namespace __gnu_debug + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_container.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_container.h new file mode 100644 index 0000000..3934542 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_container.h @@ -0,0 +1,81 @@ +// Safe container implementation -*- C++ -*- + +// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_unordered_container.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_UNORDERED_CONTAINER_H +#define _GLIBCXX_DEBUG_SAFE_UNORDERED_CONTAINER_H 1 + +#include +#include +#include +#include + +namespace __gnu_debug +{ + /** + * @brief Base class for constructing a @a safe unordered container type + * that tracks iterators that reference it. + * + * The class template %_Safe_unordered_container simplifies the + * construction of @a safe unordered containers that track the iterators + * that reference the container, so that the iterators are notified of + * changes in the container that may affect their operation, e.g., if + * the container invalidates its iterators or is destructed. This class + * template may only be used by deriving from it and passing the name + * of the derived class as its template parameter via the curiously + * recurring template pattern. The derived class must have @c + * iterator and @c const_iterator types that are instantiations of + * class template _Safe_iterator for this container and @c local_iterator + * and @c const_local_iterator types that are instantiations of class + * template _Safe_local_iterator for this container. Iterators will + * then be tracked automatically. + */ + template + class _Safe_unordered_container : public _Safe_unordered_container_base + { + public: + /** Invalidates all iterators @c x that reference this container, + are not singular, and for which @c __pred(x) returns @c + true. @c __pred will be invoked with the normal iterators nested + in the safe ones. */ + template + void + _M_invalidate_if(_Predicate __pred); + + /** Invalidates all local iterators @c x that reference this container, + are not singular, and for which @c __pred(x) returns @c + true. @c __pred will be invoked with the normal ilocal iterators + nested in the safe ones. */ + template + void + _M_invalidate_local_if(_Predicate __pred); + }; +} // namespace __gnu_debug + +#include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_container.tcc b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_container.tcc new file mode 100644 index 0000000..df3bcab --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/safe_unordered_container.tcc @@ -0,0 +1,100 @@ +// Safe container implementation -*- C++ -*- + +// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/safe_unordered_container.tcc + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SAFE_UNORDERED_CONTAINER_TCC +#define _GLIBCXX_DEBUG_SAFE_UNORDERED_CONTAINER_TCC 1 + +namespace __gnu_debug +{ + template + template + void + _Safe_unordered_container<_Container>:: + _M_invalidate_if(_Predicate __pred) + { + typedef typename _Container::iterator iterator; + typedef typename _Container::const_iterator const_iterator; + + __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex()); + for (_Safe_iterator_base* __iter = _M_iterators; __iter;) + { + iterator* __victim = static_cast(__iter); + __iter = __iter->_M_next; + if (!__victim->_M_singular() && __pred(__victim->base())) + { + __victim->_M_invalidate(); + } + } + + for (_Safe_iterator_base* __iter2 = _M_const_iterators; __iter2;) + { + const_iterator* __victim = static_cast(__iter2); + __iter2 = __iter2->_M_next; + if (!__victim->_M_singular() && __pred(__victim->base())) + { + __victim->_M_invalidate(); + } + } + } + + + template + template + void + _Safe_unordered_container<_Container>:: + _M_invalidate_local_if(_Predicate __pred) + { + typedef typename _Container::local_iterator local_iterator; + typedef typename _Container::const_local_iterator const_local_iterator; + + __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex()); + for (_Safe_iterator_base* __iter = _M_local_iterators; __iter;) + { + local_iterator* __victim = static_cast(__iter); + __iter = __iter->_M_next; + if (!__victim->_M_singular() && __pred(__victim->base())) + { + __victim->_M_invalidate(); + } + } + + for (_Safe_iterator_base* __iter2 = _M_const_local_iterators; __iter2;) + { + const_local_iterator* __victim = + static_cast(__iter2); + __iter2 = __iter2->_M_next; + if (!__victim->_M_singular() && __pred(__victim->base())) + { + __victim->_M_invalidate(); + } + } + } + +} // namespace __gnu_debug + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/set b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/set new file mode 100644 index 0000000..597b13c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/set @@ -0,0 +1,36 @@ +// Debugging set/multiset implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/set + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SET +#define _GLIBCXX_DEBUG_SET 1 + +#include +#include +#include + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/set.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/set.h new file mode 100644 index 0000000..9ae3f3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/set.h @@ -0,0 +1,469 @@ +// Debugging set implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/set.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SET_H +#define _GLIBCXX_DEBUG_SET_H 1 + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::set with safety/checking/debug instrumentation. + template, + typename _Allocator = std::allocator<_Key> > + class set + : public _GLIBCXX_STD_C::set<_Key,_Compare,_Allocator>, + public __gnu_debug::_Safe_sequence > + { + typedef _GLIBCXX_STD_C::set<_Key, _Compare, _Allocator> _Base; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + public: + // types: + typedef _Key key_type; + typedef _Key value_type; + typedef _Compare key_compare; + typedef _Compare value_compare; + typedef _Allocator allocator_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, set> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, set> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.3.3.1 construct/copy/destroy: + explicit set(const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + + template + set(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), + __comp, __a) { } + + set(const set& __x) + : _Base(__x) { } + + set(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus >= 201103L + set(set&& __x) + noexcept(is_nothrow_copy_constructible<_Compare>::value) + : _Base(std::move(__x)) + { this->_M_swap(__x); } + + set(initializer_list __l, + const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __comp, __a) { } +#endif + + ~set() _GLIBCXX_NOEXCEPT { } + + set& + operator=(const set& __x) + { + *static_cast<_Base*>(this) = __x; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + set& + operator=(set&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + set& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l); + return *this; + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + + // modifiers: +#if __cplusplus >= 201103L + template + std::pair + emplace(_Args&&... __args) + { + auto __res = _Base::emplace(std::forward<_Args>(__args)...); + return std::pair(iterator(__res.first, this), + __res.second); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert(__pos); + return iterator(_Base::emplace_hint(__pos.base(), + std::forward<_Args>(__args)...), + this); + } +#endif + + std::pair + insert(const value_type& __x) + { + std::pair<_Base_iterator, bool> __res = _Base::insert(__x); + return std::pair(iterator(__res.first, this), + __res.second); + } + +#if __cplusplus >= 201103L + std::pair + insert(value_type&& __x) + { + std::pair<_Base_iterator, bool> __res + = _Base::insert(std::move(__x)); + return std::pair(iterator(__res.first, this), + __res.second); + } +#endif + + iterator + insert(const_iterator __position, const value_type& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, value_type&& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), std::move(__x)), + this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::insert(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + } + +#if __cplusplus >= 201103L + void + insert(initializer_list __l) + { _Base::insert(__l); } +#endif + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return iterator(_Base::erase(__position.base()), this); + } +#else + void + erase(iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + _Base::erase(__position.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + _Base_iterator __victim = _Base::find(__x); + if (__victim == _Base::end()) + return 0; + else + { + this->_M_invalidate_if(_Equal(__victim)); + _Base::erase(__victim); + return 1; + } + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + _Base::erase(__first.base(), __last.base()); + } +#endif + + void + swap(set& __x) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_invalidate_all(); + _Base::clear(); + } + + // observers: + using _Base::key_comp; + using _Base::value_comp; + + // set operations: + iterator + find(const key_type& __x) + { return iterator(_Base::find(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + find(const key_type& __x) const + { return const_iterator(_Base::find(__x), this); } + + using _Base::count; + + iterator + lower_bound(const key_type& __x) + { return iterator(_Base::lower_bound(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + lower_bound(const key_type& __x) const + { return const_iterator(_Base::lower_bound(__x), this); } + + iterator + upper_bound(const key_type& __x) + { return iterator(_Base::upper_bound(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + upper_bound(const key_type& __x) const + { return const_iterator(_Base::upper_bound(__x), this); } + + std::pair + equal_range(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + std::pair + equal_range(const key_type& __x) const + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + void + _M_invalidate_all() + { + typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal; + this->_M_invalidate_if(_Not_equal(_M_base().end())); + } + }; + + template + inline bool + operator==(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + void + swap(set<_Key, _Compare, _Allocator>& __x, + set<_Key, _Compare, _Allocator>& __y) + { return __x.swap(__y); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/string b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/string new file mode 100644 index 0000000..8a5bf9b --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/string @@ -0,0 +1,1161 @@ +// Debugging string implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/string + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_STRING +#define _GLIBCXX_DEBUG_STRING 1 + +#include +#include +#include + +namespace __gnu_debug +{ + /// Class std::basic_string with safety/checking/debug instrumentation. + template, + typename _Allocator = std::allocator<_CharT> > + class basic_string + : public std::basic_string<_CharT, _Traits, _Allocator>, + public __gnu_debug::_Safe_sequence > + { + typedef std::basic_string<_CharT, _Traits, _Allocator> _Base; + typedef __gnu_debug::_Safe_sequence _Safe_base; + + public: + // types: + typedef _Traits traits_type; + typedef typename _Traits::char_type value_type; + typedef _Allocator allocator_type; + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + + typedef __gnu_debug::_Safe_iterator + iterator; + typedef __gnu_debug::_Safe_iterator const_iterator; + + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + using _Base::npos; + + // 21.3.1 construct/copy/destroy: + explicit basic_string(const _Allocator& __a = _Allocator()) + : _Base(__a) + { } + + // Provides conversion from a release-mode string to a debug-mode string + basic_string(const _Base& __base) : _Base(__base) { } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 42. string ctors specify wrong default allocator + basic_string(const basic_string& __str) + : _Base(__str, 0, _Base::npos, __str.get_allocator()) + { } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 42. string ctors specify wrong default allocator + basic_string(const basic_string& __str, size_type __pos, + size_type __n = _Base::npos, + const _Allocator& __a = _Allocator()) + : _Base(__str, __pos, __n, __a) + { } + + basic_string(const _CharT* __s, size_type __n, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__check_string(__s, __n), __n, __a) + { } + + basic_string(const _CharT* __s, const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__check_string(__s), __a) + { this->assign(__s); } + + basic_string(size_type __n, _CharT __c, + const _Allocator& __a = _Allocator()) + : _Base(__n, __c, __a) + { } + + template + basic_string(_InputIterator __begin, _InputIterator __end, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__begin, + __end)), + __gnu_debug::__base(__end), __a) + { } + +#if __cplusplus >= 201103L + basic_string(basic_string&& __str) noexcept + : _Base(std::move(__str)) + { } + + basic_string(std::initializer_list<_CharT> __l, + const _Allocator& __a = _Allocator()) + : _Base(__l, __a) + { } +#endif // C++11 + + ~basic_string() _GLIBCXX_NOEXCEPT { } + + basic_string& + operator=(const basic_string& __str) + { + *static_cast<_Base*>(this) = __str; + this->_M_invalidate_all(); + return *this; + } + + basic_string& + operator=(const _CharT* __s) + { + __glibcxx_check_string(__s); + *static_cast<_Base*>(this) = __s; + this->_M_invalidate_all(); + return *this; + } + + basic_string& + operator=(_CharT __c) + { + *static_cast<_Base*>(this) = __c; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& + operator=(basic_string&& __str) + { + __glibcxx_check_self_move_assign(__str); + *static_cast<_Base*>(this) = std::move(__str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + operator=(std::initializer_list<_CharT> __l) + { + *static_cast<_Base*>(this) = __l; + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + // 21.3.2 iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // 21.3.3 capacity: + using _Base::size; + using _Base::length; + using _Base::max_size; + + void + resize(size_type __n, _CharT __c) + { + _Base::resize(__n, __c); + this->_M_invalidate_all(); + } + + void + resize(size_type __n) + { this->resize(__n, _CharT()); } + +#if __cplusplus >= 201103L + void + shrink_to_fit() + { + if (capacity() > size()) + { + __try + { + reserve(0); + this->_M_invalidate_all(); + } + __catch(...) + { } + } + } +#endif + + using _Base::capacity; + using _Base::reserve; + + void + clear() _GLIBCXX_NOEXCEPT + { + _Base::clear(); + this->_M_invalidate_all(); + } + + using _Base::empty; + + // 21.3.4 element access: + const_reference + operator[](size_type __pos) const + { + _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(), + _M_message(__gnu_debug::__msg_subscript_oob) + ._M_sequence(*this, "this") + ._M_integer(__pos, "__pos") + ._M_integer(this->size(), "size")); + return _M_base()[__pos]; + } + + reference + operator[](size_type __pos) + { +#ifdef _GLIBCXX_DEBUG_PEDANTIC + __glibcxx_check_subscript(__pos); +#else + // as an extension v3 allows s[s.size()] when s is non-const. + _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(), + _M_message(__gnu_debug::__msg_subscript_oob) + ._M_sequence(*this, "this") + ._M_integer(__pos, "__pos") + ._M_integer(this->size(), "size")); +#endif + return _M_base()[__pos]; + } + + using _Base::at; + +#if __cplusplus >= 201103L + using _Base::front; + using _Base::back; +#endif + + // 21.3.5 modifiers: + basic_string& + operator+=(const basic_string& __str) + { + _M_base() += __str; + this->_M_invalidate_all(); + return *this; + } + + basic_string& + operator+=(const _CharT* __s) + { + __glibcxx_check_string(__s); + _M_base() += __s; + this->_M_invalidate_all(); + return *this; + } + + basic_string& + operator+=(_CharT __c) + { + _M_base() += __c; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& + operator+=(std::initializer_list<_CharT> __l) + { + _M_base() += __l; + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + basic_string& + append(const basic_string& __str) + { + _Base::append(__str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + append(const basic_string& __str, size_type __pos, size_type __n) + { + _Base::append(__str, __pos, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + append(const _CharT* __s, size_type __n) + { + __glibcxx_check_string_len(__s, __n); + _Base::append(__s, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + append(const _CharT* __s) + { + __glibcxx_check_string(__s); + _Base::append(__s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + append(size_type __n, _CharT __c) + { + _Base::append(__n, __c); + this->_M_invalidate_all(); + return *this; + } + + template + basic_string& + append(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::append(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + this->_M_invalidate_all(); + return *this; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 7. string clause minor problems + void + push_back(_CharT __c) + { + _Base::push_back(__c); + this->_M_invalidate_all(); + } + + basic_string& + assign(const basic_string& __x) + { + _Base::assign(__x); + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& + assign(basic_string&& __x) + { + _Base::assign(std::move(__x)); + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + basic_string& + assign(const basic_string& __str, size_type __pos, size_type __n) + { + _Base::assign(__str, __pos, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + assign(const _CharT* __s, size_type __n) + { + __glibcxx_check_string_len(__s, __n); + _Base::assign(__s, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + assign(const _CharT* __s) + { + __glibcxx_check_string(__s); + _Base::assign(__s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + assign(size_type __n, _CharT __c) + { + _Base::assign(__n, __c); + this->_M_invalidate_all(); + return *this; + } + + template + basic_string& + assign(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::assign(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& + assign(std::initializer_list<_CharT> __l) + { + _Base::assign(__l); + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + basic_string& + insert(size_type __pos1, const basic_string& __str) + { + _Base::insert(__pos1, __str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + insert(size_type __pos1, const basic_string& __str, + size_type __pos2, size_type __n) + { + _Base::insert(__pos1, __str, __pos2, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + insert(size_type __pos, const _CharT* __s, size_type __n) + { + __glibcxx_check_string(__s); + _Base::insert(__pos, __s, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + insert(size_type __pos, const _CharT* __s) + { + __glibcxx_check_string(__s); + _Base::insert(__pos, __s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + insert(size_type __pos, size_type __n, _CharT __c) + { + _Base::insert(__pos, __n, __c); + this->_M_invalidate_all(); + return *this; + } + + iterator + insert(iterator __p, _CharT __c) + { + __glibcxx_check_insert(__p); + typename _Base::iterator __res = _Base::insert(__p.base(), __c); + this->_M_invalidate_all(); + return iterator(__res, this); + } + + void + insert(iterator __p, size_type __n, _CharT __c) + { + __glibcxx_check_insert(__p); + _Base::insert(__p.base(), __n, __c); + this->_M_invalidate_all(); + } + + template + void + insert(iterator __p, _InputIterator __first, _InputIterator __last) + { + __glibcxx_check_insert_range(__p, __first, __last); + _Base::insert(__p.base(), __gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + this->_M_invalidate_all(); + } + +#if __cplusplus >= 201103L + void + insert(iterator __p, std::initializer_list<_CharT> __l) + { + __glibcxx_check_insert(__p); + _Base::insert(__p.base(), __l); + this->_M_invalidate_all(); + } +#endif // C++11 + + basic_string& + erase(size_type __pos = 0, size_type __n = _Base::npos) + { + _Base::erase(__pos, __n); + this->_M_invalidate_all(); + return *this; + } + + iterator + erase(iterator __position) + { + __glibcxx_check_erase(__position); + typename _Base::iterator __res = _Base::erase(__position.base()); + this->_M_invalidate_all(); + return iterator(__res, this); + } + + iterator + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + typename _Base::iterator __res = _Base::erase(__first.base(), + __last.base()); + this->_M_invalidate_all(); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + void + pop_back() + { + __glibcxx_check_nonempty(); + _Base::pop_back(); + this->_M_invalidate_all(); + } +#endif // C++11 + + basic_string& + replace(size_type __pos1, size_type __n1, const basic_string& __str) + { + _Base::replace(__pos1, __n1, __str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) + { + _Base::replace(__pos1, __n1, __str, __pos2, __n2); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s, + size_type __n2) + { + __glibcxx_check_string_len(__s, __n2); + _Base::replace(__pos, __n1, __s, __n2); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s) + { + __glibcxx_check_string(__s); + _Base::replace(__pos, __n1, __s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) + { + _Base::replace(__pos, __n1, __n2, __c); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(iterator __i1, iterator __i2, const basic_string& __str) + { + __glibcxx_check_erase_range(__i1, __i2); + _Base::replace(__i1.base(), __i2.base(), __str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) + { + __glibcxx_check_erase_range(__i1, __i2); + __glibcxx_check_string_len(__s, __n); + _Base::replace(__i1.base(), __i2.base(), __s, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __s) + { + __glibcxx_check_erase_range(__i1, __i2); + __glibcxx_check_string(__s); + _Base::replace(__i1.base(), __i2.base(), __s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(iterator __i1, iterator __i2, size_type __n, _CharT __c) + { + __glibcxx_check_erase_range(__i1, __i2); + _Base::replace(__i1.base(), __i2.base(), __n, __c); + this->_M_invalidate_all(); + return *this; + } + + template + basic_string& + replace(iterator __i1, iterator __i2, + _InputIterator __j1, _InputIterator __j2) + { + __glibcxx_check_erase_range(__i1, __i2); + __glibcxx_check_valid_range(__j1, __j2); + _Base::replace(__i1.base(), __i2.base(), __j1, __j2); + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& replace(iterator __i1, iterator __i2, + std::initializer_list<_CharT> __l) + { + __glibcxx_check_erase_range(__i1, __i2); + _Base::replace(__i1.base(), __i2.base(), __l); + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + size_type + copy(_CharT* __s, size_type __n, size_type __pos = 0) const + { + __glibcxx_check_string_len(__s, __n); + return _Base::copy(__s, __n, __pos); + } + + void + swap(basic_string<_CharT,_Traits,_Allocator>& __x) + { + _Base::swap(__x); + this->_M_swap(__x); + this->_M_invalidate_all(); + __x._M_invalidate_all(); + } + + // 21.3.6 string operations: + const _CharT* + c_str() const _GLIBCXX_NOEXCEPT + { + const _CharT* __res = _Base::c_str(); + this->_M_invalidate_all(); + return __res; + } + + const _CharT* + data() const _GLIBCXX_NOEXCEPT + { + const _CharT* __res = _Base::data(); + this->_M_invalidate_all(); + return __res; + } + + using _Base::get_allocator; + + size_type + find(const basic_string& __str, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT + { return _Base::find(__str, __pos); } + + size_type + find(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string(__s); + return _Base::find(__s, __pos, __n); + } + + size_type + find(const _CharT* __s, size_type __pos = 0) const + { + __glibcxx_check_string(__s); + return _Base::find(__s, __pos); + } + + size_type + find(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT + { return _Base::find(__c, __pos); } + + size_type + rfind(const basic_string& __str, size_type __pos = _Base::npos) const + _GLIBCXX_NOEXCEPT + { return _Base::rfind(__str, __pos); } + + size_type + rfind(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string_len(__s, __n); + return _Base::rfind(__s, __pos, __n); + } + + size_type + rfind(const _CharT* __s, size_type __pos = _Base::npos) const + { + __glibcxx_check_string(__s); + return _Base::rfind(__s, __pos); + } + + size_type + rfind(_CharT __c, size_type __pos = _Base::npos) const _GLIBCXX_NOEXCEPT + { return _Base::rfind(__c, __pos); } + + size_type + find_first_of(const basic_string& __str, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT + { return _Base::find_first_of(__str, __pos); } + + size_type + find_first_of(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string(__s); + return _Base::find_first_of(__s, __pos, __n); + } + + size_type + find_first_of(const _CharT* __s, size_type __pos = 0) const + { + __glibcxx_check_string(__s); + return _Base::find_first_of(__s, __pos); + } + + size_type + find_first_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT + { return _Base::find_first_of(__c, __pos); } + + size_type + find_last_of(const basic_string& __str, + size_type __pos = _Base::npos) const _GLIBCXX_NOEXCEPT + { return _Base::find_last_of(__str, __pos); } + + size_type + find_last_of(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string(__s); + return _Base::find_last_of(__s, __pos, __n); + } + + size_type + find_last_of(const _CharT* __s, size_type __pos = _Base::npos) const + { + __glibcxx_check_string(__s); + return _Base::find_last_of(__s, __pos); + } + + size_type + find_last_of(_CharT __c, size_type __pos = _Base::npos) const + _GLIBCXX_NOEXCEPT + { return _Base::find_last_of(__c, __pos); } + + size_type + find_first_not_of(const basic_string& __str, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT + { return _Base::find_first_not_of(__str, __pos); } + + size_type + find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string_len(__s, __n); + return _Base::find_first_not_of(__s, __pos, __n); + } + + size_type + find_first_not_of(const _CharT* __s, size_type __pos = 0) const + { + __glibcxx_check_string(__s); + return _Base::find_first_not_of(__s, __pos); + } + + size_type + find_first_not_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT + { return _Base::find_first_not_of(__c, __pos); } + + size_type + find_last_not_of(const basic_string& __str, + size_type __pos = _Base::npos) const + _GLIBCXX_NOEXCEPT + { return _Base::find_last_not_of(__str, __pos); } + + size_type + find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string(__s); + return _Base::find_last_not_of(__s, __pos, __n); + } + + size_type + find_last_not_of(const _CharT* __s, size_type __pos = _Base::npos) const + { + __glibcxx_check_string(__s); + return _Base::find_last_not_of(__s, __pos); + } + + size_type + find_last_not_of(_CharT __c, size_type __pos = _Base::npos) const + _GLIBCXX_NOEXCEPT + { return _Base::find_last_not_of(__c, __pos); } + + basic_string + substr(size_type __pos = 0, size_type __n = _Base::npos) const + { return basic_string(_Base::substr(__pos, __n)); } + + int + compare(const basic_string& __str) const + { return _Base::compare(__str); } + + int + compare(size_type __pos1, size_type __n1, + const basic_string& __str) const + { return _Base::compare(__pos1, __n1, __str); } + + int + compare(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) const + { return _Base::compare(__pos1, __n1, __str, __pos2, __n2); } + + int + compare(const _CharT* __s) const + { + __glibcxx_check_string(__s); + return _Base::compare(__s); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 5. string::compare specification questionable + int + compare(size_type __pos1, size_type __n1, const _CharT* __s) const + { + __glibcxx_check_string(__s); + return _Base::compare(__pos1, __n1, __s); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 5. string::compare specification questionable + int + compare(size_type __pos1, size_type __n1,const _CharT* __s, + size_type __n2) const + { + __glibcxx_check_string_len(__s, __n2); + return _Base::compare(__pos1, __n1, __s, __n2); + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + using _Safe_base::_M_invalidate_all; + }; + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; } + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; + } + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(_CharT __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return basic_string<_CharT,_Traits,_Allocator>(1, __lhs) += __rhs; } + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; + } + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + _CharT __rhs) + { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; } + + template + inline bool + operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator==(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs == __rhs._M_base(); + } + + template + inline bool + operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() == __rhs; + } + + template + inline bool + operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator!=(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs != __rhs._M_base(); + } + + template + inline bool + operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() != __rhs; + } + + template + inline bool + operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs < __rhs._M_base(); + } + + template + inline bool + operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() < __rhs; + } + + template + inline bool + operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator<=(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs <= __rhs._M_base(); + } + + template + inline bool + operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() <= __rhs; + } + + template + inline bool + operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>=(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs >= __rhs._M_base(); + } + + template + inline bool + operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() >= __rhs; + } + + template + inline bool + operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline bool + operator>(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs > __rhs._M_base(); + } + + template + inline bool + operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() > __rhs; + } + + // 21.3.7.8: + template + inline void + swap(basic_string<_CharT,_Traits,_Allocator>& __lhs, + basic_string<_CharT,_Traits,_Allocator>& __rhs) + { __lhs.swap(__rhs); } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const basic_string<_CharT, _Traits, _Allocator>& __str) + { return __os << __str._M_base(); } + + template + std::basic_istream<_CharT,_Traits>& + operator>>(std::basic_istream<_CharT,_Traits>& __is, + basic_string<_CharT,_Traits,_Allocator>& __str) + { + std::basic_istream<_CharT,_Traits>& __res = __is >> __str._M_base(); + __str._M_invalidate_all(); + return __res; + } + + template + std::basic_istream<_CharT,_Traits>& + getline(std::basic_istream<_CharT,_Traits>& __is, + basic_string<_CharT,_Traits,_Allocator>& __str, _CharT __delim) + { + std::basic_istream<_CharT,_Traits>& __res = getline(__is, + __str._M_base(), + __delim); + __str._M_invalidate_all(); + return __res; + } + + template + std::basic_istream<_CharT,_Traits>& + getline(std::basic_istream<_CharT,_Traits>& __is, + basic_string<_CharT,_Traits,_Allocator>& __str) + { + std::basic_istream<_CharT,_Traits>& __res = getline(__is, + __str._M_base()); + __str._M_invalidate_all(); + return __res; + } + + typedef basic_string string; + +#ifdef _GLIBCXX_USE_WCHAR_T + typedef basic_string wstring; +#endif + +} // namespace __gnu_debug + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/unordered_map b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/unordered_map new file mode 100644 index 0000000..a826b01 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/unordered_map @@ -0,0 +1,903 @@ +// Debugging unordered_map/unordered_multimap implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/unordered_map + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_UNORDERED_MAP +#define _GLIBCXX_DEBUG_UNORDERED_MAP 1 + +#if __cplusplus < 201103L +# include +#else +# include + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::unordered_map with safety/checking/debug instrumentation. + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator<_Key> > + class unordered_map + : public _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>, + public __gnu_debug::_Safe_unordered_container > + { + typedef _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, + _Pred, _Alloc> _Base; + typedef __gnu_debug::_Safe_unordered_container _Safe_base; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_local_iterator _Base_const_local_iterator; + typedef typename _Base::local_iterator _Base_local_iterator; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, + unordered_map> iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, + unordered_map> const_iterator; + typedef __gnu_debug::_Safe_local_iterator<_Base_local_iterator, + unordered_map> local_iterator; + typedef __gnu_debug::_Safe_local_iterator<_Base_const_local_iterator, + unordered_map> const_local_iterator; + + explicit + unordered_map(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_map(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __n, + __hf, __eql, __a) { } + + unordered_map(const unordered_map& __x) = default; + + unordered_map(const _Base& __x) + : _Base(__x) { } + + unordered_map(unordered_map&& __x) = default; + + unordered_map(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + ~unordered_map() noexcept { } + + unordered_map& + operator=(const unordered_map& __x) + { + *static_cast<_Base*>(this) = __x; + this->_M_invalidate_all(); + return *this; + } + + unordered_map& + operator=(unordered_map&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + unordered_map& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l); + return *this; + } + + void + swap(unordered_map& __x) + { + _Base::swap(__x); + _Safe_base::_M_swap(__x); + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + // local versions + local_iterator + begin(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::begin(__b), __b, this); + } + + local_iterator + end(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::end(__b), __b, this); + } + + const_local_iterator + begin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::begin(__b), __b, this); + } + + const_local_iterator + end(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::end(__b), __b, this); + } + + const_local_iterator + cbegin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cbegin(__b), __b, this); + } + + const_local_iterator + cend(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cend(__b), __b, this); + } + + size_type + bucket_size(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return _Base::bucket_size(__b); + } + + float + max_load_factor() const noexcept + { return _Base::max_load_factor(); } + + void + max_load_factor(float __f) + { + __glibcxx_check_max_load_factor(__f); + _Base::max_load_factor(__f); + } + + template + std::pair + emplace(_Args&&... __args) + { + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, bool> __res + = _Base::emplace(std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + template + iterator + emplace_hint(const_iterator __hint, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::emplace_hint(__hint.base(), + std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + std::pair + insert(const value_type& __obj) + { + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, bool> __res = _Base::insert(__obj); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + iterator + insert(const_iterator __hint, const value_type& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), __obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template::value>::type> + std::pair + insert(_Pair&& __obj) + { + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, bool> __res = + _Base::insert(std::forward<_Pair>(__obj)); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + template::value>::type> + iterator + insert(const_iterator __hint, _Pair&& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = + _Base::insert(__hint.base(), std::forward<_Pair>(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + void + insert(std::initializer_list __l) + { + size_type __bucket_count = this->bucket_count(); + _Base::insert(__l); + _M_check_rehashed(__bucket_count); + } + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + size_type __bucket_count = this->bucket_count(); + _Base::insert(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + _M_check_rehashed(__bucket_count); + } + + iterator + find(const key_type& __key) + { return iterator(_Base::find(__key), this); } + + const_iterator + find(const key_type& __key) const + { return const_iterator(_Base::find(__key), this); } + + std::pair + equal_range(const key_type& __key) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__key); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __key) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__key); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + size_type + erase(const key_type& __key) + { + size_type __ret(0); + _Base_iterator __victim(_Base::find(__key)); + if (__victim != _Base::end()) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_cur == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base::erase(__victim); + _M_check_rehashed(__bucket_count); + __ret = 1; + } + return __ret; + } + + iterator + erase(const_iterator __it) + { + __glibcxx_check_erase(__it); + _Base_const_iterator __victim = __it.base(); + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_cur == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__it.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + iterator + erase(const_iterator __first, const_iterator __last) + { + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if([__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + this->_M_invalidate_local_if( + [__tmp](_Base_const_local_iterator __it) + { return __it._M_cur == __tmp._M_cur; }); + } + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__first.base(), __last.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + private: + void + _M_invalidate_locals() + { + _Base_local_iterator __local_end = _Base::end(0); + this->_M_invalidate_local_if( + [__local_end](_Base_const_local_iterator __it) + { return __it != __local_end; }); + } + + void + _M_invalidate_all() + { + _Base_iterator __end = _Base::end(); + this->_M_invalidate_if([__end](_Base_const_iterator __it) + { return __it != __end; }); + _M_invalidate_locals(); + } + + void + _M_check_rehashed(size_type __prev_count) + { + if (__prev_count != this->bucket_count()) + _M_invalidate_locals(); + } + }; + + template + inline void + swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return __x._M_base() == __y._M_base(); } + + template + inline bool + operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + + + /// Class std::unordered_multimap with safety/checking/debug instrumentation. + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator<_Key> > + class unordered_multimap + : public _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash, + _Pred, _Alloc>, + public __gnu_debug::_Safe_unordered_container > + { + typedef _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash, + _Pred, _Alloc> _Base; + typedef __gnu_debug::_Safe_unordered_container + _Safe_base; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_local_iterator _Base_const_local_iterator; + typedef typename _Base::local_iterator _Base_local_iterator; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, + unordered_multimap> iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, + unordered_multimap> const_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_local_iterator, unordered_multimap> local_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_const_local_iterator, unordered_multimap> const_local_iterator; + + explicit + unordered_multimap(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_multimap(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __n, + __hf, __eql, __a) { } + + unordered_multimap(const unordered_multimap& __x) = default; + + unordered_multimap(const _Base& __x) + : _Base(__x) { } + + unordered_multimap(unordered_multimap&& __x) = default; + + unordered_multimap(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + ~unordered_multimap() noexcept { } + + unordered_multimap& + operator=(const unordered_multimap& __x) + { + *static_cast<_Base*>(this) = __x; + this->_M_invalidate_all(); + return *this; + } + + unordered_multimap& + operator=(unordered_multimap&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + unordered_multimap& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l); + return *this; + } + + void + swap(unordered_multimap& __x) + { + _Base::swap(__x); + _Safe_base::_M_swap(__x); + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + // local versions + local_iterator + begin(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::begin(__b), __b, this); + } + + local_iterator + end(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::end(__b), __b, this); + } + + const_local_iterator + begin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::begin(__b), __b, this); + } + + const_local_iterator + end(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::end(__b), __b, this); + } + + const_local_iterator + cbegin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cbegin(__b), __b, this); + } + + const_local_iterator + cend(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cend(__b), __b, this); + } + + size_type + bucket_size(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return _Base::bucket_size(__b); + } + + float + max_load_factor() const noexcept + { return _Base::max_load_factor(); } + + void + max_load_factor(float __f) + { + __glibcxx_check_max_load_factor(__f); + _Base::max_load_factor(__f); + } + + template + iterator + emplace(_Args&&... __args) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it + = _Base::emplace(std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template + iterator + emplace_hint(const_iterator __hint, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::emplace_hint(__hint.base(), + std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(const value_type& __obj) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(const_iterator __hint, const value_type& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), __obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template::value>::type> + iterator + insert(_Pair&& __obj) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(std::forward<_Pair>(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template::value>::type> + iterator + insert(const_iterator __hint, _Pair&& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = + _Base::insert(__hint.base(), std::forward<_Pair>(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + void + insert(std::initializer_list __l) + { _Base::insert(__l); } + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + size_type __bucket_count = this->bucket_count(); + _Base::insert(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + _M_check_rehashed(__bucket_count); + } + + iterator + find(const key_type& __key) + { return iterator(_Base::find(__key), this); } + + const_iterator + find(const key_type& __key) const + { return const_iterator(_Base::find(__key), this); } + + std::pair + equal_range(const key_type& __key) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__key); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __key) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__key); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + size_type + erase(const key_type& __key) + { + size_type __ret(0); + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, _Base_iterator> __pair = + _Base::equal_range(__key); + for (_Base_iterator __victim = __pair.first; __victim != __pair.second;) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_cur == __victim._M_cur; }); + _Base::erase(__victim++); + ++__ret; + } + _M_check_rehashed(__bucket_count); + return __ret; + } + + iterator + erase(const_iterator __it) + { + __glibcxx_check_erase(__it); + _Base_const_iterator __victim = __it.base(); + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_cur == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__it.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + iterator + erase(const_iterator __first, const_iterator __last) + { + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if([__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + this->_M_invalidate_local_if( + [__tmp](_Base_const_local_iterator __it) + { return __it._M_cur == __tmp._M_cur; }); + } + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__first.base(), __last.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + private: + void + _M_invalidate_locals() + { + _Base_local_iterator __local_end = _Base::end(0); + this->_M_invalidate_local_if( + [__local_end](_Base_const_local_iterator __it) + { return __it != __local_end; }); + } + + void + _M_invalidate_all() + { + _Base_iterator __end = _Base::end(); + this->_M_invalidate_if([__end](_Base_const_iterator __it) + { return __it != __end; }); + _M_invalidate_locals(); + } + + void + _M_check_rehashed(size_type __prev_count) + { + if (__prev_count != this->bucket_count()) + _M_invalidate_locals(); + } + }; + + template + inline void + swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return __x._M_base() == __y._M_base(); } + + template + inline bool + operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +} // namespace __debug +} // namespace std + +#endif // C++11 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/unordered_set b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/unordered_set new file mode 100644 index 0000000..8e88add --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/unordered_set @@ -0,0 +1,885 @@ +// Debugging unordered_set/unordered_multiset implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/unordered_set + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_UNORDERED_SET +#define _GLIBCXX_DEBUG_UNORDERED_SET 1 + +#if __cplusplus < 201103L +# include +#else +# include + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::unordered_set with safety/checking/debug instrumentation. + template, + typename _Pred = std::equal_to<_Value>, + typename _Alloc = std::allocator<_Value> > + class unordered_set + : public _GLIBCXX_STD_C::unordered_set<_Value, _Hash, _Pred, _Alloc>, + public __gnu_debug::_Safe_unordered_container > + { + typedef _GLIBCXX_STD_C::unordered_set<_Value, _Hash, + _Pred, _Alloc> _Base; + typedef __gnu_debug::_Safe_unordered_container _Safe_base; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_local_iterator _Base_const_local_iterator; + typedef typename _Base::local_iterator _Base_local_iterator; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, + unordered_set> iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, + unordered_set> const_iterator; + typedef __gnu_debug::_Safe_local_iterator<_Base_local_iterator, + unordered_set> local_iterator; + typedef __gnu_debug::_Safe_local_iterator<_Base_const_local_iterator, + unordered_set> const_local_iterator; + + explicit + unordered_set(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_set(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __n, + __hf, __eql, __a) { } + + unordered_set(const unordered_set& __x) = default; + + unordered_set(const _Base& __x) + : _Base(__x) { } + + unordered_set(unordered_set&& __x) = default; + + unordered_set(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + ~unordered_set() noexcept { } + + unordered_set& + operator=(const unordered_set& __x) + { + *static_cast<_Base*>(this) = __x; + this->_M_invalidate_all(); + return *this; + } + + unordered_set& + operator=(unordered_set&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + unordered_set& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l); + return *this; + } + + void + swap(unordered_set& __x) + { + _Base::swap(__x); + _Safe_base::_M_swap(__x); + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + // local versions + local_iterator + begin(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::begin(__b), __b, this); + } + + local_iterator + end(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::end(__b), __b, this); + } + + const_local_iterator + begin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::begin(__b), __b, this); + } + + const_local_iterator + end(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::end(__b), __b, this); + } + + const_local_iterator + cbegin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cbegin(__b), __b, this); + } + + const_local_iterator + cend(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cend(__b), __b, this); + } + + size_type + bucket_size(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return _Base::bucket_size(__b); + } + + float + max_load_factor() const noexcept + { return _Base::max_load_factor(); } + + void + max_load_factor(float __f) + { + __glibcxx_check_max_load_factor(__f); + _Base::max_load_factor(__f); + } + + template + std::pair + emplace(_Args&&... __args) + { + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, bool> __res + = _Base::emplace(std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + template + iterator + emplace_hint(const_iterator __hint, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::emplace_hint(__hint.base(), + std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + std::pair + insert(const value_type& __obj) + { + size_type __bucket_count = this->bucket_count(); + typedef std::pair<_Base_iterator, bool> __pair_type; + __pair_type __res = _Base::insert(__obj); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + iterator + insert(const_iterator __hint, const value_type& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), __obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + std::pair + insert(value_type&& __obj) + { + size_type __bucket_count = this->bucket_count(); + typedef std::pair __pair_type; + __pair_type __res = _Base::insert(std::move(__obj)); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + iterator + insert(const_iterator __hint, value_type&& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), std::move(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + void + insert(std::initializer_list __l) + { + size_type __bucket_count = this->bucket_count(); + _Base::insert(__l); + _M_check_rehashed(__bucket_count); + } + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + size_type __bucket_count = this->bucket_count(); + _Base::insert(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + _M_check_rehashed(__bucket_count); + } + + iterator + find(const key_type& __key) + { return iterator(_Base::find(__key), this); } + + const_iterator + find(const key_type& __key) const + { return const_iterator(_Base::find(__key), this); } + + std::pair + equal_range(const key_type& __key) + { + typedef std::pair<_Base_iterator, _Base_iterator> __pair_type; + __pair_type __res = _Base::equal_range(__key); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __key) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> + __res = _Base::equal_range(__key); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + size_type + erase(const key_type& __key) + { + size_type __ret(0); + _Base_iterator __victim(_Base::find(__key)); + if (__victim != _Base::end()) + { + this->_M_invalidate_if( + [__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_cur == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base::erase(__victim); + _M_check_rehashed(__bucket_count); + __ret = 1; + } + return __ret; + } + + iterator + erase(const_iterator __it) + { + __glibcxx_check_erase(__it); + _Base_const_iterator __victim = __it.base(); + this->_M_invalidate_if( + [__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_cur == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__it.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + iterator + erase(const_iterator __first, const_iterator __last) + { + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if( + [__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + this->_M_invalidate_local_if( + [__tmp](_Base_const_local_iterator __it) + { return __it._M_cur == __tmp._M_cur; }); + } + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__first.base(), + __last.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + private: + void + _M_invalidate_locals() + { + _Base_local_iterator __local_end = _Base::end(0); + this->_M_invalidate_local_if( + [__local_end](_Base_const_local_iterator __it) + { return __it != __local_end; }); + } + + void + _M_invalidate_all() + { + _Base_iterator __end = _Base::end(); + this->_M_invalidate_if( + [__end](_Base_const_iterator __it) + { return __it != __end; }); + _M_invalidate_locals(); + } + + void + _M_check_rehashed(size_type __prev_count) + { + if (__prev_count != this->bucket_count()) + _M_invalidate_locals(); + } + }; + + template + inline void + swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { return __x._M_base() == __y._M_base(); } + + template + inline bool + operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + + + /// Class std::unordered_multiset with safety/checking/debug instrumentation. + template, + typename _Pred = std::equal_to<_Value>, + typename _Alloc = std::allocator<_Value> > + class unordered_multiset + : public _GLIBCXX_STD_C::unordered_multiset<_Value, _Hash, _Pred, _Alloc>, + public __gnu_debug::_Safe_unordered_container< + unordered_multiset<_Value, _Hash, _Pred, _Alloc> > + { + typedef _GLIBCXX_STD_C::unordered_multiset<_Value, _Hash, + _Pred, _Alloc> _Base; + typedef __gnu_debug::_Safe_unordered_container + _Safe_base; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_local_iterator _Base_const_local_iterator; + typedef typename _Base::local_iterator _Base_local_iterator; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, + unordered_multiset> iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, + unordered_multiset> const_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_local_iterator, unordered_multiset> local_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_const_local_iterator, unordered_multiset> const_local_iterator; + + explicit + unordered_multiset(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_multiset(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __n, + __hf, __eql, __a) { } + + unordered_multiset(const unordered_multiset& __x) = default; + + unordered_multiset(const _Base& __x) + : _Base(__x) { } + + unordered_multiset(unordered_multiset&& __x) = default; + + unordered_multiset(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + ~unordered_multiset() noexcept { } + + unordered_multiset& + operator=(const unordered_multiset& __x) + { + *static_cast<_Base*>(this) = __x; + this->_M_invalidate_all(); + return *this; + } + + unordered_multiset& + operator=(unordered_multiset&& __x) + { + // NB: DR 1204. + // NB: DR 675. + __glibcxx_check_self_move_assign(__x); + clear(); + swap(__x); + return *this; + } + + unordered_multiset& + operator=(initializer_list __l) + { + this->clear(); + this->insert(__l); + return *this; + } + + void + swap(unordered_multiset& __x) + { + _Base::swap(__x); + _Safe_base::_M_swap(__x); + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + // local versions + local_iterator + begin(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::begin(__b), __b, this); + } + + local_iterator + end(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::end(__b), __b, this); + } + + const_local_iterator + begin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::begin(__b), __b, this); + } + + const_local_iterator + end(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::end(__b), __b, this); + } + + const_local_iterator + cbegin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cbegin(__b), __b, this); + } + + const_local_iterator + cend(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cend(__b), __b, this); + } + + size_type + bucket_size(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return _Base::bucket_size(__b); + } + + float + max_load_factor() const noexcept + { return _Base::max_load_factor(); } + + void + max_load_factor(float __f) + { + __glibcxx_check_max_load_factor(__f); + _Base::max_load_factor(__f); + } + + template + iterator + emplace(_Args&&... __args) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it + = _Base::emplace(std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template + iterator + emplace_hint(const_iterator __hint, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::emplace_hint(__hint.base(), + std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(const value_type& __obj) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(const_iterator __hint, const value_type& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), __obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(value_type&& __obj) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(std::move(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(const_iterator __hint, value_type&& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), std::move(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + void + insert(std::initializer_list __l) + { + size_type __bucket_count = this->bucket_count(); + _Base::insert(__l); + _M_check_rehashed(__bucket_count); + } + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + size_type __bucket_count = this->bucket_count(); + _Base::insert(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + _M_check_rehashed(__bucket_count); + } + + iterator + find(const key_type& __key) + { return iterator(_Base::find(__key), this); } + + const_iterator + find(const key_type& __key) const + { return const_iterator(_Base::find(__key), this); } + + std::pair + equal_range(const key_type& __key) + { + typedef std::pair<_Base_iterator, _Base_iterator> __pair_type; + __pair_type __res = _Base::equal_range(__key); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __key) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> + __res = _Base::equal_range(__key); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + size_type + erase(const key_type& __key) + { + size_type __ret(0); + std::pair<_Base_iterator, _Base_iterator> __pair = + _Base::equal_range(__key); + for (_Base_iterator __victim = __pair.first; __victim != __pair.second;) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_cur == __victim._M_cur; }); + _Base::erase(__victim++); + ++__ret; + } + return __ret; + } + + iterator + erase(const_iterator __it) + { + __glibcxx_check_erase(__it); + _Base_const_iterator __victim = __it.base(); + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_cur == __victim._M_cur; }); + return iterator(_Base::erase(__it.base()), this); + } + + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + iterator + erase(const_iterator __first, const_iterator __last) + { + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if([__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + this->_M_invalidate_local_if( + [__tmp](_Base_const_local_iterator __it) + { return __it._M_cur == __tmp._M_cur; }); + } + return iterator(_Base::erase(__first.base(), + __last.base()), this); + } + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + private: + void + _M_invalidate_locals() + { + _Base_local_iterator __local_end = _Base::end(0); + this->_M_invalidate_local_if( + [__local_end](_Base_const_local_iterator __it) + { return __it != __local_end; }); + } + + void + _M_invalidate_all() + { + _Base_iterator __end = _Base::end(); + this->_M_invalidate_if([__end](_Base_const_iterator __it) + { return __it != __end; }); + _M_invalidate_locals(); + } + + void + _M_check_rehashed(size_type __prev_count) + { + if (__prev_count != this->bucket_count()) + _M_invalidate_locals(); + } + }; + + template + inline void + swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return __x._M_base() == __y._M_base(); } + + template + inline bool + operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +} // namespace __debug +} // namespace std + +#endif // C++11 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/vector b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/vector new file mode 100644 index 0000000..8473686 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/debug/vector @@ -0,0 +1,655 @@ +// Debugging vector implementation -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file debug/vector + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_VECTOR +#define _GLIBCXX_DEBUG_VECTOR 1 + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::vector with safety/checking/debug instrumentation. + template > + class vector + : public _GLIBCXX_STD_C::vector<_Tp, _Allocator>, + public __gnu_debug::_Safe_sequence > + { + typedef _GLIBCXX_STD_C::vector<_Tp, _Allocator> _Base; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + +#if __cplusplus >= 201103L + typedef __gnu_cxx::__alloc_traits<_Allocator> _Alloc_traits; +#endif + + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator,vector> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator,vector> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef _Allocator allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.2.4.1 construct/copy/destroy: + explicit + vector(const _Allocator& __a = _Allocator()) + : _Base(__a), _M_guaranteed_capacity(0) { } + +#if __cplusplus >= 201103L + explicit + vector(size_type __n, const _Allocator& __a = _Allocator()) + : _Base(__n, __a), _M_guaranteed_capacity(__n) { } + + vector(size_type __n, const _Tp& __value, + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a), _M_guaranteed_capacity(__n) { } +#else + explicit + vector(size_type __n, const _Tp& __value = _Tp(), + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a), _M_guaranteed_capacity(__n) { } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + vector(_InputIterator __first, _InputIterator __last, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a), + _M_guaranteed_capacity(0) + { _M_update_guaranteed_capacity(); } + + vector(const vector& __x) + : _Base(__x), _M_guaranteed_capacity(__x.size()) { } + + /// Construction from a release-mode vector + vector(const _Base& __x) + : _Base(__x), _M_guaranteed_capacity(__x.size()) { } + +#if __cplusplus >= 201103L + vector(vector&& __x) noexcept + : _Base(std::move(__x)), + _M_guaranteed_capacity(this->size()) + { + this->_M_swap(__x); + __x._M_guaranteed_capacity = 0; + } + + vector(const vector& __x, const allocator_type& __a) + : _Base(__x, __a), _M_guaranteed_capacity(__x.size()) { } + + vector(vector&& __x, const allocator_type& __a) + : _Base(std::move(__x), __a), + _M_guaranteed_capacity(this->size()) + { + __x._M_invalidate_all(); + __x._M_guaranteed_capacity = 0; + } + + vector(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__l, __a), + _M_guaranteed_capacity(__l.size()) { } +#endif + + ~vector() _GLIBCXX_NOEXCEPT { } + + vector& + operator=(const vector& __x) + { + static_cast<_Base&>(*this) = __x; + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + return *this; + } + +#if __cplusplus >= 201103L + vector& + operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) + { + __glibcxx_check_self_move_assign(__x); + _Base::operator=(std::move(__x)); + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + __x._M_invalidate_all(); + __x._M_guaranteed_capacity = 0; + return *this; + } + + vector& + operator=(initializer_list __l) + { + static_cast<_Base&>(*this) = __l; + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + return *this; + } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + assign(_InputIterator __first, _InputIterator __last) + { + __glibcxx_check_valid_range(__first, __last); + _Base::assign(__gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + } + + void + assign(size_type __n, const _Tp& __u) + { + _Base::assign(__n, __u); + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + } + +#if __cplusplus >= 201103L + void + assign(initializer_list __l) + { + _Base::assign(__l); + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // 23.2.4.2 capacity: + using _Base::size; + using _Base::max_size; + +#if __cplusplus >= 201103L + void + resize(size_type __sz) + { + bool __realloc = _M_requires_reallocation(__sz); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + _Base::resize(__sz); + if (__realloc) + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + } + + void + resize(size_type __sz, const _Tp& __c) + { + bool __realloc = _M_requires_reallocation(__sz); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + _Base::resize(__sz, __c); + if (__realloc) + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + } +#else + void + resize(size_type __sz, _Tp __c = _Tp()) + { + bool __realloc = _M_requires_reallocation(__sz); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + _Base::resize(__sz, __c); + if (__realloc) + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + } +#endif + +#if __cplusplus >= 201103L + void + shrink_to_fit() + { + if (_Base::_M_shrink_to_fit()) + { + _M_guaranteed_capacity = _Base::capacity(); + this->_M_invalidate_all(); + } + } +#endif + + size_type + capacity() const _GLIBCXX_NOEXCEPT + { +#ifdef _GLIBCXX_DEBUG_PEDANTIC + return _M_guaranteed_capacity; +#else + return _Base::capacity(); +#endif + } + + using _Base::empty; + + void + reserve(size_type __n) + { + bool __realloc = _M_requires_reallocation(__n); + _Base::reserve(__n); + if (__n > _M_guaranteed_capacity) + _M_guaranteed_capacity = __n; + if (__realloc) + this->_M_invalidate_all(); + } + + // element access: + reference + operator[](size_type __n) + { + __glibcxx_check_subscript(__n); + return _M_base()[__n]; + } + + const_reference + operator[](size_type __n) const + { + __glibcxx_check_subscript(__n); + return _M_base()[__n]; + } + + using _Base::at; + + reference + front() + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + const_reference + front() const + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + reference + back() + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + const_reference + back() const + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 464. Suggestion for new member functions in standard containers. + using _Base::data; + + // 23.2.4.3 modifiers: + void + push_back(const _Tp& __x) + { + bool __realloc = _M_requires_reallocation(this->size() + 1); + _Base::push_back(__x); + if (__realloc) + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + } + +#if __cplusplus >= 201103L + template + typename __gnu_cxx::__enable_if::__value, + void>::__type + push_back(_Tp&& __x) + { emplace_back(std::move(__x)); } + + template + void + emplace_back(_Args&&... __args) + { + bool __realloc = _M_requires_reallocation(this->size() + 1); + _Base::emplace_back(std::forward<_Args>(__args)...); + if (__realloc) + this->_M_invalidate_all(); + _M_update_guaranteed_capacity(); + } +#endif + + void + pop_back() + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(--_Base::end())); + _Base::pop_back(); + } + +#if __cplusplus >= 201103L + template + iterator + emplace(iterator __position, _Args&&... __args) + { + __glibcxx_check_insert(__position); + bool __realloc = _M_requires_reallocation(this->size() + 1); + difference_type __offset = __position.base() - _Base::begin(); + _Base_iterator __res = _Base::emplace(__position.base(), + std::forward<_Args>(__args)...); + if (__realloc) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + _M_update_guaranteed_capacity(); + return iterator(__res, this); + } +#endif + + iterator + insert(iterator __position, const _Tp& __x) + { + __glibcxx_check_insert(__position); + bool __realloc = _M_requires_reallocation(this->size() + 1); + difference_type __offset = __position.base() - _Base::begin(); + _Base_iterator __res = _Base::insert(__position.base(), __x); + if (__realloc) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + _M_update_guaranteed_capacity(); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + template + typename __gnu_cxx::__enable_if::__value, + iterator>::__type + insert(iterator __position, _Tp&& __x) + { return emplace(__position, std::move(__x)); } + + void + insert(iterator __position, initializer_list __l) + { this->insert(__position, __l.begin(), __l.end()); } +#endif + + void + insert(iterator __position, size_type __n, const _Tp& __x) + { + __glibcxx_check_insert(__position); + bool __realloc = _M_requires_reallocation(this->size() + __n); + difference_type __offset = __position.base() - _Base::begin(); + _Base::insert(__position.base(), __n, __x); + if (__realloc) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + _M_update_guaranteed_capacity(); + } + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + insert(iterator __position, + _InputIterator __first, _InputIterator __last) + { + __glibcxx_check_insert_range(__position, __first, __last); + + /* Hard to guess if invalidation will occur, because __last + - __first can't be calculated in all cases, so we just + punt here by checking if it did occur. */ + _Base_iterator __old_begin = _M_base().begin(); + difference_type __offset = __position.base() - _Base::begin(); + _Base::insert(__position.base(), __gnu_debug::__base(__first), + __gnu_debug::__base(__last)); + + if (_M_base().begin() != __old_begin) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + _M_update_guaranteed_capacity(); + } + + iterator + erase(iterator __position) + { + __glibcxx_check_erase(__position); + difference_type __offset = __position.base() - _Base::begin(); + _Base_iterator __res = _Base::erase(__position.base()); + this->_M_invalidate_after_nth(__offset); + return iterator(__res, this); + } + + iterator + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + + if (__first.base() != __last.base()) + { + difference_type __offset = __first.base() - _Base::begin(); + _Base_iterator __res = _Base::erase(__first.base(), + __last.base()); + this->_M_invalidate_after_nth(__offset); + return iterator(__res, this); + } + else + return __first; + } + + void + swap(vector& __x) +#if __cplusplus >= 201103L + noexcept(_Alloc_traits::_S_nothrow_swap()) +#endif + { +#if __cplusplus >= 201103L + if (!_Alloc_traits::_S_propagate_on_swap()) + __glibcxx_check_equal_allocs(__x); +#endif + _Base::swap(__x); + this->_M_swap(__x); + std::swap(_M_guaranteed_capacity, __x._M_guaranteed_capacity); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + _Base::clear(); + this->_M_invalidate_all(); + _M_guaranteed_capacity = 0; + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + size_type _M_guaranteed_capacity; + + bool + _M_requires_reallocation(size_type __elements) + { return __elements > this->capacity(); } + + void + _M_update_guaranteed_capacity() + { + if (this->size() > _M_guaranteed_capacity) + _M_guaranteed_capacity = this->size(); + } + + void + _M_invalidate_after_nth(difference_type __n) + { + typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth; + this->_M_invalidate_if(_After_nth(__n, _Base::begin())); + } + }; + + template + inline bool + operator==(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>& __rhs) + { __lhs.swap(__rhs); } + +} // namespace __debug + +#if __cplusplus >= 201103L + // DR 1182. + /// std::hash specialization for vector. + template + struct hash<__debug::vector> + : public __hash_base> + { + size_t + operator()(const __debug::vector& __b) const noexcept + { return std::hash<_GLIBCXX_STD_C::vector>() + (__b._M_base()); } + }; +#endif + +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/decimal/decimal b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/decimal/decimal new file mode 100644 index 0000000..a880537 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/decimal/decimal @@ -0,0 +1,485 @@ +// -*- C++ -*- + +// Copyright (C) 2009-2013 Free Software Foundation, Inc. +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file decimal/decimal + * This is a Standard C++ Library header. + */ + +// ISO/IEC TR 24733 +// Written by Janis Johnson + +#ifndef _GLIBCXX_DECIMAL +#define _GLIBCXX_DECIMAL 1 + +#pragma GCC system_header + +#include + +#ifndef _GLIBCXX_USE_DECIMAL_FLOAT +#error This file requires compiler and library support for ISO/IEC TR 24733 \ +that is currently not available. +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ + /** + * @defgroup decimal Decimal Floating-Point Arithmetic + * @ingroup numerics + * + * Classes and functions for decimal floating-point arithmetic. + * @{ + */ + + /** @namespace std::decimal + * @brief ISO/IEC TR 24733 Decimal floating-point arithmetic. + */ +namespace decimal +{ + _GLIBCXX_BEGIN_NAMESPACE_VERSION + + class decimal32; + class decimal64; + class decimal128; + + // 3.2.5 Initialization from coefficient and exponent. + static decimal32 make_decimal32(long long __coeff, int __exp); + static decimal32 make_decimal32(unsigned long long __coeff, int __exp); + static decimal64 make_decimal64(long long __coeff, int __exp); + static decimal64 make_decimal64(unsigned long long __coeff, int __exp); + static decimal128 make_decimal128(long long __coeff, int __exp); + static decimal128 make_decimal128(unsigned long long __coeff, int __exp); + + /// Non-conforming extension: Conversion to integral type. + long long decimal32_to_long_long(decimal32 __d); + long long decimal64_to_long_long(decimal64 __d); + long long decimal128_to_long_long(decimal128 __d); + long long decimal_to_long_long(decimal32 __d); + long long decimal_to_long_long(decimal64 __d); + long long decimal_to_long_long(decimal128 __d); + + // 3.2.6 Conversion to generic floating-point type. + float decimal32_to_float(decimal32 __d); + float decimal64_to_float(decimal64 __d); + float decimal128_to_float(decimal128 __d); + float decimal_to_float(decimal32 __d); + float decimal_to_float(decimal64 __d); + float decimal_to_float(decimal128 __d); + + double decimal32_to_double(decimal32 __d); + double decimal64_to_double(decimal64 __d); + double decimal128_to_double(decimal128 __d); + double decimal_to_double(decimal32 __d); + double decimal_to_double(decimal64 __d); + double decimal_to_double(decimal128 __d); + + long double decimal32_to_long_double(decimal32 __d); + long double decimal64_to_long_double(decimal64 __d); + long double decimal128_to_long_double(decimal128 __d); + long double decimal_to_long_double(decimal32 __d); + long double decimal_to_long_double(decimal64 __d); + long double decimal_to_long_double(decimal128 __d); + + // 3.2.7 Unary arithmetic operators. + decimal32 operator+(decimal32 __rhs); + decimal64 operator+(decimal64 __rhs); + decimal128 operator+(decimal128 __rhs); + decimal32 operator-(decimal32 __rhs); + decimal64 operator-(decimal64 __rhs); + decimal128 operator-(decimal128 __rhs); + + // 3.2.8 Binary arithmetic operators. +#define _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(_Op, _T1, _T2, _T3) \ + _T1 operator _Op(_T2 __lhs, _T3 __rhs); +#define _DECLARE_DECIMAL_BINARY_OP_WITH_INT(_Op, _Tp) \ + _Tp operator _Op(_Tp __lhs, int __rhs); \ + _Tp operator _Op(_Tp __lhs, unsigned int __rhs); \ + _Tp operator _Op(_Tp __lhs, long __rhs); \ + _Tp operator _Op(_Tp __lhs, unsigned long __rhs); \ + _Tp operator _Op(_Tp __lhs, long long __rhs); \ + _Tp operator _Op(_Tp __lhs, unsigned long long __rhs); \ + _Tp operator _Op(int __lhs, _Tp __rhs); \ + _Tp operator _Op(unsigned int __lhs, _Tp __rhs); \ + _Tp operator _Op(long __lhs, _Tp __rhs); \ + _Tp operator _Op(unsigned long __lhs, _Tp __rhs); \ + _Tp operator _Op(long long __lhs, _Tp __rhs); \ + _Tp operator _Op(unsigned long long __lhs, _Tp __rhs); + + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal32, decimal32, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(+, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal32, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal64, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal64, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(+, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal32, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal64, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(+, decimal128) + + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal32, decimal32, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(-, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal32, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal64, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal64, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(-, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal32, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal64, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(-, decimal128) + + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal32, decimal32, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(*, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal32, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal64, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal64, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(*, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal32, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal64, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(*, decimal128) + + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal32, decimal32, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(/, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal32, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal64, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal64, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(/, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal32, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal64, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal32) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal64) + _DECLARE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal128) + _DECLARE_DECIMAL_BINARY_OP_WITH_INT(/, decimal128) + +#undef _DECLARE_DECIMAL_BINARY_OP_WITH_DEC +#undef _DECLARE_DECIMAL_BINARY_OP_WITH_INT + + // 3.2.9 Comparison operators. +#define _DECLARE_DECIMAL_COMPARISON(_Op, _Tp) \ + bool operator _Op(_Tp __lhs, decimal32 __rhs); \ + bool operator _Op(_Tp __lhs, decimal64 __rhs); \ + bool operator _Op(_Tp __lhs, decimal128 __rhs); \ + bool operator _Op(_Tp __lhs, int __rhs); \ + bool operator _Op(_Tp __lhs, unsigned int __rhs); \ + bool operator _Op(_Tp __lhs, long __rhs); \ + bool operator _Op(_Tp __lhs, unsigned long __rhs); \ + bool operator _Op(_Tp __lhs, long long __rhs); \ + bool operator _Op(_Tp __lhs, unsigned long long __rhs); \ + bool operator _Op(int __lhs, _Tp __rhs); \ + bool operator _Op(unsigned int __lhs, _Tp __rhs); \ + bool operator _Op(long __lhs, _Tp __rhs); \ + bool operator _Op(unsigned long __lhs, _Tp __rhs); \ + bool operator _Op(long long __lhs, _Tp __rhs); \ + bool operator _Op(unsigned long long __lhs, _Tp __rhs); + + _DECLARE_DECIMAL_COMPARISON(==, decimal32) + _DECLARE_DECIMAL_COMPARISON(==, decimal64) + _DECLARE_DECIMAL_COMPARISON(==, decimal128) + + _DECLARE_DECIMAL_COMPARISON(!=, decimal32) + _DECLARE_DECIMAL_COMPARISON(!=, decimal64) + _DECLARE_DECIMAL_COMPARISON(!=, decimal128) + + _DECLARE_DECIMAL_COMPARISON(<, decimal32) + _DECLARE_DECIMAL_COMPARISON(<, decimal64) + _DECLARE_DECIMAL_COMPARISON(<, decimal128) + + _DECLARE_DECIMAL_COMPARISON(>=, decimal32) + _DECLARE_DECIMAL_COMPARISON(>=, decimal64) + _DECLARE_DECIMAL_COMPARISON(>=, decimal128) + + _DECLARE_DECIMAL_COMPARISON(>, decimal32) + _DECLARE_DECIMAL_COMPARISON(>, decimal64) + _DECLARE_DECIMAL_COMPARISON(>, decimal128) + + _DECLARE_DECIMAL_COMPARISON(>=, decimal32) + _DECLARE_DECIMAL_COMPARISON(>=, decimal64) + _DECLARE_DECIMAL_COMPARISON(>=, decimal128) + +#undef _DECLARE_DECIMAL_COMPARISON + + /// 3.2.2 Class decimal32. + class decimal32 + { + public: + typedef float __decfloat32 __attribute__((mode(SD))); + + // 3.2.2.2 Construct/copy/destroy. + decimal32() : __val(0.e-101DF) {} + + // 3.2.2.3 Conversion from floating-point type. + explicit decimal32(decimal64 __d64); + explicit decimal32(decimal128 __d128); + explicit decimal32(float __r) : __val(__r) {} + explicit decimal32(double __r) : __val(__r) {} + explicit decimal32(long double __r) : __val(__r) {} + + // 3.2.2.4 Conversion from integral type. + decimal32(int __z) : __val(__z) {} + decimal32(unsigned int __z) : __val(__z) {} + decimal32(long __z) : __val(__z) {} + decimal32(unsigned long __z) : __val(__z) {} + decimal32(long long __z) : __val(__z) {} + decimal32(unsigned long long __z) : __val(__z) {} + + /// Conforming extension: Conversion from scalar decimal type. + decimal32(__decfloat32 __z) : __val(__z) {} + + // 3.2.2.5 Conversion to integral type. (DISABLED) + //operator long long() const { return (long long)__val; } + + // 3.2.2.6 Increment and decrement operators. + decimal32& operator++() + { + __val += 1; + return *this; + } + + decimal32 operator++(int) + { + decimal32 __tmp = *this; + __val += 1; + return __tmp; + } + + decimal32& operator--() + { + __val -= 1; + return *this; + } + + decimal32 operator--(int) + { + decimal32 __tmp = *this; + __val -= 1; + return __tmp; + } + + // 3.2.2.7 Compound assignment. +#define _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(_Op) \ + decimal32& operator _Op(decimal32 __rhs); \ + decimal32& operator _Op(decimal64 __rhs); \ + decimal32& operator _Op(decimal128 __rhs); \ + decimal32& operator _Op(int __rhs); \ + decimal32& operator _Op(unsigned int __rhs); \ + decimal32& operator _Op(long __rhs); \ + decimal32& operator _Op(unsigned long __rhs); \ + decimal32& operator _Op(long long __rhs); \ + decimal32& operator _Op(unsigned long long __rhs); + + _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(+=) + _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(-=) + _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(*=) + _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT(/=) +#undef _DECLARE_DECIMAL32_COMPOUND_ASSIGNMENT + + private: + __decfloat32 __val; + + public: + __decfloat32 __getval(void) { return __val; } + void __setval(__decfloat32 __x) { __val = __x; } + }; + + /// 3.2.3 Class decimal64. + class decimal64 + { + public: + typedef float __decfloat64 __attribute__((mode(DD))); + + // 3.2.3.2 Construct/copy/destroy. + decimal64() : __val(0.e-398dd) {} + + // 3.2.3.3 Conversion from floating-point type. + decimal64(decimal32 d32); + explicit decimal64(decimal128 d128); + explicit decimal64(float __r) : __val(__r) {} + explicit decimal64(double __r) : __val(__r) {} + explicit decimal64(long double __r) : __val(__r) {} + + // 3.2.3.4 Conversion from integral type. + decimal64(int __z) : __val(__z) {} + decimal64(unsigned int __z) : __val(__z) {} + decimal64(long __z) : __val(__z) {} + decimal64(unsigned long __z) : __val(__z) {} + decimal64(long long __z) : __val(__z) {} + decimal64(unsigned long long __z) : __val(__z) {} + + /// Conforming extension: Conversion from scalar decimal type. + decimal64(__decfloat64 __z) : __val(__z) {} + + // 3.2.3.5 Conversion to integral type. (DISABLED) + //operator long long() const { return (long long)__val; } + + // 3.2.3.6 Increment and decrement operators. + decimal64& operator++() + { + __val += 1; + return *this; + } + + decimal64 operator++(int) + { + decimal64 __tmp = *this; + __val += 1; + return __tmp; + } + + decimal64& operator--() + { + __val -= 1; + return *this; + } + + decimal64 operator--(int) + { + decimal64 __tmp = *this; + __val -= 1; + return __tmp; + } + + // 3.2.3.7 Compound assignment. +#define _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(_Op) \ + decimal64& operator _Op(decimal32 __rhs); \ + decimal64& operator _Op(decimal64 __rhs); \ + decimal64& operator _Op(decimal128 __rhs); \ + decimal64& operator _Op(int __rhs); \ + decimal64& operator _Op(unsigned int __rhs); \ + decimal64& operator _Op(long __rhs); \ + decimal64& operator _Op(unsigned long __rhs); \ + decimal64& operator _Op(long long __rhs); \ + decimal64& operator _Op(unsigned long long __rhs); + + _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(+=) + _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(-=) + _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(*=) + _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT(/=) +#undef _DECLARE_DECIMAL64_COMPOUND_ASSIGNMENT + + private: + __decfloat64 __val; + + public: + __decfloat64 __getval(void) { return __val; } + void __setval(__decfloat64 __x) { __val = __x; } + }; + + /// 3.2.4 Class decimal128. + class decimal128 + { + public: + typedef float __decfloat128 __attribute__((mode(TD))); + + // 3.2.4.2 Construct/copy/destroy. + decimal128() : __val(0.e-6176DL) {} + + // 3.2.4.3 Conversion from floating-point type. + decimal128(decimal32 d32); + decimal128(decimal64 d64); + explicit decimal128(float __r) : __val(__r) {} + explicit decimal128(double __r) : __val(__r) {} + explicit decimal128(long double __r) : __val(__r) {} + + + // 3.2.4.4 Conversion from integral type. + decimal128(int __z) : __val(__z) {} + decimal128(unsigned int __z) : __val(__z) {} + decimal128(long __z) : __val(__z) {} + decimal128(unsigned long __z) : __val(__z) {} + decimal128(long long __z) : __val(__z) {} + decimal128(unsigned long long __z) : __val(__z) {} + + /// Conforming extension: Conversion from scalar decimal type. + decimal128(__decfloat128 __z) : __val(__z) {} + + // 3.2.4.5 Conversion to integral type. (DISABLED) + //operator long long() const { return (long long)__val; } + + // 3.2.4.6 Increment and decrement operators. + decimal128& operator++() + { + __val += 1; + return *this; + } + + decimal128 operator++(int) + { + decimal128 __tmp = *this; + __val += 1; + return __tmp; + } + + decimal128& operator--() + { + __val -= 1; + return *this; + } + + decimal128 operator--(int) + { + decimal128 __tmp = *this; + __val -= 1; + return __tmp; + } + + // 3.2.4.7 Compound assignment. +#define _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(_Op) \ + decimal128& operator _Op(decimal32 __rhs); \ + decimal128& operator _Op(decimal64 __rhs); \ + decimal128& operator _Op(decimal128 __rhs); \ + decimal128& operator _Op(int __rhs); \ + decimal128& operator _Op(unsigned int __rhs); \ + decimal128& operator _Op(long __rhs); \ + decimal128& operator _Op(unsigned long __rhs); \ + decimal128& operator _Op(long long __rhs); \ + decimal128& operator _Op(unsigned long long __rhs); + + _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(+=) + _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(-=) + _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(*=) + _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT(/=) +#undef _DECLARE_DECIMAL128_COMPOUND_ASSIGNMENT + + private: + __decfloat128 __val; + + public: + __decfloat128 __getval(void) { return __val; } + void __setval(__decfloat128 __x) { __val = __x; } + }; + +#define _GLIBCXX_USE_DECIMAL_ 1 + + _GLIBCXX_END_NAMESPACE_VERSION +} // namespace decimal + // @} group decimal +} // namespace std + +#include + +#endif /* _GLIBCXX_DECIMAL */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/decimal/decimal.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/decimal/decimal.h new file mode 100644 index 0000000..03c067a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/decimal/decimal.h @@ -0,0 +1,468 @@ +// decimal classes -*- C++ -*- + +// Copyright (C) 2009-2013 Free Software Foundation, Inc. + +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file decimal/decimal.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{decimal} + */ + +// ISO/IEC TR 24733 +// Written by Janis Johnson + +#ifndef _GLIBCXX_DECIMAL_IMPL +#define _GLIBCXX_DECIMAL_IMPL 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace decimal +{ + _GLIBCXX_BEGIN_NAMESPACE_VERSION + + // ISO/IEC TR 24733 3.2.[234].1 Construct/copy/destroy. + + inline decimal32::decimal32(decimal64 __r) : __val(__r.__getval()) {} + inline decimal32::decimal32(decimal128 __r) : __val(__r.__getval()) {} + inline decimal64::decimal64(decimal32 __r) : __val(__r.__getval()) {} + inline decimal64::decimal64(decimal128 __r) : __val(__r.__getval()) {} + inline decimal128::decimal128(decimal32 __r) : __val(__r.__getval()) {} + inline decimal128::decimal128(decimal64 __r) : __val(__r.__getval()) {} + + // ISO/IEC TR 24733 3.2.[234].6 Compound assignment. + +#define _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC(_Op1, _Op2, _T1, _T2) \ + inline _T1& _T1::operator _Op1(_T2 __rhs) \ + { \ + __setval(__getval() _Op2 __rhs.__getval()); \ + return *this; \ + } + +#define _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, _T2) \ + inline _T1& _T1::operator _Op1(_T2 __rhs) \ + { \ + __setval(__getval() _Op2 __rhs); \ + return *this; \ + } + +#define _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(_Op1, _Op2, _T1) \ + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC(_Op1, _Op2, _T1, decimal32) \ + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC(_Op1, _Op2, _T1, decimal64) \ + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC(_Op1, _Op2, _T1, decimal128) \ + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, int) \ + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, unsigned int) \ + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, long) \ + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, unsigned long)\ + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, long long) \ + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT(_Op1, _Op2, _T1, unsigned long long) + + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(+=, +, decimal32) + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(-=, -, decimal32) + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(*=, *, decimal32) + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(/=, /, decimal32) + + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(+=, +, decimal64) + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(-=, -, decimal64) + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(*=, *, decimal64) + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(/=, /, decimal64) + + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(+=, +, decimal128) + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(-=, -, decimal128) + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(*=, *, decimal128) + _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS(/=, /, decimal128) + +#undef _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_DEC +#undef _DEFINE_DECIMAL_COMPOUND_ASSIGNMENT_INT +#undef _DEFINE_DECIMAL_COMPOUND_ASSIGNMENTS + + // Extension: Conversion to integral type. + + inline long long decimal32_to_long_long(decimal32 __d) + { return (long long)__d.__getval(); } + + inline long long decimal64_to_long_long(decimal64 __d) + { return (long long)__d.__getval(); } + + inline long long decimal128_to_long_long(decimal128 __d) + { return (long long)__d.__getval(); } + + inline long long decimal_to_long_long(decimal32 __d) + { return (long long)__d.__getval(); } + + inline long long decimal_to_long_long(decimal64 __d) + { return (long long)__d.__getval(); } + + inline long long decimal_to_long_long(decimal128 __d) + { return (long long)__d.__getval(); } + + // ISO/IEC TR 24733 3.2.5 Initialization from coefficient and exponent. + + static decimal32 make_decimal32(long long __coeff, int __exponent) + { + decimal32 __decexp = 1, __multiplier; + + if (__exponent < 0) + { + __multiplier = 1.E-1DF; + __exponent = -__exponent; + } + else + __multiplier = 1.E1DF; + + for (int __i = 0; __i < __exponent; ++__i) + __decexp *= __multiplier; + + return __coeff * __decexp; + } + + static decimal32 make_decimal32(unsigned long long __coeff, int __exponent) + { + decimal32 __decexp = 1, __multiplier; + + if (__exponent < 0) + { + __multiplier = 1.E-1DF; + __exponent = -__exponent; + } + else + __multiplier = 1.E1DF; + + for (int __i = 0; __i < __exponent; ++__i) + __decexp *= __multiplier; + + return __coeff * __decexp; + } + + static decimal64 make_decimal64(long long __coeff, int __exponent) + { + decimal64 __decexp = 1, __multiplier; + + if (__exponent < 0) + { + __multiplier = 1.E-1DD; + __exponent = -__exponent; + } + else + __multiplier = 1.E1DD; + + for (int __i = 0; __i < __exponent; ++__i) + __decexp *= __multiplier; + + return __coeff * __decexp; + } + + static decimal64 make_decimal64(unsigned long long __coeff, int __exponent) + { + decimal64 __decexp = 1, __multiplier; + + if (__exponent < 0) + { + __multiplier = 1.E-1DD; + __exponent = -__exponent; + } + else + __multiplier = 1.E1DD; + + for (int __i = 0; __i < __exponent; ++__i) + __decexp *= __multiplier; + + return __coeff * __decexp; + } + + static decimal128 make_decimal128(long long __coeff, int __exponent) + { + decimal128 __decexp = 1, __multiplier; + + if (__exponent < 0) + { + __multiplier = 1.E-1DL; + __exponent = -__exponent; + } + else + __multiplier = 1.E1DL; + + for (int __i = 0; __i < __exponent; ++__i) + __decexp *= __multiplier; + + return __coeff * __decexp; + } + + static decimal128 make_decimal128(unsigned long long __coeff, int __exponent) + { + decimal128 __decexp = 1, __multiplier; + + if (__exponent < 0) + { + __multiplier = 1.E-1DL; + __exponent = -__exponent; + } + else + __multiplier = 1.E1DL; + + for (int __i = 0; __i < __exponent; ++__i) + __decexp *= __multiplier; + + return __coeff * __decexp; + } + + // ISO/IEC TR 24733 3.2.6 Conversion to generic floating-point type. + + inline float decimal32_to_float(decimal32 __d) + { return (float)__d.__getval(); } + + inline float decimal64_to_float(decimal64 __d) + { return (float)__d.__getval(); } + + inline float decimal128_to_float(decimal128 __d) + { return (float)__d.__getval(); } + + inline float decimal_to_float(decimal32 __d) + { return (float)__d.__getval(); } + + inline float decimal_to_float(decimal64 __d) + { return (float)__d.__getval(); } + + inline float decimal_to_float(decimal128 __d) + { return (float)__d.__getval(); } + + inline double decimal32_to_double(decimal32 __d) + { return (double)__d.__getval(); } + + inline double decimal64_to_double(decimal64 __d) + { return (double)__d.__getval(); } + + inline double decimal128_to_double(decimal128 __d) + { return (double)__d.__getval(); } + + inline double decimal_to_double(decimal32 __d) + { return (double)__d.__getval(); } + + inline double decimal_to_double(decimal64 __d) + { return (double)__d.__getval(); } + + inline double decimal_to_double(decimal128 __d) + { return (double)__d.__getval(); } + + inline long double decimal32_to_long_double(decimal32 __d) + { return (long double)__d.__getval(); } + + inline long double decimal64_to_long_double(decimal64 __d) + { return (long double)__d.__getval(); } + + inline long double decimal128_to_long_double(decimal128 __d) + { return (long double)__d.__getval(); } + + inline long double decimal_to_long_double(decimal32 __d) + { return (long double)__d.__getval(); } + + inline long double decimal_to_long_double(decimal64 __d) + { return (long double)__d.__getval(); } + + inline long double decimal_to_long_double(decimal128 __d) + { return (long double)__d.__getval(); } + + // ISO/IEC TR 24733 3.2.7 Unary arithmetic operators. + +#define _DEFINE_DECIMAL_UNARY_OP(_Op, _Tp) \ + inline _Tp operator _Op(_Tp __rhs) \ + { \ + _Tp __tmp; \ + __tmp.__setval(_Op __rhs.__getval()); \ + return __tmp; \ + } + + _DEFINE_DECIMAL_UNARY_OP(+, decimal32) + _DEFINE_DECIMAL_UNARY_OP(+, decimal64) + _DEFINE_DECIMAL_UNARY_OP(+, decimal128) + _DEFINE_DECIMAL_UNARY_OP(-, decimal32) + _DEFINE_DECIMAL_UNARY_OP(-, decimal64) + _DEFINE_DECIMAL_UNARY_OP(-, decimal128) + +#undef _DEFINE_DECIMAL_UNARY_OP + + // ISO/IEC TR 24733 3.2.8 Binary arithmetic operators. + +#define _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(_Op, _T1, _T2, _T3) \ + inline _T1 operator _Op(_T2 __lhs, _T3 __rhs) \ + { \ + _T1 __retval; \ + __retval.__setval(__lhs.__getval() _Op __rhs.__getval()); \ + return __retval; \ + } + +#define _DEFINE_DECIMAL_BINARY_OP_BOTH(_Op, _T1, _T2, _T3) \ + inline _T1 operator _Op(_T2 __lhs, _T3 __rhs) \ + { \ + _T1 __retval; \ + __retval.__setval(__lhs.__getval() _Op __rhs.__getval()); \ + return __retval; \ + } + +#define _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, _T2) \ + inline _T1 operator _Op(_T1 __lhs, _T2 __rhs) \ + { \ + _T1 __retval; \ + __retval.__setval(__lhs.__getval() _Op __rhs); \ + return __retval; \ + } + +#define _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, _T2) \ + inline _T1 operator _Op(_T2 __lhs, _T1 __rhs) \ + { \ + _T1 __retval; \ + __retval.__setval(__lhs _Op __rhs.__getval()); \ + return __retval; \ + } + +#define _DEFINE_DECIMAL_BINARY_OP_WITH_INT(_Op, _T1) \ + _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, int); \ + _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, unsigned int); \ + _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, long); \ + _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, unsigned long); \ + _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, long long); \ + _DEFINE_DECIMAL_BINARY_OP_LHS(_Op, _T1, unsigned long long); \ + _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, int); \ + _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, unsigned int); \ + _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, long); \ + _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, unsigned long); \ + _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, long long); \ + _DEFINE_DECIMAL_BINARY_OP_RHS(_Op, _T1, unsigned long long); \ + + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal32, decimal32, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(+, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal32, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal64, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal64, decimal64, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(+, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal32, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal64, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(+, decimal128, decimal128, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(+, decimal128) + + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal32, decimal32, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(-, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal32, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal64, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal64, decimal64, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(-, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal32, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal64, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(-, decimal128, decimal128, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(-, decimal128) + + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal32, decimal32, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(*, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal32, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal64, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal64, decimal64, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(*, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal32, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal64, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(*, decimal128, decimal128, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(*, decimal128) + + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal32, decimal32, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(/, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal32, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal64, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal64, decimal64, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(/, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal32, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal64, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal32) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal64) + _DEFINE_DECIMAL_BINARY_OP_WITH_DEC(/, decimal128, decimal128, decimal128) + _DEFINE_DECIMAL_BINARY_OP_WITH_INT(/, decimal128) + +#undef _DEFINE_DECIMAL_BINARY_OP_WITH_DEC +#undef _DEFINE_DECIMAL_BINARY_OP_BOTH +#undef _DEFINE_DECIMAL_BINARY_OP_LHS +#undef _DEFINE_DECIMAL_BINARY_OP_RHS +#undef _DEFINE_DECIMAL_BINARY_OP_WITH_INT + + // ISO/IEC TR 24733 3.2.9 Comparison operators. + +#define _DEFINE_DECIMAL_COMPARISON_BOTH(_Op, _T1, _T2) \ + inline bool operator _Op(_T1 __lhs, _T2 __rhs) \ + { return __lhs.__getval() _Op __rhs.__getval(); } + +#define _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _T1, _T2) \ + inline bool operator _Op(_T1 __lhs, _T2 __rhs) \ + { return __lhs.__getval() _Op __rhs; } + +#define _DEFINE_DECIMAL_COMPARISON_RHS(_Op, _T1, _T2) \ + inline bool operator _Op(_T1 __lhs, _T2 __rhs) \ + { return __lhs _Op __rhs.__getval(); } + +#define _DEFINE_DECIMAL_COMPARISONS(_Op, _Tp) \ + _DEFINE_DECIMAL_COMPARISON_BOTH(_Op, _Tp, decimal32) \ + _DEFINE_DECIMAL_COMPARISON_BOTH(_Op, _Tp, decimal64) \ + _DEFINE_DECIMAL_COMPARISON_BOTH(_Op, _Tp, decimal128) \ + _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, int) \ + _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, unsigned int) \ + _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, long) \ + _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, unsigned long) \ + _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, long long) \ + _DEFINE_DECIMAL_COMPARISON_LHS(_Op, _Tp, unsigned long long) \ + _DEFINE_DECIMAL_COMPARISON_RHS(_Op, int, _Tp) \ + _DEFINE_DECIMAL_COMPARISON_RHS(_Op, unsigned int, _Tp) \ + _DEFINE_DECIMAL_COMPARISON_RHS(_Op, long, _Tp) \ + _DEFINE_DECIMAL_COMPARISON_RHS(_Op, unsigned long, _Tp) \ + _DEFINE_DECIMAL_COMPARISON_RHS(_Op, long long, _Tp) \ + _DEFINE_DECIMAL_COMPARISON_RHS(_Op, unsigned long long, _Tp) + + _DEFINE_DECIMAL_COMPARISONS(==, decimal32) + _DEFINE_DECIMAL_COMPARISONS(==, decimal64) + _DEFINE_DECIMAL_COMPARISONS(==, decimal128) + _DEFINE_DECIMAL_COMPARISONS(!=, decimal32) + _DEFINE_DECIMAL_COMPARISONS(!=, decimal64) + _DEFINE_DECIMAL_COMPARISONS(!=, decimal128) + _DEFINE_DECIMAL_COMPARISONS(<, decimal32) + _DEFINE_DECIMAL_COMPARISONS(<, decimal64) + _DEFINE_DECIMAL_COMPARISONS(<, decimal128) + _DEFINE_DECIMAL_COMPARISONS(<=, decimal32) + _DEFINE_DECIMAL_COMPARISONS(<=, decimal64) + _DEFINE_DECIMAL_COMPARISONS(<=, decimal128) + _DEFINE_DECIMAL_COMPARISONS(>, decimal32) + _DEFINE_DECIMAL_COMPARISONS(>, decimal64) + _DEFINE_DECIMAL_COMPARISONS(>, decimal128) + _DEFINE_DECIMAL_COMPARISONS(>=, decimal32) + _DEFINE_DECIMAL_COMPARISONS(>=, decimal64) + _DEFINE_DECIMAL_COMPARISONS(>=, decimal128) + +#undef _DEFINE_DECIMAL_COMPARISON_BOTH +#undef _DEFINE_DECIMAL_COMPARISON_LHS +#undef _DEFINE_DECIMAL_COMPARISON_RHS +#undef _DEFINE_DECIMAL_COMPARISONS + _GLIBCXX_END_NAMESPACE_VERSION +} // namespace decimal +} // namespace std + +#endif /* _GLIBCXX_DECIMAL_IMPL */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/deque b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/deque new file mode 100644 index 0000000..07589d6 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/deque @@ -0,0 +1,76 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file include/deque + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_DEQUE +#define _GLIBCXX_DEQUE 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif /* _GLIBCXX_DEQUE */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/exception b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/exception new file mode 100644 index 0000000..f30cda9 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/exception @@ -0,0 +1,156 @@ +// Exception Handling support header for -*- C++ -*- + +// Copyright (C) 1995-2013 Free Software Foundation, Inc. +// +// This file is part of GCC. +// +// GCC is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// GCC is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file exception + * This is a Standard C++ Library header. + */ + +#ifndef __EXCEPTION__ +#define __EXCEPTION__ + +#pragma GCC system_header + +#pragma GCC visibility push(default) + +#include +#include + +extern "C++" { + +namespace std +{ + /** + * @defgroup exceptions Exceptions + * @ingroup diagnostics + * + * Classes and functions for reporting errors via exception classes. + * @{ + */ + + /** + * @brief Base class for all library exceptions. + * + * This is the base class for all exceptions thrown by the standard + * library, and by certain language expressions. You are free to derive + * your own %exception classes, or use a different hierarchy, or to + * throw non-class data (e.g., fundamental types). + */ + class exception + { + public: + exception() _GLIBCXX_USE_NOEXCEPT { } + virtual ~exception() _GLIBCXX_USE_NOEXCEPT; + + /** Returns a C-style character string describing the general cause + * of the current error. */ + virtual const char* what() const _GLIBCXX_USE_NOEXCEPT; + }; + + /** If an %exception is thrown which is not listed in a function's + * %exception specification, one of these may be thrown. */ + class bad_exception : public exception + { + public: + bad_exception() _GLIBCXX_USE_NOEXCEPT { } + + // This declaration is not useless: + // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 + virtual ~bad_exception() _GLIBCXX_USE_NOEXCEPT; + + // See comment in eh_exception.cc. + virtual const char* what() const _GLIBCXX_USE_NOEXCEPT; + }; + + /// If you write a replacement %terminate handler, it must be of this type. + typedef void (*terminate_handler) (); + + /// If you write a replacement %unexpected handler, it must be of this type. + typedef void (*unexpected_handler) (); + + /// Takes a new handler function as an argument, returns the old function. + terminate_handler set_terminate(terminate_handler) _GLIBCXX_USE_NOEXCEPT; + + /** The runtime will call this function if %exception handling must be + * abandoned for any reason. It can also be called by the user. */ + void terminate() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__noreturn__)); + + /// Takes a new handler function as an argument, returns the old function. + unexpected_handler set_unexpected(unexpected_handler) _GLIBCXX_USE_NOEXCEPT; + + /** The runtime will call this function if an %exception is thrown which + * violates the function's %exception specification. */ + void unexpected() __attribute__ ((__noreturn__)); + + /** [18.6.4]/1: 'Returns true after completing evaluation of a + * throw-expression until either completing initialization of the + * exception-declaration in the matching handler or entering @c unexpected() + * due to the throw; or after entering @c terminate() for any reason + * other than an explicit call to @c terminate(). [Note: This includes + * stack unwinding [15.2]. end note]' + * + * 2: 'When @c uncaught_exception() is true, throwing an + * %exception can result in a call of @c terminate() + * (15.5.1).' + */ + bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); + + // @} group exceptions +} // namespace std + +namespace __gnu_cxx +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief A replacement for the standard terminate_handler which + * prints more information about the terminating exception (if any) + * on stderr. + * + * @ingroup exceptions + * + * Call + * @code + * std::set_terminate(__gnu_cxx::__verbose_terminate_handler) + * @endcode + * to use. For more info, see + * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt02ch06s02.html + * + * In 3.4 and later, this is on by default. + */ + void __verbose_terminate_handler(); + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +} // extern "C++" + +#pragma GCC visibility pop + +#if (__cplusplus >= 201103L) && (ATOMIC_INT_LOCK_FREE > 1) +#include +#include +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/algorithm b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/algorithm new file mode 100644 index 0000000..57c33b4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/algorithm @@ -0,0 +1,603 @@ +// Algorithm extensions -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file ext/algorithm + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _EXT_ALGORITHM +#define _EXT_ALGORITHM 1 + +#pragma GCC system_header + +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::ptrdiff_t; + using std::min; + using std::pair; + using std::input_iterator_tag; + using std::random_access_iterator_tag; + using std::iterator_traits; + + //-------------------------------------------------- + // copy_n (not part of the C++ standard) + + template + pair<_InputIterator, _OutputIterator> + __copy_n(_InputIterator __first, _Size __count, + _OutputIterator __result, + input_iterator_tag) + { + for ( ; __count > 0; --__count) + { + *__result = *__first; + ++__first; + ++__result; + } + return pair<_InputIterator, _OutputIterator>(__first, __result); + } + + template + inline pair<_RAIterator, _OutputIterator> + __copy_n(_RAIterator __first, _Size __count, + _OutputIterator __result, + random_access_iterator_tag) + { + _RAIterator __last = __first + __count; + return pair<_RAIterator, _OutputIterator>(__last, std::copy(__first, + __last, + __result)); + } + + /** + * @brief Copies the range [first,first+count) into [result,result+count). + * @param __first An input iterator. + * @param __count The number of elements to copy. + * @param __result An output iterator. + * @return A std::pair composed of first+count and result+count. + * + * This is an SGI extension. + * This inline function will boil down to a call to @c memmove whenever + * possible. Failing that, if random access iterators are passed, then the + * loop count will be known (and therefore a candidate for compiler + * optimizations such as unrolling). + * @ingroup SGIextensions + */ + template + inline pair<_InputIterator, _OutputIterator> + copy_n(_InputIterator __first, _Size __count, _OutputIterator __result) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + + return __gnu_cxx::__copy_n(__first, __count, __result, + std::__iterator_category(__first)); + } + + template + int + __lexicographical_compare_3way(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2) + { + while (__first1 != __last1 && __first2 != __last2) + { + if (*__first1 < *__first2) + return -1; + if (*__first2 < *__first1) + return 1; + ++__first1; + ++__first2; + } + if (__first2 == __last2) + return !(__first1 == __last1); + else + return -1; + } + + inline int + __lexicographical_compare_3way(const unsigned char* __first1, + const unsigned char* __last1, + const unsigned char* __first2, + const unsigned char* __last2) + { + const ptrdiff_t __len1 = __last1 - __first1; + const ptrdiff_t __len2 = __last2 - __first2; + const int __result = __builtin_memcmp(__first1, __first2, + min(__len1, __len2)); + return __result != 0 ? __result + : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1)); + } + + inline int + __lexicographical_compare_3way(const char* __first1, const char* __last1, + const char* __first2, const char* __last2) + { +#if CHAR_MAX == SCHAR_MAX + return __lexicographical_compare_3way((const signed char*) __first1, + (const signed char*) __last1, + (const signed char*) __first2, + (const signed char*) __last2); +#else + return __lexicographical_compare_3way((const unsigned char*) __first1, + (const unsigned char*) __last1, + (const unsigned char*) __first2, + (const unsigned char*) __last2); +#endif + } + + /** + * @brief @c memcmp on steroids. + * @param __first1 An input iterator. + * @param __last1 An input iterator. + * @param __first2 An input iterator. + * @param __last2 An input iterator. + * @return An int, as with @c memcmp. + * + * The return value will be less than zero if the first range is + * lexigraphically less than the second, greater than zero + * if the second range is lexigraphically less than the + * first, and zero otherwise. + * This is an SGI extension. + * @ingroup SGIextensions + */ + template + int + lexicographical_compare_3way(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_InputIterator1>::value_type>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_InputIterator2>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + return __lexicographical_compare_3way(__first1, __last1, __first2, + __last2); + } + + // count and count_if: this version, whose return type is void, was present + // in the HP STL, and is retained as an extension for backward compatibility. + template + void + count(_InputIterator __first, _InputIterator __last, + const _Tp& __value, + _Size& __n) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_EqualityComparableConcept< + typename iterator_traits<_InputIterator>::value_type >) + __glibcxx_function_requires(_EqualityComparableConcept<_Tp>) + __glibcxx_requires_valid_range(__first, __last); + + for ( ; __first != __last; ++__first) + if (*__first == __value) + ++__n; + } + + template + void + count_if(_InputIterator __first, _InputIterator __last, + _Predicate __pred, + _Size& __n) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + for ( ; __first != __last; ++__first) + if (__pred(*__first)) + ++__n; + } + + // random_sample and random_sample_n (extensions, not part of the standard). + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + _OutputIterator + random_sample_n(_ForwardIterator __first, _ForwardIterator __last, + _OutputIterator __out, const _Distance __n) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + _Distance __remaining = std::distance(__first, __last); + _Distance __m = min(__n, __remaining); + + while (__m > 0) + { + if ((std::rand() % __remaining) < __m) + { + *__out = *__first; + ++__out; + --__m; + } + --__remaining; + ++__first; + } + return __out; + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + _OutputIterator + random_sample_n(_ForwardIterator __first, _ForwardIterator __last, + _OutputIterator __out, const _Distance __n, + _RandomNumberGenerator& __rand) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_function_requires(_UnaryFunctionConcept< + _RandomNumberGenerator, _Distance, _Distance>) + __glibcxx_requires_valid_range(__first, __last); + + _Distance __remaining = std::distance(__first, __last); + _Distance __m = min(__n, __remaining); + + while (__m > 0) + { + if (__rand(__remaining) < __m) + { + *__out = *__first; + ++__out; + --__m; + } + --__remaining; + ++__first; + } + return __out; + } + + template + _RandomAccessIterator + __random_sample(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __out, + const _Distance __n) + { + _Distance __m = 0; + _Distance __t = __n; + for ( ; __first != __last && __m < __n; ++__m, ++__first) + __out[__m] = *__first; + + while (__first != __last) + { + ++__t; + _Distance __M = std::rand() % (__t); + if (__M < __n) + __out[__M] = *__first; + ++__first; + } + return __out + __m; + } + + template + _RandomAccessIterator + __random_sample(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __out, + _RandomNumberGenerator& __rand, + const _Distance __n) + { + // concept requirements + __glibcxx_function_requires(_UnaryFunctionConcept< + _RandomNumberGenerator, _Distance, _Distance>) + + _Distance __m = 0; + _Distance __t = __n; + for ( ; __first != __last && __m < __n; ++__m, ++__first) + __out[__m] = *__first; + + while (__first != __last) + { + ++__t; + _Distance __M = __rand(__t); + if (__M < __n) + __out[__M] = *__first; + ++__first; + } + return __out + __m; + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline _RandomAccessIterator + random_sample(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __out_first, + _RandomAccessIterator __out_last) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_valid_range(__out_first, __out_last); + + return __random_sample(__first, __last, + __out_first, __out_last - __out_first); + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline _RandomAccessIterator + random_sample(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __out_first, + _RandomAccessIterator __out_last, + _RandomNumberGenerator& __rand) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_valid_range(__out_first, __out_last); + + return __random_sample(__first, __last, + __out_first, __rand, + __out_last - __out_first); + } + +#if __cplusplus >= 201103L + using std::is_heap; +#else + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline bool + is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_RandomAccessIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return std::__is_heap(__first, __last - __first); + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline bool + is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _StrictWeakOrdering __comp) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering, + typename iterator_traits<_RandomAccessIterator>::value_type, + typename iterator_traits<_RandomAccessIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return std::__is_heap(__first, __comp, __last - __first); + } +#endif + +#if __cplusplus >= 201103L + using std::is_sorted; +#else + // is_sorted, a predicated testing whether a range is sorted in + // nondescending order. This is an extension, not part of the C++ + // standard. + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + bool + is_sorted(_ForwardIterator __first, _ForwardIterator __last) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return true; + + _ForwardIterator __next = __first; + for (++__next; __next != __last; __first = __next, ++__next) + if (*__next < *__first) + return false; + return true; + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + bool + is_sorted(_ForwardIterator __first, _ForwardIterator __last, + _StrictWeakOrdering __comp) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return true; + + _ForwardIterator __next = __first; + for (++__next; __next != __last; __first = __next, ++__next) + if (__comp(*__next, *__first)) + return false; + return true; + } +#endif // C++11 + + /** + * @brief Find the median of three values. + * @param __a A value. + * @param __b A value. + * @param __c A value. + * @return One of @p a, @p b or @p c. + * + * If @c {l,m,n} is some convolution of @p {a,b,c} such that @c l<=m<=n + * then the value returned will be @c m. + * This is an SGI extension. + * @ingroup SGIextensions + */ + template + const _Tp& + __median(const _Tp& __a, const _Tp& __b, const _Tp& __c) + { + // concept requirements + __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) + if (__a < __b) + if (__b < __c) + return __b; + else if (__a < __c) + return __c; + else + return __a; + else if (__a < __c) + return __a; + else if (__b < __c) + return __c; + else + return __b; + } + + /** + * @brief Find the median of three values using a predicate for comparison. + * @param __a A value. + * @param __b A value. + * @param __c A value. + * @param __comp A binary predicate. + * @return One of @p a, @p b or @p c. + * + * If @c {l,m,n} is some convolution of @p {a,b,c} such that @p comp(l,m) + * and @p comp(m,n) are both true then the value returned will be @c m. + * This is an SGI extension. + * @ingroup SGIextensions + */ + template + const _Tp& + __median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool, + _Tp, _Tp>) + if (__comp(__a, __b)) + if (__comp(__b, __c)) + return __b; + else if (__comp(__a, __c)) + return __c; + else + return __a; + else if (__comp(__a, __c)) + return __a; + else if (__comp(__b, __c)) + return __c; + else + return __b; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _EXT_ALGORITHM */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/alloc_traits.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/alloc_traits.h new file mode 100644 index 0000000..333473a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/alloc_traits.h @@ -0,0 +1,242 @@ +// Allocator traits -*- C++ -*- + +// Copyright (C) 2011-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/alloc_traits.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _EXT_ALLOC_TRAITS_H +#define _EXT_ALLOC_TRAITS_H 1 + +#pragma GCC system_header + +#if __cplusplus >= 201103L +# include +# include +#else +# include // for __alloc_swap +#endif + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#if __cplusplus >= 201103L + 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; +#endif + +/** + * @brief Uniform interface to C++98 and C++0x allocators. + * @ingroup allocators +*/ +template + struct __alloc_traits +#if __cplusplus >= 201103L + : std::allocator_traits<_Alloc> +#endif + { + typedef _Alloc allocator_type; +#if __cplusplus >= 201103L + typedef std::allocator_traits<_Alloc> _Base_type; + typedef typename _Base_type::value_type value_type; + typedef typename _Base_type::pointer pointer; + typedef typename _Base_type::const_pointer const_pointer; + typedef typename _Base_type::size_type size_type; + typedef typename _Base_type::difference_type difference_type; + // C++0x allocators do not define reference or const_reference + typedef value_type& reference; + typedef const value_type& const_reference; + using _Base_type::allocate; + using _Base_type::deallocate; + using _Base_type::construct; + using _Base_type::destroy; + using _Base_type::max_size; + + private: + template + struct __is_custom_pointer + : std::integral_constant::value + && !std::is_pointer<_Ptr>::value> + { }; + + public: + // overload construct for non-standard pointer types + template + static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type + construct(_Alloc& __a, _Ptr __p, _Args&&... __args) + { + _Base_type::construct(__a, std::addressof(*__p), + std::forward<_Args>(__args)...); + } + + // overload destroy for non-standard pointer types + template + static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type + destroy(_Alloc& __a, _Ptr __p) + { _Base_type::destroy(__a, std::addressof(*__p)); } + + static _Alloc _S_select_on_copy(const _Alloc& __a) + { return _Base_type::select_on_container_copy_construction(__a); } + + static void _S_on_swap(_Alloc& __a, _Alloc& __b) + { std::__alloc_on_swap(__a, __b); } + + static constexpr bool _S_propagate_on_copy_assign() + { return _Base_type::propagate_on_container_copy_assignment::value; } + + static constexpr bool _S_propagate_on_move_assign() + { return _Base_type::propagate_on_container_move_assignment::value; } + + static constexpr bool _S_propagate_on_swap() + { return _Base_type::propagate_on_container_swap::value; } + + static constexpr bool _S_always_equal() + { return __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; }; +#else + + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::value_type value_type; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + typedef typename _Alloc::size_type size_type; + typedef typename _Alloc::difference_type difference_type; + + static pointer + allocate(_Alloc& __a, size_type __n) + { return __a.allocate(__n); } + + static void deallocate(_Alloc& __a, pointer __p, size_type __n) + { __a.deallocate(__p, __n); } + + template + static void construct(_Alloc& __a, pointer __p, const _Tp& __arg) + { __a.construct(__p, __arg); } + + static void destroy(_Alloc& __a, pointer __p) + { __a.destroy(__p); } + + static size_type max_size(const _Alloc& __a) + { return __a.max_size(); } + + static const _Alloc& _S_select_on_copy(const _Alloc& __a) { return __a; } + + static void _S_on_swap(_Alloc& __a, _Alloc& __b) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 431. Swapping containers with unequal allocators. + std::__alloc_swap<_Alloc>::_S_do_it(__a, __b); + } + + template + struct rebind + { typedef typename _Alloc::template rebind<_Tp>::other other; }; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/array_allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/array_allocator.h new file mode 100644 index 0000000..95a6a38 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/array_allocator.h @@ -0,0 +1,172 @@ +// array allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/array_allocator.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _ARRAY_ALLOCATOR_H +#define _ARRAY_ALLOCATOR_H 1 + +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::size_t; + using std::ptrdiff_t; + + /// Base class. + template + class array_allocator_base + { + 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; + + pointer + address(reference __x) const _GLIBCXX_NOEXCEPT + { return std::__addressof(__x); } + + const_pointer + address(const_reference __x) const _GLIBCXX_NOEXCEPT + { return std::__addressof(__x); } + + void + deallocate(pointer, size_type) + { + // Does nothing. + } + + size_type + max_size() const _GLIBCXX_USE_NOEXCEPT + { return size_t(-1) / sizeof(_Tp); } + +#if __cplusplus >= 201103L + template + void + construct(_Up* __p, _Args&&... __args) + { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } + + template + void + destroy(_Up* __p) { __p->~_Up(); } +#else + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 402. wrong new expression in [some_] allocator::construct + void + construct(pointer __p, const _Tp& __val) + { ::new((void *)__p) value_type(__val); } + + void + destroy(pointer __p) { __p->~_Tp(); } +#endif + }; + + /** + * @brief An allocator that uses previously allocated memory. + * This memory can be externally, globally, or otherwise allocated. + * @ingroup allocators + */ + template > + class array_allocator : public array_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; + typedef _Array array_type; + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2103. std::allocator propagate_on_container_move_assignment + typedef std::true_type propagate_on_container_move_assignment; +#endif + + private: + array_type* _M_array; + size_type _M_used; + + public: + template + struct rebind + { typedef array_allocator<_Tp1, _Array1> other; }; + + array_allocator(array_type* __array = 0) _GLIBCXX_USE_NOEXCEPT + : _M_array(__array), _M_used(size_type()) { } + + array_allocator(const array_allocator& __o) _GLIBCXX_USE_NOEXCEPT + : _M_array(__o._M_array), _M_used(__o._M_used) { } + + template + array_allocator(const array_allocator<_Tp1, _Array1>&) + _GLIBCXX_USE_NOEXCEPT + : _M_array(0), _M_used(size_type()) { } + + ~array_allocator() _GLIBCXX_USE_NOEXCEPT { } + + pointer + allocate(size_type __n, const void* = 0) + { + if (_M_array == 0 || _M_used + __n > _M_array->size()) + std::__throw_bad_alloc(); + pointer __ret = _M_array->begin() + _M_used; + _M_used += __n; + return __ret; + } + }; + + template + inline bool + operator==(const array_allocator<_Tp, _Array>&, + const array_allocator<_Tp, _Array>&) + { return true; } + + template + inline bool + operator!=(const array_allocator<_Tp, _Array>&, + const array_allocator<_Tp, _Array>&) + { return false; } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/atomicity.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/atomicity.h new file mode 100644 index 0000000..a439627 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/atomicity.h @@ -0,0 +1,117 @@ +// Support for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/atomicity.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMICITY_H +#define _GLIBCXX_ATOMICITY_H 1 + +#pragma GCC system_header + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Functions for portable atomic access. + // To abstract locking primitives across all thread policies, use: + // __exchange_and_add_dispatch + // __atomic_add_dispatch +#ifdef _GLIBCXX_ATOMIC_BUILTINS + static inline _Atomic_word + __exchange_and_add(volatile _Atomic_word* __mem, int __val) + { return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); } + + static inline void + __atomic_add(volatile _Atomic_word* __mem, int __val) + { __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); } +#else + _Atomic_word + __attribute__ ((__unused__)) + __exchange_and_add(volatile _Atomic_word*, int) throw (); + + void + __attribute__ ((__unused__)) + __atomic_add(volatile _Atomic_word*, int) throw (); +#endif + + 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) + { +#ifdef __GTHREADS + if (__gthread_active_p()) + return __exchange_and_add(__mem, __val); + else + return __exchange_and_add_single(__mem, __val); +#else + return __exchange_and_add_single(__mem, __val); +#endif + } + + static inline void + __attribute__ ((__unused__)) + __atomic_add_dispatch(_Atomic_word* __mem, int __val) + { +#ifdef __GTHREADS + if (__gthread_active_p()) + __atomic_add(__mem, __val); + else + __atomic_add_single(__mem, __val); +#else + __atomic_add_single(__mem, __val); +#endif + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +// Even if the CPU doesn't need a memory barrier, we need to ensure +// that the compiler doesn't reorder memory accesses across the +// barriers. +#ifndef _GLIBCXX_READ_MEM_BARRIER +#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") +#endif +#ifndef _GLIBCXX_WRITE_MEM_BARRIER +#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/bitmap_allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/bitmap_allocator.h new file mode 100644 index 0000000..a8fe861 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/bitmap_allocator.h @@ -0,0 +1,1119 @@ +// Bitmap Allocator. -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/bitmap_allocator.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _BITMAP_ALLOCATOR_H +#define _BITMAP_ALLOCATOR_H 1 + +#include // For std::pair. +#include // For __throw_bad_alloc(). +#include // For greater_equal, and less_equal. +#include // For operator new. +#include // _GLIBCXX_DEBUG_ASSERT +#include +#include + +/** @brief The constant in the expression below is the alignment + * required in bytes. + */ +#define _BALLOC_ALIGN_BYTES 8 + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ + using std::size_t; + using std::ptrdiff_t; + + namespace __detail + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION + /** @class __mini_vector bitmap_allocator.h bitmap_allocator.h + * + * @brief __mini_vector<> is a stripped down version of the + * full-fledged std::vector<>. + * + * It is to be used only for built-in types or PODs. Notable + * differences are: + * + * 1. Not all accessor functions are present. + * 2. Used ONLY for PODs. + * 3. No Allocator template argument. Uses ::operator new() to get + * memory, and ::operator delete() to free it. + * Caveat: The dtor does NOT free the memory allocated, so this a + * memory-leaking vector! + */ + template + class __mini_vector + { + __mini_vector(const __mini_vector&); + __mini_vector& operator=(const __mini_vector&); + + public: + typedef _Tp value_type; + typedef _Tp* pointer; + typedef _Tp& reference; + typedef const _Tp& const_reference; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef pointer iterator; + + private: + pointer _M_start; + pointer _M_finish; + pointer _M_end_of_storage; + + size_type + _M_space_left() const throw() + { return _M_end_of_storage - _M_finish; } + + pointer + allocate(size_type __n) + { return static_cast(::operator new(__n * sizeof(_Tp))); } + + void + deallocate(pointer __p, size_type) + { ::operator delete(__p); } + + public: + // Members used: size(), push_back(), pop_back(), + // insert(iterator, const_reference), erase(iterator), + // begin(), end(), back(), operator[]. + + __mini_vector() + : _M_start(0), _M_finish(0), _M_end_of_storage(0) { } + + size_type + size() const throw() + { return _M_finish - _M_start; } + + iterator + begin() const throw() + { return this->_M_start; } + + iterator + end() const throw() + { return this->_M_finish; } + + reference + back() const throw() + { return *(this->end() - 1); } + + reference + operator[](const size_type __pos) const throw() + { return this->_M_start[__pos]; } + + void + insert(iterator __pos, const_reference __x); + + void + push_back(const_reference __x) + { + if (this->_M_space_left()) + { + *this->end() = __x; + ++this->_M_finish; + } + else + this->insert(this->end(), __x); + } + + void + pop_back() throw() + { --this->_M_finish; } + + void + erase(iterator __pos) throw(); + + void + clear() throw() + { this->_M_finish = this->_M_start; } + }; + + // Out of line function definitions. + template + void __mini_vector<_Tp>:: + insert(iterator __pos, const_reference __x) + { + if (this->_M_space_left()) + { + size_type __to_move = this->_M_finish - __pos; + iterator __dest = this->end(); + iterator __src = this->end() - 1; + + ++this->_M_finish; + while (__to_move) + { + *__dest = *__src; + --__dest; --__src; --__to_move; + } + *__pos = __x; + } + else + { + size_type __new_size = this->size() ? this->size() * 2 : 1; + iterator __new_start = this->allocate(__new_size); + iterator __first = this->begin(); + iterator __start = __new_start; + while (__first != __pos) + { + *__start = *__first; + ++__start; ++__first; + } + *__start = __x; + ++__start; + while (__first != this->end()) + { + *__start = *__first; + ++__start; ++__first; + } + if (this->_M_start) + this->deallocate(this->_M_start, this->size()); + + this->_M_start = __new_start; + this->_M_finish = __start; + this->_M_end_of_storage = this->_M_start + __new_size; + } + } + + template + void __mini_vector<_Tp>:: + erase(iterator __pos) throw() + { + while (__pos + 1 != this->end()) + { + *__pos = __pos[1]; + ++__pos; + } + --this->_M_finish; + } + + + template + struct __mv_iter_traits + { + typedef typename _Tp::value_type value_type; + typedef typename _Tp::difference_type difference_type; + }; + + template + struct __mv_iter_traits<_Tp*> + { + typedef _Tp value_type; + typedef ptrdiff_t difference_type; + }; + + enum + { + bits_per_byte = 8, + bits_per_block = sizeof(size_t) * size_t(bits_per_byte) + }; + + template + _ForwardIterator + __lower_bound(_ForwardIterator __first, _ForwardIterator __last, + const _Tp& __val, _Compare __comp) + { + typedef typename __mv_iter_traits<_ForwardIterator>::difference_type + _DistanceType; + + _DistanceType __len = __last - __first; + _DistanceType __half; + _ForwardIterator __middle; + + while (__len > 0) + { + __half = __len >> 1; + __middle = __first; + __middle += __half; + if (__comp(*__middle, __val)) + { + __first = __middle; + ++__first; + __len = __len - __half - 1; + } + else + __len = __half; + } + return __first; + } + + /** @brief The number of Blocks pointed to by the address pair + * passed to the function. + */ + template + inline size_t + __num_blocks(_AddrPair __ap) + { return (__ap.second - __ap.first) + 1; } + + /** @brief The number of Bit-maps pointed to by the address pair + * passed to the function. + */ + template + inline size_t + __num_bitmaps(_AddrPair __ap) + { return __num_blocks(__ap) / size_t(bits_per_block); } + + // _Tp should be a pointer type. + template + class _Inclusive_between + : public std::unary_function, bool> + { + typedef _Tp pointer; + pointer _M_ptr_value; + typedef typename std::pair<_Tp, _Tp> _Block_pair; + + public: + _Inclusive_between(pointer __ptr) : _M_ptr_value(__ptr) + { } + + bool + operator()(_Block_pair __bp) const throw() + { + if (std::less_equal()(_M_ptr_value, __bp.second) + && std::greater_equal()(_M_ptr_value, __bp.first)) + return true; + else + return false; + } + }; + + // Used to pass a Functor to functions by reference. + template + class _Functor_Ref + : public std::unary_function + { + _Functor& _M_fref; + + public: + typedef typename _Functor::argument_type argument_type; + typedef typename _Functor::result_type result_type; + + _Functor_Ref(_Functor& __fref) : _M_fref(__fref) + { } + + result_type + operator()(argument_type __arg) + { return _M_fref(__arg); } + }; + + /** @class _Ffit_finder bitmap_allocator.h bitmap_allocator.h + * + * @brief The class which acts as a predicate for applying the + * first-fit memory allocation policy for the bitmap allocator. + */ + // _Tp should be a pointer type, and _Alloc is the Allocator for + // the vector. + template + class _Ffit_finder + : public std::unary_function, bool> + { + typedef typename std::pair<_Tp, _Tp> _Block_pair; + typedef typename __detail::__mini_vector<_Block_pair> _BPVector; + typedef typename _BPVector::difference_type _Counter_type; + + size_t* _M_pbitmap; + _Counter_type _M_data_offset; + + public: + _Ffit_finder() : _M_pbitmap(0), _M_data_offset(0) + { } + + bool + operator()(_Block_pair __bp) throw() + { + // Set the _rover to the last physical location bitmap, + // which is the bitmap which belongs to the first free + // block. Thus, the bitmaps are in exact reverse order of + // the actual memory layout. So, we count down the bitmaps, + // which is the same as moving up the memory. + + // If the used count stored at the start of the Bit Map headers + // is equal to the number of Objects that the current Block can + // store, then there is definitely no space for another single + // object, so just return false. + _Counter_type __diff = __detail::__num_bitmaps(__bp); + + if (*(reinterpret_cast + (__bp.first) - (__diff + 1)) == __detail::__num_blocks(__bp)) + return false; + + size_t* __rover = reinterpret_cast(__bp.first) - 1; + + for (_Counter_type __i = 0; __i < __diff; ++__i) + { + _M_data_offset = __i; + if (*__rover) + { + _M_pbitmap = __rover; + return true; + } + --__rover; + } + return false; + } + + size_t* + _M_get() const throw() + { return _M_pbitmap; } + + _Counter_type + _M_offset() const throw() + { return _M_data_offset * size_t(bits_per_block); } + }; + + /** @class _Bitmap_counter bitmap_allocator.h bitmap_allocator.h + * + * @brief The bitmap counter which acts as the bitmap + * manipulator, and manages the bit-manipulation functions and + * the searching and identification functions on the bit-map. + */ + // _Tp should be a pointer type. + template + class _Bitmap_counter + { + typedef typename + __detail::__mini_vector > _BPVector; + typedef typename _BPVector::size_type _Index_type; + typedef _Tp pointer; + + _BPVector& _M_vbp; + size_t* _M_curr_bmap; + size_t* _M_last_bmap_in_block; + _Index_type _M_curr_index; + + public: + // Use the 2nd parameter with care. Make sure that such an + // entry exists in the vector before passing that particular + // index to this ctor. + _Bitmap_counter(_BPVector& Rvbp, long __index = -1) : _M_vbp(Rvbp) + { this->_M_reset(__index); } + + void + _M_reset(long __index = -1) throw() + { + if (__index == -1) + { + _M_curr_bmap = 0; + _M_curr_index = static_cast<_Index_type>(-1); + return; + } + + _M_curr_index = __index; + _M_curr_bmap = reinterpret_cast + (_M_vbp[_M_curr_index].first) - 1; + + _GLIBCXX_DEBUG_ASSERT(__index <= (long)_M_vbp.size() - 1); + + _M_last_bmap_in_block = _M_curr_bmap + - ((_M_vbp[_M_curr_index].second + - _M_vbp[_M_curr_index].first + 1) + / size_t(bits_per_block) - 1); + } + + // Dangerous Function! Use with extreme care. Pass to this + // function ONLY those values that are known to be correct, + // otherwise this will mess up big time. + void + _M_set_internal_bitmap(size_t* __new_internal_marker) throw() + { _M_curr_bmap = __new_internal_marker; } + + bool + _M_finished() const throw() + { return(_M_curr_bmap == 0); } + + _Bitmap_counter& + operator++() throw() + { + if (_M_curr_bmap == _M_last_bmap_in_block) + { + if (++_M_curr_index == _M_vbp.size()) + _M_curr_bmap = 0; + else + this->_M_reset(_M_curr_index); + } + else + --_M_curr_bmap; + return *this; + } + + size_t* + _M_get() const throw() + { return _M_curr_bmap; } + + pointer + _M_base() const throw() + { return _M_vbp[_M_curr_index].first; } + + _Index_type + _M_offset() const throw() + { + return size_t(bits_per_block) + * ((reinterpret_cast(this->_M_base()) + - _M_curr_bmap) - 1); + } + + _Index_type + _M_where() const throw() + { return _M_curr_index; } + }; + + /** @brief Mark a memory address as allocated by re-setting the + * corresponding bit in the bit-map. + */ + inline void + __bit_allocate(size_t* __pbmap, size_t __pos) throw() + { + size_t __mask = 1 << __pos; + __mask = ~__mask; + *__pbmap &= __mask; + } + + /** @brief Mark a memory address as free by setting the + * corresponding bit in the bit-map. + */ + inline void + __bit_free(size_t* __pbmap, size_t __pos) throw() + { + size_t __mask = 1 << __pos; + *__pbmap |= __mask; + } + + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace __detail + +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** @brief Generic Version of the bsf instruction. + */ + inline size_t + _Bit_scan_forward(size_t __num) + { return static_cast(__builtin_ctzl(__num)); } + + /** @class free_list bitmap_allocator.h bitmap_allocator.h + * + * @brief The free list class for managing chunks of memory to be + * given to and returned by the bitmap_allocator. + */ + class free_list + { + public: + typedef size_t* value_type; + typedef __detail::__mini_vector vector_type; + typedef vector_type::iterator iterator; + typedef __mutex __mutex_type; + + private: + struct _LT_pointer_compare + { + bool + operator()(const size_t* __pui, + const size_t __cui) const throw() + { return *__pui < __cui; } + }; + +#if defined __GTHREADS + __mutex_type& + _M_get_mutex() + { + static __mutex_type _S_mutex; + return _S_mutex; + } +#endif + + vector_type& + _M_get_free_list() + { + static vector_type _S_free_list; + return _S_free_list; + } + + /** @brief Performs validation of memory based on their size. + * + * @param __addr The pointer to the memory block to be + * validated. + * + * Validates the memory block passed to this function and + * appropriately performs the action of managing the free list of + * blocks by adding this block to the free list or deleting this + * or larger blocks from the free list. + */ + void + _M_validate(size_t* __addr) throw() + { + vector_type& __free_list = _M_get_free_list(); + const vector_type::size_type __max_size = 64; + if (__free_list.size() >= __max_size) + { + // Ok, the threshold value has been reached. We determine + // which block to remove from the list of free blocks. + if (*__addr >= *__free_list.back()) + { + // Ok, the new block is greater than or equal to the + // last block in the list of free blocks. We just free + // the new block. + ::operator delete(static_cast(__addr)); + return; + } + else + { + // Deallocate the last block in the list of free lists, + // and insert the new one in its correct position. + ::operator delete(static_cast(__free_list.back())); + __free_list.pop_back(); + } + } + + // Just add the block to the list of free lists unconditionally. + iterator __temp = __detail::__lower_bound + (__free_list.begin(), __free_list.end(), + *__addr, _LT_pointer_compare()); + + // We may insert the new free list before _temp; + __free_list.insert(__temp, __addr); + } + + /** @brief Decides whether the wastage of memory is acceptable for + * the current memory request and returns accordingly. + * + * @param __block_size The size of the block available in the free + * list. + * + * @param __required_size The required size of the memory block. + * + * @return true if the wastage incurred is acceptable, else returns + * false. + */ + bool + _M_should_i_give(size_t __block_size, + size_t __required_size) throw() + { + const size_t __max_wastage_percentage = 36; + if (__block_size >= __required_size && + (((__block_size - __required_size) * 100 / __block_size) + < __max_wastage_percentage)) + return true; + else + return false; + } + + public: + /** @brief This function returns the block of memory to the + * internal free list. + * + * @param __addr The pointer to the memory block that was given + * by a call to the _M_get function. + */ + inline void + _M_insert(size_t* __addr) throw() + { +#if defined __GTHREADS + __scoped_lock __bfl_lock(_M_get_mutex()); +#endif + // Call _M_validate to decide what should be done with + // this particular free list. + this->_M_validate(reinterpret_cast(__addr) - 1); + // See discussion as to why this is 1! + } + + /** @brief This function gets a block of memory of the specified + * size from the free list. + * + * @param __sz The size in bytes of the memory required. + * + * @return A pointer to the new memory block of size at least + * equal to that requested. + */ + size_t* + _M_get(size_t __sz) throw(std::bad_alloc); + + /** @brief This function just clears the internal Free List, and + * gives back all the memory to the OS. + */ + void + _M_clear(); + }; + + + // Forward declare the class. + template + class bitmap_allocator; + + // Specialize for void: + template<> + class bitmap_allocator + { + public: + typedef void* pointer; + typedef const void* const_pointer; + + // Reference-to-void members are impossible. + typedef void value_type; + template + struct rebind + { + typedef bitmap_allocator<_Tp1> other; + }; + }; + + /** + * @brief Bitmap Allocator, primary template. + * @ingroup allocators + */ + template + class bitmap_allocator : private free_list + { + 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; + typedef free_list::__mutex_type __mutex_type; + + template + struct rebind + { + typedef bitmap_allocator<_Tp1> other; + }; + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2103. propagate_on_container_move_assignment + typedef std::true_type propagate_on_container_move_assignment; +#endif + + private: + template + struct aligned_size + { + enum + { + modulus = _BSize % _AlignSize, + value = _BSize + (modulus ? _AlignSize - (modulus) : 0) + }; + }; + + struct _Alloc_block + { + char __M_unused[aligned_size::value]; + }; + + + typedef typename std::pair<_Alloc_block*, _Alloc_block*> _Block_pair; + + typedef typename __detail::__mini_vector<_Block_pair> _BPVector; + typedef typename _BPVector::iterator _BPiter; + + template + static _BPiter + _S_find(_Predicate __p) + { + _BPiter __first = _S_mem_blocks.begin(); + while (__first != _S_mem_blocks.end() && !__p(*__first)) + ++__first; + return __first; + } + +#if defined _GLIBCXX_DEBUG + // Complexity: O(lg(N)). Where, N is the number of block of size + // sizeof(value_type). + void + _S_check_for_free_blocks() throw() + { + typedef typename __detail::_Ffit_finder<_Alloc_block*> _FFF; + _BPiter __bpi = _S_find(_FFF()); + + _GLIBCXX_DEBUG_ASSERT(__bpi == _S_mem_blocks.end()); + } +#endif + + /** @brief Responsible for exponentially growing the internal + * memory pool. + * + * @throw std::bad_alloc. If memory can not be allocated. + * + * Complexity: O(1), but internally depends upon the + * complexity of the function free_list::_M_get. The part where + * the bitmap headers are written has complexity: O(X),where X + * is the number of blocks of size sizeof(value_type) within + * the newly acquired block. Having a tight bound. + */ + void + _S_refill_pool() throw(std::bad_alloc) + { +#if defined _GLIBCXX_DEBUG + _S_check_for_free_blocks(); +#endif + + const size_t __num_bitmaps = (_S_block_size + / size_t(__detail::bits_per_block)); + const size_t __size_to_allocate = sizeof(size_t) + + _S_block_size * sizeof(_Alloc_block) + + __num_bitmaps * sizeof(size_t); + + size_t* __temp = + reinterpret_cast(this->_M_get(__size_to_allocate)); + *__temp = 0; + ++__temp; + + // The Header information goes at the Beginning of the Block. + _Block_pair __bp = + std::make_pair(reinterpret_cast<_Alloc_block*> + (__temp + __num_bitmaps), + reinterpret_cast<_Alloc_block*> + (__temp + __num_bitmaps) + + _S_block_size - 1); + + // Fill the Vector with this information. + _S_mem_blocks.push_back(__bp); + + for (size_t __i = 0; __i < __num_bitmaps; ++__i) + __temp[__i] = ~static_cast(0); // 1 Indicates all Free. + + _S_block_size *= 2; + } + + static _BPVector _S_mem_blocks; + static size_t _S_block_size; + static __detail::_Bitmap_counter<_Alloc_block*> _S_last_request; + static typename _BPVector::size_type _S_last_dealloc_index; +#if defined __GTHREADS + static __mutex_type _S_mut; +#endif + + public: + + /** @brief Allocates memory for a single object of size + * sizeof(_Tp). + * + * @throw std::bad_alloc. If memory can not be allocated. + * + * Complexity: Worst case complexity is O(N), but that + * is hardly ever hit. If and when this particular case is + * encountered, the next few cases are guaranteed to have a + * worst case complexity of O(1)! That's why this function + * performs very well on average. You can consider this + * function to have a complexity referred to commonly as: + * Amortized Constant time. + */ + pointer + _M_allocate_single_object() throw(std::bad_alloc) + { +#if defined __GTHREADS + __scoped_lock __bit_lock(_S_mut); +#endif + + // The algorithm is something like this: The last_request + // variable points to the last accessed Bit Map. When such a + // condition occurs, we try to find a free block in the + // current bitmap, or succeeding bitmaps until the last bitmap + // is reached. If no free block turns up, we resort to First + // Fit method. + + // WARNING: Do not re-order the condition in the while + // statement below, because it relies on C++'s short-circuit + // evaluation. The return from _S_last_request->_M_get() will + // NOT be dereference able if _S_last_request->_M_finished() + // returns true. This would inevitably lead to a NULL pointer + // dereference if tinkered with. + while (_S_last_request._M_finished() == false + && (*(_S_last_request._M_get()) == 0)) + _S_last_request.operator++(); + + if (__builtin_expect(_S_last_request._M_finished() == true, false)) + { + // Fall Back to First Fit algorithm. + typedef typename __detail::_Ffit_finder<_Alloc_block*> _FFF; + _FFF __fff; + _BPiter __bpi = _S_find(__detail::_Functor_Ref<_FFF>(__fff)); + + if (__bpi != _S_mem_blocks.end()) + { + // Search was successful. Ok, now mark the first bit from + // the right as 0, meaning Allocated. This bit is obtained + // by calling _M_get() on __fff. + size_t __nz_bit = _Bit_scan_forward(*__fff._M_get()); + __detail::__bit_allocate(__fff._M_get(), __nz_bit); + + _S_last_request._M_reset(__bpi - _S_mem_blocks.begin()); + + // Now, get the address of the bit we marked as allocated. + pointer __ret = reinterpret_cast + (__bpi->first + __fff._M_offset() + __nz_bit); + size_t* __puse_count = + reinterpret_cast + (__bpi->first) - (__detail::__num_bitmaps(*__bpi) + 1); + + ++(*__puse_count); + return __ret; + } + else + { + // Search was unsuccessful. We Add more memory to the + // pool by calling _S_refill_pool(). + _S_refill_pool(); + + // _M_Reset the _S_last_request structure to the first + // free block's bit map. + _S_last_request._M_reset(_S_mem_blocks.size() - 1); + + // Now, mark that bit as allocated. + } + } + + // _S_last_request holds a pointer to a valid bit map, that + // points to a free block in memory. + size_t __nz_bit = _Bit_scan_forward(*_S_last_request._M_get()); + __detail::__bit_allocate(_S_last_request._M_get(), __nz_bit); + + pointer __ret = reinterpret_cast + (_S_last_request._M_base() + _S_last_request._M_offset() + __nz_bit); + + size_t* __puse_count = reinterpret_cast + (_S_mem_blocks[_S_last_request._M_where()].first) + - (__detail:: + __num_bitmaps(_S_mem_blocks[_S_last_request._M_where()]) + 1); + + ++(*__puse_count); + return __ret; + } + + /** @brief Deallocates memory that belongs to a single object of + * size sizeof(_Tp). + * + * Complexity: O(lg(N)), but the worst case is not hit + * often! This is because containers usually deallocate memory + * close to each other and this case is handled in O(1) time by + * the deallocate function. + */ + void + _M_deallocate_single_object(pointer __p) throw() + { +#if defined __GTHREADS + __scoped_lock __bit_lock(_S_mut); +#endif + _Alloc_block* __real_p = reinterpret_cast<_Alloc_block*>(__p); + + typedef typename _BPVector::iterator _Iterator; + typedef typename _BPVector::difference_type _Difference_type; + + _Difference_type __diff; + long __displacement; + + _GLIBCXX_DEBUG_ASSERT(_S_last_dealloc_index >= 0); + + __detail::_Inclusive_between<_Alloc_block*> __ibt(__real_p); + if (__ibt(_S_mem_blocks[_S_last_dealloc_index])) + { + _GLIBCXX_DEBUG_ASSERT(_S_last_dealloc_index + <= _S_mem_blocks.size() - 1); + + // Initial Assumption was correct! + __diff = _S_last_dealloc_index; + __displacement = __real_p - _S_mem_blocks[__diff].first; + } + else + { + _Iterator _iter = _S_find(__ibt); + + _GLIBCXX_DEBUG_ASSERT(_iter != _S_mem_blocks.end()); + + __diff = _iter - _S_mem_blocks.begin(); + __displacement = __real_p - _S_mem_blocks[__diff].first; + _S_last_dealloc_index = __diff; + } + + // Get the position of the iterator that has been found. + const size_t __rotate = (__displacement + % size_t(__detail::bits_per_block)); + size_t* __bitmapC = + reinterpret_cast + (_S_mem_blocks[__diff].first) - 1; + __bitmapC -= (__displacement / size_t(__detail::bits_per_block)); + + __detail::__bit_free(__bitmapC, __rotate); + size_t* __puse_count = reinterpret_cast + (_S_mem_blocks[__diff].first) + - (__detail::__num_bitmaps(_S_mem_blocks[__diff]) + 1); + + _GLIBCXX_DEBUG_ASSERT(*__puse_count != 0); + + --(*__puse_count); + + if (__builtin_expect(*__puse_count == 0, false)) + { + _S_block_size /= 2; + + // We can safely remove this block. + // _Block_pair __bp = _S_mem_blocks[__diff]; + this->_M_insert(__puse_count); + _S_mem_blocks.erase(_S_mem_blocks.begin() + __diff); + + // Reset the _S_last_request variable to reflect the + // erased block. We do this to protect future requests + // after the last block has been removed from a particular + // memory Chunk, which in turn has been returned to the + // free list, and hence had been erased from the vector, + // so the size of the vector gets reduced by 1. + if ((_Difference_type)_S_last_request._M_where() >= __diff--) + _S_last_request._M_reset(__diff); + + // If the Index into the vector of the region of memory + // that might hold the next address that will be passed to + // deallocated may have been invalidated due to the above + // erase procedure being called on the vector, hence we + // try to restore this invariant too. + if (_S_last_dealloc_index >= _S_mem_blocks.size()) + { + _S_last_dealloc_index =(__diff != -1 ? __diff : 0); + _GLIBCXX_DEBUG_ASSERT(_S_last_dealloc_index >= 0); + } + } + } + + public: + bitmap_allocator() _GLIBCXX_USE_NOEXCEPT + { } + + bitmap_allocator(const bitmap_allocator&) _GLIBCXX_USE_NOEXCEPT + { } + + template + bitmap_allocator(const bitmap_allocator<_Tp1>&) _GLIBCXX_USE_NOEXCEPT + { } + + ~bitmap_allocator() _GLIBCXX_USE_NOEXCEPT + { } + + pointer + allocate(size_type __n) + { + if (__n > this->max_size()) + std::__throw_bad_alloc(); + + if (__builtin_expect(__n == 1, true)) + return this->_M_allocate_single_object(); + else + { + const size_type __b = __n * sizeof(value_type); + return reinterpret_cast(::operator new(__b)); + } + } + + pointer + allocate(size_type __n, typename bitmap_allocator::const_pointer) + { return allocate(__n); } + + void + deallocate(pointer __p, size_type __n) throw() + { + if (__builtin_expect(__p != 0, true)) + { + if (__builtin_expect(__n == 1, true)) + this->_M_deallocate_single_object(__p); + else + ::operator delete(__p); + } + } + + pointer + address(reference __r) const _GLIBCXX_NOEXCEPT + { return std::__addressof(__r); } + + const_pointer + address(const_reference __r) const _GLIBCXX_NOEXCEPT + { return std::__addressof(__r); } + + size_type + max_size() const _GLIBCXX_USE_NOEXCEPT + { return size_type(-1) / sizeof(value_type); } + +#if __cplusplus >= 201103L + template + void + construct(_Up* __p, _Args&&... __args) + { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } + + template + void + destroy(_Up* __p) + { __p->~_Up(); } +#else + void + construct(pointer __p, const_reference __data) + { ::new((void *)__p) value_type(__data); } + + void + destroy(pointer __p) + { __p->~value_type(); } +#endif + }; + + template + bool + operator==(const bitmap_allocator<_Tp1>&, + const bitmap_allocator<_Tp2>&) throw() + { return true; } + + template + bool + operator!=(const bitmap_allocator<_Tp1>&, + const bitmap_allocator<_Tp2>&) throw() + { return false; } + + // Static member definitions. + template + typename bitmap_allocator<_Tp>::_BPVector + bitmap_allocator<_Tp>::_S_mem_blocks; + + template + size_t bitmap_allocator<_Tp>::_S_block_size = + 2 * size_t(__detail::bits_per_block); + + template + typename bitmap_allocator<_Tp>::_BPVector::size_type + bitmap_allocator<_Tp>::_S_last_dealloc_index = 0; + + template + __detail::_Bitmap_counter + ::_Alloc_block*> + bitmap_allocator<_Tp>::_S_last_request(_S_mem_blocks); + +#if defined __GTHREADS + template + typename bitmap_allocator<_Tp>::__mutex_type + bitmap_allocator<_Tp>::_S_mut; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __gnu_cxx + +#endif + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/cast.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/cast.h new file mode 100644 index 0000000..961a962 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/cast.h @@ -0,0 +1,121 @@ +// -*- C++ -*- + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/cast.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/pointer.h} + */ + +#ifndef _GLIBCXX_CAST_H +#define _GLIBCXX_CAST_H 1 + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * These functions are here to allow containers to support non standard + * pointer types. For normal pointers, these resolve to the use of the + * standard cast operation. For other types the functions will perform + * the apprpriate cast to/from the custom pointer class so long as that + * class meets the following conditions: + * 1) has a typedef element_type which names tehe type it points to. + * 2) has a get() const method which returns element_type*. + * 3) has a constructor which can take one element_type* argument. + */ + + /** + * This type supports the semantics of the pointer cast operators (below.) + */ + template + struct _Caster + { typedef typename _ToType::element_type* type; }; + + template + struct _Caster<_ToType*> + { typedef _ToType* type; }; + + /** + * Casting operations for cases where _FromType is not a standard pointer. + * _ToType can be a standard or non-standard pointer. Given that _FromType + * is not a pointer, it must have a get() method that returns the standard + * pointer equivalent of the address it points to, and must have an + * element_type typedef which names the type it points to. + */ + template + inline _ToType + __static_pointer_cast(const _FromType& __arg) + { return _ToType(static_cast:: + type>(__arg.get())); } + + template + inline _ToType + __dynamic_pointer_cast(const _FromType& __arg) + { return _ToType(dynamic_cast:: + type>(__arg.get())); } + + template + inline _ToType + __const_pointer_cast(const _FromType& __arg) + { return _ToType(const_cast:: + type>(__arg.get())); } + + template + inline _ToType + __reinterpret_pointer_cast(const _FromType& __arg) + { return _ToType(reinterpret_cast:: + type>(__arg.get())); } + + /** + * Casting operations for cases where _FromType is a standard pointer. + * _ToType can be a standard or non-standard pointer. + */ + template + inline _ToType + __static_pointer_cast(_FromType* __arg) + { return _ToType(static_cast:: + type>(__arg)); } + + template + inline _ToType + __dynamic_pointer_cast(_FromType* __arg) + { return _ToType(dynamic_cast:: + type>(__arg)); } + + template + inline _ToType + __const_pointer_cast(_FromType* __arg) + { return _ToType(const_cast:: + type>(__arg)); } + + template + inline _ToType + __reinterpret_pointer_cast(_FromType* __arg) + { return _ToType(reinterpret_cast:: + type>(__arg)); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // _GLIBCXX_CAST_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/cmath b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/cmath new file mode 100644 index 0000000..c17a53f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/cmath @@ -0,0 +1,152 @@ +// Math extensions -*- C++ -*- + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/cmath + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _EXT_CMATH +#define _EXT_CMATH 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // A class for math constants. + template + struct __math_constants + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + // Constant @f$ \pi @f$. + static constexpr _RealType __pi = 3.1415926535897932384626433832795029L; + // Constant @f$ \pi / 2 @f$. + static constexpr _RealType __pi_half = 1.5707963267948966192313216916397514L; + // Constant @f$ \pi / 3 @f$. + static constexpr _RealType __pi_third = 1.0471975511965977461542144610931676L; + // Constant @f$ \pi / 4 @f$. + static constexpr _RealType __pi_quarter = 0.7853981633974483096156608458198757L; + // Constant @f$ \sqrt(\pi / 2) @f$. + static constexpr _RealType __root_pi_div_2 = 1.2533141373155002512078826424055226L; + // Constant @f$ 1 / \pi @f$. + static constexpr _RealType __one_div_pi = 0.3183098861837906715377675267450287L; + // Constant @f$ 2 / \pi @f$. + static constexpr _RealType __two_div_pi = 0.6366197723675813430755350534900574L; + // Constant @f$ 2 / \sqrt(\pi) @f$. + static constexpr _RealType __two_div_root_pi = 1.1283791670955125738961589031215452L; + + // Constant Euler's number @f$ e @f$. + static constexpr _RealType __e = 2.7182818284590452353602874713526625L; + // Constant @f$ 1 / e @f$. + static constexpr _RealType __one_div_e = 0.36787944117144232159552377016146087L; + // Constant @f$ \log_2(e) @f$. + static constexpr _RealType __log2_e = 1.4426950408889634073599246810018921L; + // Constant @f$ \log_10(e) @f$. + static constexpr _RealType __log10_e = 0.4342944819032518276511289189166051L; + // Constant @f$ \ln(2) @f$. + static constexpr _RealType __ln_2 = 0.6931471805599453094172321214581766L; + // Constant @f$ \ln(3) @f$. + static constexpr _RealType __ln_3 = 1.0986122886681096913952452369225257L; + // Constant @f$ \ln(10) @f$. + static constexpr _RealType __ln_10 = 2.3025850929940456840179914546843642L; + + // Constant Euler-Mascheroni @f$ \gamma_E @f$. + static constexpr _RealType __gamma_e = 0.5772156649015328606065120900824024L; + // Constant Golden Ratio @f$ \phi @f$. + static constexpr _RealType __phi = 1.6180339887498948482045868343656381L; + + // Constant @f$ \sqrt(2) @f$. + static constexpr _RealType __root_2 = 1.4142135623730950488016887242096981L; + // Constant @f$ \sqrt(3) @f$. + static constexpr _RealType __root_3 = 1.7320508075688772935274463415058724L; + // Constant @f$ \sqrt(5) @f$. + static constexpr _RealType __root_5 = 2.2360679774997896964091736687312762L; + // Constant @f$ \sqrt(7) @f$. + static constexpr _RealType __root_7 = 2.6457513110645905905016157536392604L; + // Constant @f$ 1 / \sqrt(2) @f$. + static constexpr _RealType __one_div_root_2 = 0.7071067811865475244008443621048490L; + }; + + // And the template definitions for the constants. + template + constexpr _RealType __math_constants<_RealType>::__pi; + template + constexpr _RealType __math_constants<_RealType>::__pi_half; + template + constexpr _RealType __math_constants<_RealType>::__pi_third; + template + constexpr _RealType __math_constants<_RealType>::__pi_quarter; + template + constexpr _RealType __math_constants<_RealType>::__root_pi_div_2; + template + constexpr _RealType __math_constants<_RealType>::__one_div_pi; + template + constexpr _RealType __math_constants<_RealType>::__two_div_pi; + template + constexpr _RealType __math_constants<_RealType>::__two_div_root_pi; + template + constexpr _RealType __math_constants<_RealType>::__e; + template + constexpr _RealType __math_constants<_RealType>::__one_div_e; + template + constexpr _RealType __math_constants<_RealType>::__log2_e; + template + constexpr _RealType __math_constants<_RealType>::__log10_e; + template + constexpr _RealType __math_constants<_RealType>::__ln_2; + template + constexpr _RealType __math_constants<_RealType>::__ln_3; + template + constexpr _RealType __math_constants<_RealType>::__ln_10; + template + constexpr _RealType __math_constants<_RealType>::__gamma_e; + template + constexpr _RealType __math_constants<_RealType>::__phi; + template + constexpr _RealType __math_constants<_RealType>::__root_2; + template + constexpr _RealType __math_constants<_RealType>::__root_3; + template + constexpr _RealType __math_constants<_RealType>::__root_5; + template + constexpr _RealType __math_constants<_RealType>::__root_7; + template + constexpr _RealType __math_constants<_RealType>::__one_div_root_2; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __gnu_cxx + +#endif // C++11 + +#endif // _EXT_CMATH diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/codecvt_specializations.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/codecvt_specializations.h new file mode 100644 index 0000000..6b2dfc5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/codecvt_specializations.h @@ -0,0 +1,512 @@ +// Locale support (codecvt) -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.2.1.5 Template class codecvt +// + +// Written by Benjamin Kosnik + +/** @file ext/codecvt_specializations.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _EXT_CODECVT_SPECIALIZATIONS_H +#define _EXT_CODECVT_SPECIALIZATIONS_H 1 + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// Extension to use iconv for dealing with character encodings. + // This includes conversions and comparisons between various character + // sets. This object encapsulates data that may need to be shared between + // char_traits, codecvt and ctype. + class encoding_state + { + public: + // Types: + // NB: A conversion descriptor subsumes and enhances the + // functionality of a simple state type such as mbstate_t. + typedef iconv_t descriptor_type; + + protected: + // Name of internal character set encoding. + std::string _M_int_enc; + + // Name of external character set encoding. + std::string _M_ext_enc; + + // Conversion descriptor between external encoding to internal encoding. + descriptor_type _M_in_desc; + + // Conversion descriptor between internal encoding to external encoding. + descriptor_type _M_out_desc; + + // The byte-order marker for the external encoding, if necessary. + int _M_ext_bom; + + // The byte-order marker for the internal encoding, if necessary. + int _M_int_bom; + + // Number of external bytes needed to construct one complete + // character in the internal encoding. + // NB: -1 indicates variable, or stateful, encodings. + int _M_bytes; + + public: + explicit + encoding_state() + : _M_in_desc(0), _M_out_desc(0), _M_ext_bom(0), _M_int_bom(0), _M_bytes(0) + { } + + explicit + encoding_state(const char* __int, const char* __ext, + int __ibom = 0, int __ebom = 0, int __bytes = 1) + : _M_int_enc(__int), _M_ext_enc(__ext), _M_in_desc(0), _M_out_desc(0), + _M_ext_bom(__ebom), _M_int_bom(__ibom), _M_bytes(__bytes) + { init(); } + + // 21.1.2 traits typedefs + // p4 + // typedef STATE_T state_type + // requires: state_type shall meet the requirements of + // CopyConstructible types (20.1.3) + // NB: This does not preserve the actual state of the conversion + // descriptor member, but it does duplicate the encoding + // information. + encoding_state(const encoding_state& __obj) : _M_in_desc(0), _M_out_desc(0) + { construct(__obj); } + + // Need assignment operator as well. + encoding_state& + operator=(const encoding_state& __obj) + { + construct(__obj); + return *this; + } + + ~encoding_state() + { destroy(); } + + bool + good() const throw() + { + const descriptor_type __err = (iconv_t)(-1); + bool __test = _M_in_desc && _M_in_desc != __err; + __test &= _M_out_desc && _M_out_desc != __err; + return __test; + } + + int + character_ratio() const + { return _M_bytes; } + + const std::string + internal_encoding() const + { return _M_int_enc; } + + int + internal_bom() const + { return _M_int_bom; } + + const std::string + external_encoding() const + { return _M_ext_enc; } + + int + external_bom() const + { return _M_ext_bom; } + + const descriptor_type& + in_descriptor() const + { return _M_in_desc; } + + const descriptor_type& + out_descriptor() const + { return _M_out_desc; } + + protected: + void + init() + { + const descriptor_type __err = (iconv_t)(-1); + const bool __have_encodings = _M_int_enc.size() && _M_ext_enc.size(); + if (!_M_in_desc && __have_encodings) + { + _M_in_desc = iconv_open(_M_int_enc.c_str(), _M_ext_enc.c_str()); + if (_M_in_desc == __err) + std::__throw_runtime_error(__N("encoding_state::_M_init " + "creating iconv input descriptor failed")); + } + if (!_M_out_desc && __have_encodings) + { + _M_out_desc = iconv_open(_M_ext_enc.c_str(), _M_int_enc.c_str()); + if (_M_out_desc == __err) + std::__throw_runtime_error(__N("encoding_state::_M_init " + "creating iconv output descriptor failed")); + } + } + + void + construct(const encoding_state& __obj) + { + destroy(); + _M_int_enc = __obj._M_int_enc; + _M_ext_enc = __obj._M_ext_enc; + _M_ext_bom = __obj._M_ext_bom; + _M_int_bom = __obj._M_int_bom; + _M_bytes = __obj._M_bytes; + init(); + } + + void + destroy() throw() + { + const descriptor_type __err = (iconv_t)(-1); + if (_M_in_desc && _M_in_desc != __err) + { + iconv_close(_M_in_desc); + _M_in_desc = 0; + } + if (_M_out_desc && _M_out_desc != __err) + { + iconv_close(_M_out_desc); + _M_out_desc = 0; + } + } + }; + + /// encoding_char_traits + // Custom traits type with encoding_state for the state type, and the + // associated fpos for the position type, all other + // bits equivalent to the required char_traits instantiations. + template + struct encoding_char_traits : public std::char_traits<_CharT> + { + typedef encoding_state state_type; + typedef typename std::fpos pos_type; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using __gnu_cxx::encoding_state; + + /// codecvt specialization. + // This partial specialization takes advantage of iconv to provide + // code conversions between a large number of character encodings. + template + class codecvt<_InternT, _ExternT, encoding_state> + : public __codecvt_abstract_base<_InternT, _ExternT, encoding_state> + { + public: + // Types: + typedef codecvt_base::result result; + typedef _InternT intern_type; + typedef _ExternT extern_type; + typedef __gnu_cxx::encoding_state state_type; + typedef state_type::descriptor_type descriptor_type; + + // Data Members: + static locale::id id; + + explicit + codecvt(size_t __refs = 0) + : __codecvt_abstract_base(__refs) + { } + + explicit + codecvt(state_type& __enc, size_t __refs = 0) + : __codecvt_abstract_base(__refs) + { } + + protected: + virtual + ~codecvt() { } + + virtual result + do_out(state_type& __state, const intern_type* __from, + const intern_type* __from_end, const intern_type*& __from_next, + extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const; + + virtual result + do_unshift(state_type& __state, extern_type* __to, + extern_type* __to_end, extern_type*& __to_next) const; + + virtual result + do_in(state_type& __state, const extern_type* __from, + const extern_type* __from_end, const extern_type*& __from_next, + intern_type* __to, intern_type* __to_end, + intern_type*& __to_next) const; + + virtual int + do_encoding() const throw(); + + virtual bool + do_always_noconv() const throw(); + + virtual int + do_length(state_type&, const extern_type* __from, + const extern_type* __end, size_t __max) const; + + virtual int + do_max_length() const throw(); + }; + + template + locale::id + codecvt<_InternT, _ExternT, encoding_state>::id; + + // This adaptor works around the signature problems of the second + // argument to iconv(): SUSv2 and others use 'const char**', but glibc 2.2 + // uses 'char**', which matches the POSIX 1003.1-2001 standard. + // Using this adaptor, g++ will do the work for us. + template + inline size_t + __iconv_adaptor(size_t(*__func)(iconv_t, _Tp, size_t*, char**, size_t*), + iconv_t __cd, char** __inbuf, size_t* __inbytes, + char** __outbuf, size_t* __outbytes) + { return __func(__cd, (_Tp)__inbuf, __inbytes, __outbuf, __outbytes); } + + template + codecvt_base::result + codecvt<_InternT, _ExternT, encoding_state>:: + do_out(state_type& __state, const intern_type* __from, + const intern_type* __from_end, const intern_type*& __from_next, + extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const + { + result __ret = codecvt_base::error; + if (__state.good()) + { + const descriptor_type& __desc = __state.out_descriptor(); + const size_t __fmultiple = sizeof(intern_type); + size_t __fbytes = __fmultiple * (__from_end - __from); + const size_t __tmultiple = sizeof(extern_type); + size_t __tbytes = __tmultiple * (__to_end - __to); + + // Argument list for iconv specifies a byte sequence. Thus, + // all to/from arrays must be brutally casted to char*. + char* __cto = reinterpret_cast(__to); + char* __cfrom; + size_t __conv; + + // Some encodings need a byte order marker as the first item + // in the byte stream, to designate endian-ness. The default + // value for the byte order marker is NULL, so if this is + // the case, it's not necessary and we can just go on our + // merry way. + int __int_bom = __state.internal_bom(); + if (__int_bom) + { + size_t __size = __from_end - __from; + intern_type* __cfixed = static_cast + (__builtin_alloca(sizeof(intern_type) * (__size + 1))); + __cfixed[0] = static_cast(__int_bom); + char_traits::copy(__cfixed + 1, __from, __size); + __cfrom = reinterpret_cast(__cfixed); + __conv = __iconv_adaptor(iconv, __desc, &__cfrom, + &__fbytes, &__cto, &__tbytes); + } + else + { + intern_type* __cfixed = const_cast(__from); + __cfrom = reinterpret_cast(__cfixed); + __conv = __iconv_adaptor(iconv, __desc, &__cfrom, &__fbytes, + &__cto, &__tbytes); + } + + if (__conv != size_t(-1)) + { + __from_next = reinterpret_cast(__cfrom); + __to_next = reinterpret_cast(__cto); + __ret = codecvt_base::ok; + } + else + { + if (__fbytes < __fmultiple * (__from_end - __from)) + { + __from_next = reinterpret_cast(__cfrom); + __to_next = reinterpret_cast(__cto); + __ret = codecvt_base::partial; + } + else + __ret = codecvt_base::error; + } + } + return __ret; + } + + template + codecvt_base::result + codecvt<_InternT, _ExternT, encoding_state>:: + do_unshift(state_type& __state, extern_type* __to, + extern_type* __to_end, extern_type*& __to_next) const + { + result __ret = codecvt_base::error; + if (__state.good()) + { + const descriptor_type& __desc = __state.in_descriptor(); + const size_t __tmultiple = sizeof(intern_type); + size_t __tlen = __tmultiple * (__to_end - __to); + + // Argument list for iconv specifies a byte sequence. Thus, + // all to/from arrays must be brutally casted to char*. + char* __cto = reinterpret_cast(__to); + size_t __conv = __iconv_adaptor(iconv,__desc, 0, 0, + &__cto, &__tlen); + + if (__conv != size_t(-1)) + { + __to_next = reinterpret_cast(__cto); + if (__tlen == __tmultiple * (__to_end - __to)) + __ret = codecvt_base::noconv; + else if (__tlen == 0) + __ret = codecvt_base::ok; + else + __ret = codecvt_base::partial; + } + else + __ret = codecvt_base::error; + } + return __ret; + } + + template + codecvt_base::result + codecvt<_InternT, _ExternT, encoding_state>:: + do_in(state_type& __state, const extern_type* __from, + const extern_type* __from_end, const extern_type*& __from_next, + intern_type* __to, intern_type* __to_end, + intern_type*& __to_next) const + { + result __ret = codecvt_base::error; + if (__state.good()) + { + const descriptor_type& __desc = __state.in_descriptor(); + const size_t __fmultiple = sizeof(extern_type); + size_t __flen = __fmultiple * (__from_end - __from); + const size_t __tmultiple = sizeof(intern_type); + size_t __tlen = __tmultiple * (__to_end - __to); + + // Argument list for iconv specifies a byte sequence. Thus, + // all to/from arrays must be brutally casted to char*. + char* __cto = reinterpret_cast(__to); + char* __cfrom; + size_t __conv; + + // Some encodings need a byte order marker as the first item + // in the byte stream, to designate endian-ness. The default + // value for the byte order marker is NULL, so if this is + // the case, it's not necessary and we can just go on our + // merry way. + int __ext_bom = __state.external_bom(); + if (__ext_bom) + { + size_t __size = __from_end - __from; + extern_type* __cfixed = static_cast + (__builtin_alloca(sizeof(extern_type) * (__size + 1))); + __cfixed[0] = static_cast(__ext_bom); + char_traits::copy(__cfixed + 1, __from, __size); + __cfrom = reinterpret_cast(__cfixed); + __conv = __iconv_adaptor(iconv, __desc, &__cfrom, + &__flen, &__cto, &__tlen); + } + else + { + extern_type* __cfixed = const_cast(__from); + __cfrom = reinterpret_cast(__cfixed); + __conv = __iconv_adaptor(iconv, __desc, &__cfrom, + &__flen, &__cto, &__tlen); + } + + + if (__conv != size_t(-1)) + { + __from_next = reinterpret_cast(__cfrom); + __to_next = reinterpret_cast(__cto); + __ret = codecvt_base::ok; + } + else + { + if (__flen < static_cast(__from_end - __from)) + { + __from_next = reinterpret_cast(__cfrom); + __to_next = reinterpret_cast(__cto); + __ret = codecvt_base::partial; + } + else + __ret = codecvt_base::error; + } + } + return __ret; + } + + template + int + codecvt<_InternT, _ExternT, encoding_state>:: + do_encoding() const throw() + { + int __ret = 0; + if (sizeof(_ExternT) <= sizeof(_InternT)) + __ret = sizeof(_InternT) / sizeof(_ExternT); + return __ret; + } + + template + bool + codecvt<_InternT, _ExternT, encoding_state>:: + do_always_noconv() const throw() + { return false; } + + template + int + codecvt<_InternT, _ExternT, encoding_state>:: + do_length(state_type&, const extern_type* __from, + const extern_type* __end, size_t __max) const + { return std::min(__max, static_cast(__end - __from)); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 74. Garbled text for codecvt::do_max_length + template + int + codecvt<_InternT, _ExternT, encoding_state>:: + do_max_length() const throw() + { return 1; } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/concurrence.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/concurrence.h new file mode 100644 index 0000000..b8b9589 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/concurrence.h @@ -0,0 +1,318 @@ +// Support for concurrent programing -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/concurrence.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _CONCURRENCE_H +#define _CONCURRENCE_H 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Available locking policies: + // _S_single single-threaded code that doesn't need to be locked. + // _S_mutex multi-threaded code that requires additional support + // from gthr.h or abstraction layers in concurrence.h. + // _S_atomic multi-threaded code using atomic operations. + enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; + + // Compile time constant that indicates prefered locking policy in + // the current configuration. + static const _Lock_policy __default_lock_policy = +#ifdef __GTHREADS +#if (defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) \ + && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)) + _S_atomic; +#else + _S_mutex; +#endif +#else + _S_single; +#endif + + // NB: As this is used in libsupc++, need to only depend on + // exception. No stdexception classes, no use of std::string. + class __concurrence_lock_error : public std::exception + { + public: + virtual char const* + what() const throw() + { return "__gnu_cxx::__concurrence_lock_error"; } + }; + + class __concurrence_unlock_error : public std::exception + { + public: + virtual char const* + what() const throw() + { return "__gnu_cxx::__concurrence_unlock_error"; } + }; + + class __concurrence_broadcast_error : public std::exception + { + public: + virtual char const* + what() const throw() + { return "__gnu_cxx::__concurrence_broadcast_error"; } + }; + + class __concurrence_wait_error : public std::exception + { + public: + virtual char const* + what() const throw() + { return "__gnu_cxx::__concurrence_wait_error"; } + }; + + // Substitute for concurrence_error object in the case of -fno-exceptions. + inline void + __throw_concurrence_lock_error() + { _GLIBCXX_THROW_OR_ABORT(__concurrence_lock_error()); } + + inline void + __throw_concurrence_unlock_error() + { _GLIBCXX_THROW_OR_ABORT(__concurrence_unlock_error()); } + +#ifdef __GTHREAD_HAS_COND + inline void + __throw_concurrence_broadcast_error() + { _GLIBCXX_THROW_OR_ABORT(__concurrence_broadcast_error()); } + + inline void + __throw_concurrence_wait_error() + { _GLIBCXX_THROW_OR_ABORT(__concurrence_wait_error()); } +#endif + + class __mutex + { + private: +#if __GTHREADS && defined __GTHREAD_MUTEX_INIT + __gthread_mutex_t _M_mutex = __GTHREAD_MUTEX_INIT; +#else + __gthread_mutex_t _M_mutex; +#endif + + __mutex(const __mutex&); + __mutex& operator=(const __mutex&); + + public: + __mutex() + { +#if __GTHREADS && ! defined __GTHREAD_MUTEX_INIT + if (__gthread_active_p()) + __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex); +#endif + } + +#if __GTHREADS && ! defined __GTHREAD_MUTEX_INIT + ~__mutex() + { + if (__gthread_active_p()) + __gthread_mutex_destroy(&_M_mutex); + } +#endif + + void lock() + { +#if __GTHREADS + if (__gthread_active_p()) + { + if (__gthread_mutex_lock(&_M_mutex) != 0) + __throw_concurrence_lock_error(); + } +#endif + } + + void unlock() + { +#if __GTHREADS + if (__gthread_active_p()) + { + if (__gthread_mutex_unlock(&_M_mutex) != 0) + __throw_concurrence_unlock_error(); + } +#endif + } + + __gthread_mutex_t* gthread_mutex(void) + { return &_M_mutex; } + }; + + class __recursive_mutex + { + private: +#if __GTHREADS && defined __GTHREAD_RECURSIVE_MUTEX_INIT + __gthread_recursive_mutex_t _M_mutex = __GTHREAD_RECURSIVE_MUTEX_INIT; +#else + __gthread_recursive_mutex_t _M_mutex; +#endif + + __recursive_mutex(const __recursive_mutex&); + __recursive_mutex& operator=(const __recursive_mutex&); + + public: + __recursive_mutex() + { +#if __GTHREADS && ! defined __GTHREAD_RECURSIVE_MUTEX_INIT + if (__gthread_active_p()) + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex); +#endif + } + +#if __GTHREADS && ! defined __GTHREAD_RECURSIVE_MUTEX_INIT + ~__recursive_mutex() + { + if (__gthread_active_p()) + __gthread_recursive_mutex_destroy(&_M_mutex); + } +#endif + + void lock() + { +#if __GTHREADS + if (__gthread_active_p()) + { + if (__gthread_recursive_mutex_lock(&_M_mutex) != 0) + __throw_concurrence_lock_error(); + } +#endif + } + + void unlock() + { +#if __GTHREADS + if (__gthread_active_p()) + { + if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0) + __throw_concurrence_unlock_error(); + } +#endif + } + + __gthread_recursive_mutex_t* gthread_recursive_mutex(void) + { return &_M_mutex; } + }; + + /// Scoped lock idiom. + // Acquire the mutex here with a constructor call, then release with + // the destructor call in accordance with RAII style. + class __scoped_lock + { + public: + typedef __mutex __mutex_type; + + private: + __mutex_type& _M_device; + + __scoped_lock(const __scoped_lock&); + __scoped_lock& operator=(const __scoped_lock&); + + public: + explicit __scoped_lock(__mutex_type& __name) : _M_device(__name) + { _M_device.lock(); } + + ~__scoped_lock() throw() + { _M_device.unlock(); } + }; + +#ifdef __GTHREAD_HAS_COND + class __cond + { + private: +#if __GTHREADS && defined __GTHREAD_COND_INIT + __gthread_cond_t _M_cond = __GTHREAD_COND_INIT; +#else + __gthread_cond_t _M_cond; +#endif + + __cond(const __cond&); + __cond& operator=(const __cond&); + + public: + __cond() + { +#if __GTHREADS && ! defined __GTHREAD_COND_INIT + if (__gthread_active_p()) + __GTHREAD_COND_INIT_FUNCTION(&_M_cond); +#endif + } + +#if __GTHREADS && ! defined __GTHREAD_COND_INIT + ~__cond() + { + if (__gthread_active_p()) + __gthread_cond_destroy(&_M_cond); + } +#endif + + void broadcast() + { +#if __GTHREADS + if (__gthread_active_p()) + { + if (__gthread_cond_broadcast(&_M_cond) != 0) + __throw_concurrence_broadcast_error(); + } +#endif + } + + void wait(__mutex *mutex) + { +#if __GTHREADS + { + if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0) + __throw_concurrence_wait_error(); + } +#endif + } + + void wait_recursive(__recursive_mutex *mutex) + { +#if __GTHREADS + { + if (__gthread_cond_wait_recursive(&_M_cond, + mutex->gthread_recursive_mutex()) + != 0) + __throw_concurrence_wait_error(); + } +#endif + } + }; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/debug_allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/debug_allocator.h new file mode 100644 index 0000000..8190d2a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/debug_allocator.h @@ -0,0 +1,126 @@ +// Allocators -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1996-1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file ext/debug_allocator.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _DEBUG_ALLOCATOR_H +#define _DEBUG_ALLOCATOR_H 1 + +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::size_t; + + /** + * @brief A meta-allocator with debugging bits, as per [20.4]. + * @ingroup allocators + * + * This is precisely the allocator defined in the C++ Standard. + * - all allocation calls operator new + * - all deallocation calls operator delete + */ + template + class debug_allocator + { + public: + typedef typename _Alloc::size_type size_type; + typedef typename _Alloc::difference_type difference_type; + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + typedef typename _Alloc::value_type value_type; + + private: + // _M_extra is the number of objects that correspond to the + // extra space where debug information is stored. + size_type _M_extra; + + _Alloc _M_allocator; + + public: + debug_allocator() + { + const size_t __obj_size = sizeof(value_type); + _M_extra = (sizeof(size_type) + __obj_size - 1) / __obj_size; + } + + pointer + allocate(size_type __n) + { + pointer __res = _M_allocator.allocate(__n + _M_extra); + size_type* __ps = reinterpret_cast(__res); + *__ps = __n; + return __res + _M_extra; + } + + pointer + allocate(size_type __n, const void* __hint) + { + pointer __res = _M_allocator.allocate(__n + _M_extra, __hint); + size_type* __ps = reinterpret_cast(__res); + *__ps = __n; + return __res + _M_extra; + } + + void + deallocate(pointer __p, size_type __n) + { + if (__p) + { + pointer __real_p = __p - _M_extra; + if (*reinterpret_cast(__real_p) != __n) + { + throw std::runtime_error("debug_allocator::deallocate" + " wrong size"); + } + _M_allocator.deallocate(__real_p, __n + _M_extra); + } + else + throw std::runtime_error("debug_allocator::deallocate null pointer"); + } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/enc_filebuf.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/enc_filebuf.h new file mode 100644 index 0000000..8e1cddc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/enc_filebuf.h @@ -0,0 +1,65 @@ +// filebuf with encoding state type -*- C++ -*- + +// Copyright (C) 2002-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/enc_filebuf.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _EXT_ENC_FILEBUF_H +#define _EXT_ENC_FILEBUF_H 1 + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// class enc_filebuf. + template + class enc_filebuf + : public std::basic_filebuf<_CharT, encoding_char_traits<_CharT> > + { + public: + typedef encoding_char_traits<_CharT> traits_type; + typedef typename traits_type::state_type state_type; + typedef typename traits_type::pos_type pos_type; + + enc_filebuf(state_type& __state) + : std::basic_filebuf<_CharT, encoding_char_traits<_CharT> >() + { this->_M_state_beg = __state; } + + private: + // concept requirements: + // Set state type to something useful. + // Something more than copyconstructible is needed here, so + // require default and copy constructible + assignment operator. + __glibcxx_class_requires(state_type, _SGIAssignableConcept) + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/extptr_allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/extptr_allocator.h new file mode 100644 index 0000000..5638235 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/extptr_allocator.h @@ -0,0 +1,197 @@ +// -*- C++ -*- + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** + * @file ext/extptr_allocator.h + * This file is a GNU extension to the Standard C++ Library. + * + * @author Bob Walters + * + * An example allocator which uses an alternative pointer type from + * bits/pointer.h. Supports test cases which confirm container support + * for alternative pointers. + */ + +#ifndef _EXTPTR_ALLOCATOR_H +#define _EXTPTR_ALLOCATOR_H 1 + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @brief An example allocator which uses a non-standard pointer type. + * @ingroup allocators + * + * This allocator specifies that containers use a 'relative pointer' as it's + * pointer type. (See ext/pointer.h) Memory allocation in this example + * is still performed using std::allocator. + */ + template + class _ExtPtr_allocator + { + public: + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + + // Note the non-standard pointer types. + typedef _Pointer_adapter<_Relative_pointer_impl<_Tp> > pointer; + typedef _Pointer_adapter<_Relative_pointer_impl > + const_pointer; + + typedef _Tp& reference; + typedef const _Tp& const_reference; + typedef _Tp value_type; + + template + struct rebind + { typedef _ExtPtr_allocator<_Up> other; }; + + _ExtPtr_allocator() _GLIBCXX_USE_NOEXCEPT + : _M_real_alloc() { } + + _ExtPtr_allocator(const _ExtPtr_allocator& __rarg) _GLIBCXX_USE_NOEXCEPT + : _M_real_alloc(__rarg._M_real_alloc) { } + + template + _ExtPtr_allocator(const _ExtPtr_allocator<_Up>& __rarg) + _GLIBCXX_USE_NOEXCEPT + : _M_real_alloc(__rarg._M_getUnderlyingImp()) { } + + ~_ExtPtr_allocator() _GLIBCXX_USE_NOEXCEPT + { } + + pointer address(reference __x) const _GLIBCXX_NOEXCEPT + { return std::__addressof(__x); } + + const_pointer address(const_reference __x) const _GLIBCXX_NOEXCEPT + { return std::__addressof(__x); } + + pointer allocate(size_type __n, void* __hint = 0) + { return _M_real_alloc.allocate(__n,__hint); } + + void deallocate(pointer __p, size_type __n) + { _M_real_alloc.deallocate(__p.get(), __n); } + + size_type max_size() const _GLIBCXX_USE_NOEXCEPT + { return __numeric_traits::__max / sizeof(_Tp); } + +#if __cplusplus >= 201103L + template + void + construct(_Up* __p, _Args&&... __args) + { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } + + template + void + construct(pointer __p, _Args&&... __args) + { construct(__p.get(), std::forward<_Args>(__args)...); } + + template + void + destroy(_Up* __p) + { __p->~_Up(); } + + void destroy(pointer __p) + { destroy(__p.get()); } + +#else + + void construct(pointer __p, const _Tp& __val) + { ::new(__p.get()) _Tp(__val); } + + void destroy(pointer __p) + { __p->~_Tp(); } +#endif + + template + inline bool + operator==(const _ExtPtr_allocator<_Up>& __rarg) + { return _M_real_alloc == __rarg._M_getUnderlyingImp(); } + + inline bool + operator==(const _ExtPtr_allocator& __rarg) + { return _M_real_alloc == __rarg._M_real_alloc; } + + template + inline bool + operator!=(const _ExtPtr_allocator<_Up>& __rarg) + { return _M_real_alloc != __rarg._M_getUnderlyingImp(); } + + inline bool + operator!=(const _ExtPtr_allocator& __rarg) + { return _M_real_alloc != __rarg._M_real_alloc; } + + template + inline friend void + swap(_ExtPtr_allocator<_Up>&, _ExtPtr_allocator<_Up>&); + + // A method specific to this implementation. + const std::allocator<_Tp>& + _M_getUnderlyingImp() const + { return _M_real_alloc; } + + private: + std::allocator<_Tp> _M_real_alloc; + }; + + // _ExtPtr_allocator specialization. + template<> + class _ExtPtr_allocator + { + public: + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef void value_type; + + // Note the non-standard pointer types + typedef _Pointer_adapter<_Relative_pointer_impl > pointer; + typedef _Pointer_adapter<_Relative_pointer_impl > + const_pointer; + + template + struct rebind + { typedef _ExtPtr_allocator<_Up> other; }; + + private: + std::allocator _M_real_alloc; + }; + + template + inline void + swap(_ExtPtr_allocator<_Tp>& __larg, _ExtPtr_allocator<_Tp>& __rarg) + { + std::allocator<_Tp> __tmp( __rarg._M_real_alloc ); + __rarg._M_real_alloc = __larg._M_real_alloc; + __larg._M_real_alloc = __tmp; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _EXTPTR_ALLOCATOR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/functional b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/functional new file mode 100644 index 0000000..c9c8034 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/functional @@ -0,0 +1,430 @@ +// Functional extensions -*- C++ -*- + +// Copyright (C) 2002-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file ext/functional + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _EXT_FUNCTIONAL +#define _EXT_FUNCTIONAL 1 + +#pragma GCC system_header + +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::size_t; + using std::unary_function; + using std::binary_function; + using std::mem_fun1_t; + using std::const_mem_fun1_t; + using std::mem_fun1_ref_t; + using std::const_mem_fun1_ref_t; + + /** The @c identity_element functions are not part of the C++ + * standard; SGI provided them as an extension. Its argument is an + * operation, and its return value is the identity element for that + * operation. It is overloaded for addition and multiplication, + * and you can overload it for your own nefarious operations. + * + * @addtogroup SGIextensions + * @{ + */ + /// An \link SGIextensions SGI extension \endlink. + template + inline _Tp + identity_element(std::plus<_Tp>) + { return _Tp(0); } + + /// An \link SGIextensions SGI extension \endlink. + template + inline _Tp + identity_element(std::multiplies<_Tp>) + { return _Tp(1); } + /** @} */ + + /** As an extension to the binders, SGI provided composition functors and + * wrapper functions to aid in their creation. The @c unary_compose + * functor is constructed from two functions/functors, @c f and @c g. + * Calling @c operator() with a single argument @c x returns @c f(g(x)). + * The function @c compose1 takes the two functions and constructs a + * @c unary_compose variable for you. + * + * @c binary_compose is constructed from three functors, @c f, @c g1, + * and @c g2. Its @c operator() returns @c f(g1(x),g2(x)). The function + * compose2 takes f, g1, and g2, and constructs the @c binary_compose + * instance for you. For example, if @c f returns an int, then + * \code + * int answer = (compose2(f,g1,g2))(x); + * \endcode + * is equivalent to + * \code + * int temp1 = g1(x); + * int temp2 = g2(x); + * int answer = f(temp1,temp2); + * \endcode + * But the first form is more compact, and can be passed around as a + * functor to other algorithms. + * + * @addtogroup SGIextensions + * @{ + */ + /// An \link SGIextensions SGI extension \endlink. + template + class unary_compose + : public unary_function + { + protected: + _Operation1 _M_fn1; + _Operation2 _M_fn2; + + public: + unary_compose(const _Operation1& __x, const _Operation2& __y) + : _M_fn1(__x), _M_fn2(__y) {} + + typename _Operation1::result_type + operator()(const typename _Operation2::argument_type& __x) const + { return _M_fn1(_M_fn2(__x)); } + }; + + /// An \link SGIextensions SGI extension \endlink. + template + inline unary_compose<_Operation1, _Operation2> + compose1(const _Operation1& __fn1, const _Operation2& __fn2) + { return unary_compose<_Operation1,_Operation2>(__fn1, __fn2); } + + /// An \link SGIextensions SGI extension \endlink. + template + class binary_compose + : public unary_function + { + protected: + _Operation1 _M_fn1; + _Operation2 _M_fn2; + _Operation3 _M_fn3; + + public: + binary_compose(const _Operation1& __x, const _Operation2& __y, + const _Operation3& __z) + : _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { } + + typename _Operation1::result_type + operator()(const typename _Operation2::argument_type& __x) const + { return _M_fn1(_M_fn2(__x), _M_fn3(__x)); } + }; + + /// An \link SGIextensions SGI extension \endlink. + template + inline binary_compose<_Operation1, _Operation2, _Operation3> + compose2(const _Operation1& __fn1, const _Operation2& __fn2, + const _Operation3& __fn3) + { return binary_compose<_Operation1, _Operation2, _Operation3> + (__fn1, __fn2, __fn3); } + /** @} */ + + /** As an extension, SGI provided a functor called @c identity. When a + * functor is required but no operations are desired, this can be used as a + * pass-through. Its @c operator() returns its argument unchanged. + * + * @addtogroup SGIextensions + */ + template + struct identity + : public std::_Identity<_Tp> {}; + + /** @c select1st and @c select2nd are extensions provided by SGI. Their + * @c operator()s + * take a @c std::pair as an argument, and return either the first member + * or the second member, respectively. They can be used (especially with + * the composition functors) to @a strip data from a sequence before + * performing the remainder of an algorithm. + * + * @addtogroup SGIextensions + * @{ + */ + /// An \link SGIextensions SGI extension \endlink. + template + struct select1st + : public std::_Select1st<_Pair> {}; + + /// An \link SGIextensions SGI extension \endlink. + template + struct select2nd + : public std::_Select2nd<_Pair> {}; + + /** @} */ + + // extension documented next + template + struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1> + { + _Arg1 + operator()(const _Arg1& __x, const _Arg2&) const + { return __x; } + }; + + template + struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2> + { + _Arg2 + operator()(const _Arg1&, const _Arg2& __y) const + { return __y; } + }; + + /** The @c operator() of the @c project1st functor takes two arbitrary + * arguments and returns the first one, while @c project2nd returns the + * second one. They are extensions provided by SGI. + * + * @addtogroup SGIextensions + * @{ + */ + + /// An \link SGIextensions SGI extension \endlink. + template + struct project1st : public _Project1st<_Arg1, _Arg2> {}; + + /// An \link SGIextensions SGI extension \endlink. + template + struct project2nd : public _Project2nd<_Arg1, _Arg2> {}; + /** @} */ + + // extension documented next + template + struct _Constant_void_fun + { + typedef _Result result_type; + result_type _M_val; + + _Constant_void_fun(const result_type& __v) : _M_val(__v) {} + + const result_type& + operator()() const + { return _M_val; } + }; + + template + struct _Constant_unary_fun + { + typedef _Argument argument_type; + typedef _Result result_type; + result_type _M_val; + + _Constant_unary_fun(const result_type& __v) : _M_val(__v) {} + + const result_type& + operator()(const _Argument&) const + { return _M_val; } + }; + + template + struct _Constant_binary_fun + { + typedef _Arg1 first_argument_type; + typedef _Arg2 second_argument_type; + typedef _Result result_type; + _Result _M_val; + + _Constant_binary_fun(const _Result& __v) : _M_val(__v) {} + + const result_type& + operator()(const _Arg1&, const _Arg2&) const + { return _M_val; } + }; + + /** These three functors are each constructed from a single arbitrary + * variable/value. Later, their @c operator()s completely ignore any + * arguments passed, and return the stored value. + * - @c constant_void_fun's @c operator() takes no arguments + * - @c constant_unary_fun's @c operator() takes one argument (ignored) + * - @c constant_binary_fun's @c operator() takes two arguments (ignored) + * + * The helper creator functions @c constant0, @c constant1, and + * @c constant2 each take a @a result argument and construct variables of + * the appropriate functor type. + * + * @addtogroup SGIextensions + * @{ + */ + /// An \link SGIextensions SGI extension \endlink. + template + struct constant_void_fun + : public _Constant_void_fun<_Result> + { + constant_void_fun(const _Result& __v) + : _Constant_void_fun<_Result>(__v) {} + }; + + /// An \link SGIextensions SGI extension \endlink. + template + struct constant_unary_fun : public _Constant_unary_fun<_Result, _Argument> + { + constant_unary_fun(const _Result& __v) + : _Constant_unary_fun<_Result, _Argument>(__v) {} + }; + + /// An \link SGIextensions SGI extension \endlink. + template + struct constant_binary_fun + : public _Constant_binary_fun<_Result, _Arg1, _Arg2> + { + constant_binary_fun(const _Result& __v) + : _Constant_binary_fun<_Result, _Arg1, _Arg2>(__v) {} + }; + + /// An \link SGIextensions SGI extension \endlink. + template + inline constant_void_fun<_Result> + constant0(const _Result& __val) + { return constant_void_fun<_Result>(__val); } + + /// An \link SGIextensions SGI extension \endlink. + template + inline constant_unary_fun<_Result, _Result> + constant1(const _Result& __val) + { return constant_unary_fun<_Result, _Result>(__val); } + + /// An \link SGIextensions SGI extension \endlink. + template + inline constant_binary_fun<_Result,_Result,_Result> + constant2(const _Result& __val) + { return constant_binary_fun<_Result, _Result, _Result>(__val); } + /** @} */ + + /** The @c subtractive_rng class is documented on + * SGI's site. + * Note that this code assumes that @c int is 32 bits. + * + * @ingroup SGIextensions + */ + class subtractive_rng + : public unary_function + { + private: + unsigned int _M_table[55]; + size_t _M_index1; + size_t _M_index2; + + public: + /// Returns a number less than the argument. + unsigned int + operator()(unsigned int __limit) + { + _M_index1 = (_M_index1 + 1) % 55; + _M_index2 = (_M_index2 + 1) % 55; + _M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2]; + return _M_table[_M_index1] % __limit; + } + + void + _M_initialize(unsigned int __seed) + { + unsigned int __k = 1; + _M_table[54] = __seed; + size_t __i; + for (__i = 0; __i < 54; __i++) + { + size_t __ii = (21 * (__i + 1) % 55) - 1; + _M_table[__ii] = __k; + __k = __seed - __k; + __seed = _M_table[__ii]; + } + for (int __loop = 0; __loop < 4; __loop++) + { + for (__i = 0; __i < 55; __i++) + _M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55]; + } + _M_index1 = 0; + _M_index2 = 31; + } + + /// Ctor allowing you to initialize the seed. + subtractive_rng(unsigned int __seed) + { _M_initialize(__seed); } + + /// Default ctor; initializes its state with some number you don't see. + subtractive_rng() + { _M_initialize(161803398u); } + }; + + // Mem_fun adaptor helper functions mem_fun1 and mem_fun1_ref, + // provided for backward compatibility, they are no longer part of + // the C++ standard. + + template + inline mem_fun1_t<_Ret, _Tp, _Arg> + mem_fun1(_Ret (_Tp::*__f)(_Arg)) + { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } + + template + inline const_mem_fun1_t<_Ret, _Tp, _Arg> + mem_fun1(_Ret (_Tp::*__f)(_Arg) const) + { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } + + template + inline mem_fun1_ref_t<_Ret, _Tp, _Arg> + mem_fun1_ref(_Ret (_Tp::*__f)(_Arg)) + { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } + + template + inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> + mem_fun1_ref(_Ret (_Tp::*__f)(_Arg) const) + { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/hash_map b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/hash_map new file mode 100644 index 0000000..a22871a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/hash_map @@ -0,0 +1,599 @@ +// Hashing map implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +/** @file backward/hash_map + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASH_MAP +#define _BACKWARD_HASH_MAP 1 + +#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH +#include "backward_warning.h" +#endif + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::equal_to; + using std::allocator; + using std::pair; + using std::_Select1st; + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> > + class hash_map + { + private: + typedef hashtable,_Key, _HashFn, + _Select1st >, + _EqualKey, _Alloc> _Ht; + + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef _Tp data_type; + typedef _Tp mapped_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Ht::pointer pointer; + typedef typename _Ht::const_pointer const_pointer; + typedef typename _Ht::reference reference; + typedef typename _Ht::const_reference const_reference; + + typedef typename _Ht::iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_map() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_map(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_map(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_map(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_map(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_unique(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_map& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator== (const hash_map<_K1, _T1, _HF, _EqK, _Al>&, + const hash_map<_K1, _T1, _HF, _EqK, _Al>&); + + iterator + begin() + { return _M_ht.begin(); } + + iterator + end() + { return _M_ht.end(); } + + const_iterator + begin() const + { return _M_ht.begin(); } + + const_iterator + end() const + { return _M_ht.end(); } + + pair + insert(const value_type& __obj) + { return _M_ht.insert_unique(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_unique(__f, __l); } + + pair + insert_noresize(const value_type& __obj) + { return _M_ht.insert_unique_noresize(__obj); } + + iterator + find(const key_type& __key) + { return _M_ht.find(__key); } + + const_iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + _Tp& + operator[](const key_type& __key) + { return _M_ht.find_or_insert(value_type(__key, _Tp())).second; } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) + { return _M_ht.equal_range(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + {return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { return __hm1._M_ht == __hm2._M_ht; } + + template + inline bool + operator!=(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { return !(__hm1 == __hm2); } + + template + inline void + swap(hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { __hm1.swap(__hm2); } + + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Key>, + class _Alloc = allocator<_Tp> > + class hash_multimap + { + // concept requirements + __glibcxx_class_requires(_Key, _SGIAssignableConcept) + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFn, size_t, _Key, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Key, _Key, _BinaryPredicateConcept) + + private: + typedef hashtable, _Key, _HashFn, + _Select1st >, _EqualKey, _Alloc> + _Ht; + + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef _Tp data_type; + typedef _Tp mapped_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Ht::pointer pointer; + typedef typename _Ht::const_pointer const_pointer; + typedef typename _Ht::reference reference; + typedef typename _Ht::const_reference const_reference; + + typedef typename _Ht::iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_multimap() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_multimap(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_multimap(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_multimap(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_equal(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_multimap& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator==(const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&, + const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&); + + iterator + begin() + { return _M_ht.begin(); } + + iterator + end() + { return _M_ht.end(); } + + const_iterator + begin() const + { return _M_ht.begin(); } + + const_iterator + end() const + { return _M_ht.end(); } + + iterator + insert(const value_type& __obj) + { return _M_ht.insert_equal(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_equal(__f,__l); } + + iterator + insert_noresize(const value_type& __obj) + { return _M_ht.insert_equal_noresize(__obj); } + + iterator + find(const key_type& __key) + { return _M_ht.find(__key); } + + const_iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) + { return _M_ht.equal_range(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + { return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, + const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) + { return __hm1._M_ht == __hm2._M_ht; } + + template + inline bool + operator!=(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, + const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) + { return !(__hm1 == __hm2); } + + template + inline void + swap(hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { __hm1.swap(__hm2); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Specialization of insert_iterator so that it will work for hash_map + // and hash_multimap. + template + class insert_iterator<__gnu_cxx::hash_map<_Key, _Tp, _HashFn, + _EqKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> + _Container; + _Container* container; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + + template + class insert_iterator<__gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, + _EqKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> + _Container; + _Container* container; + typename _Container::iterator iter; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/hash_set b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/hash_set new file mode 100644 index 0000000..e38e847 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/hash_set @@ -0,0 +1,567 @@ +// Hashing set implementation -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +/** @file backward/hash_set + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASH_SET +#define _BACKWARD_HASH_SET 1 + +#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH +#include "backward_warning.h" +#endif + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::equal_to; + using std::allocator; + using std::pair; + using std::_Identity; + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Value>, + class _Alloc = allocator<_Value> > + class hash_set + { + // concept requirements + __glibcxx_class_requires(_Value, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) + + private: + typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, + _EqualKey, _Alloc> _Ht; + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + + typedef typename _Ht::const_iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_set() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_set(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_set(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_set(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_unique(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_set& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator==(const hash_set<_Val, _HF, _EqK, _Al>&, + const hash_set<_Val, _HF, _EqK, _Al>&); + + iterator + begin() const + { return _M_ht.begin(); } + + iterator + end() const + { return _M_ht.end(); } + + pair + insert(const value_type& __obj) + { + pair __p = _M_ht.insert_unique(__obj); + return pair(__p.first, __p.second); + } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_unique(__f, __l); } + + pair + insert_noresize(const value_type& __obj) + { + pair __p + = _M_ht.insert_unique_noresize(__obj); + return pair(__p.first, __p.second); + } + + iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + {return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return __hs1._M_ht == __hs2._M_ht; } + + template + inline bool + operator!=(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return !(__hs1 == __hs2); } + + template + inline void + swap(hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { __hs1.swap(__hs2); } + + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Value>, + class _Alloc = allocator<_Value> > + class hash_multiset + { + // concept requirements + __glibcxx_class_requires(_Value, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) + + private: + typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, + _EqualKey, _Alloc> _Ht; + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + + typedef typename _Ht::const_iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_multiset() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_multiset(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_multiset(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_multiset(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_equal(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_multiset& hs) + { _M_ht.swap(hs._M_ht); } + + template + friend bool + operator==(const hash_multiset<_Val, _HF, _EqK, _Al>&, + const hash_multiset<_Val, _HF, _EqK, _Al>&); + + iterator + begin() const + { return _M_ht.begin(); } + + iterator + end() const + { return _M_ht.end(); } + + iterator + insert(const value_type& __obj) + { return _M_ht.insert_equal(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_equal(__f,__l); } + + iterator + insert_noresize(const value_type& __obj) + { return _M_ht.insert_equal_noresize(__obj); } + + iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + { return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return __hs1._M_ht == __hs2._M_ht; } + + template + inline bool + operator!=(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return !(__hs1 == __hs2); } + + template + inline void + swap(hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { __hs1.swap(__hs2); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Specialization of insert_iterator so that it will work for hash_set + // and hash_multiset. + template + class insert_iterator<__gnu_cxx::hash_set<_Value, _HashFcn, + _EqualKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_set<_Value, _HashFcn, _EqualKey, _Alloc> + _Container; + _Container* container; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + + template + class insert_iterator<__gnu_cxx::hash_multiset<_Value, _HashFcn, + _EqualKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> + _Container; + _Container* container; + typename _Container::iterator iter; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) { return *this; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/iterator b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/iterator new file mode 100644 index 0000000..aeb85aa --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/iterator @@ -0,0 +1,116 @@ +// HP/SGI iterator extensions -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file ext/iterator + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _EXT_ITERATOR +#define _EXT_ITERATOR 1 + +#pragma GCC system_header + +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // There are two signatures for distance. In addition to the one + // taking two iterators and returning a result, there is another + // taking two iterators and a reference-to-result variable, and + // returning nothing. The latter seems to be an SGI extension. + // -- pedwards + template + inline void + __distance(_InputIterator __first, _InputIterator __last, + _Distance& __n, std::input_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + while (__first != __last) + { + ++__first; + ++__n; + } + } + + template + inline void + __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Distance& __n, std::random_access_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __n += __last - __first; + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline void + distance(_InputIterator __first, _InputIterator __last, + _Distance& __n) + { + // concept requirements -- taken care of in __distance + __distance(__first, __last, __n, std::__iterator_category(__first)); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/malloc_allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/malloc_allocator.h new file mode 100644 index 0000000..9f0934e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/malloc_allocator.h @@ -0,0 +1,152 @@ +// Allocator that wraps "C" malloc -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/malloc_allocator.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _MALLOC_ALLOCATOR_H +#define _MALLOC_ALLOCATOR_H 1 + +#include +#include +#include +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::size_t; + using std::ptrdiff_t; + + /** + * @brief An allocator that uses malloc. + * @ingroup allocators + * + * This is precisely the allocator defined in the C++ Standard. + * - all allocation calls malloc + * - all deallocation calls free + */ + template + class malloc_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 malloc_allocator<_Tp1> other; }; + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2103. propagate_on_container_move_assignment + typedef std::true_type propagate_on_container_move_assignment; +#endif + + malloc_allocator() _GLIBCXX_USE_NOEXCEPT { } + + malloc_allocator(const malloc_allocator&) _GLIBCXX_USE_NOEXCEPT { } + + template + malloc_allocator(const malloc_allocator<_Tp1>&) + _GLIBCXX_USE_NOEXCEPT { } + + ~malloc_allocator() _GLIBCXX_USE_NOEXCEPT { } + + pointer + address(reference __x) const _GLIBCXX_NOEXCEPT + { return std::__addressof(__x); } + + const_pointer + address(const_reference __x) const _GLIBCXX_NOEXCEPT + { return std::__addressof(__x); } + + // NB: __n is permitted to be 0. The C++ standard says nothing + // about what the return value is when __n == 0. + pointer + allocate(size_type __n, const void* = 0) + { + if (__n > this->max_size()) + std::__throw_bad_alloc(); + + pointer __ret = static_cast<_Tp*>(std::malloc(__n * sizeof(_Tp))); + if (!__ret) + std::__throw_bad_alloc(); + return __ret; + } + + // __p is not permitted to be a null pointer. + void + deallocate(pointer __p, size_type) + { std::free(static_cast(__p)); } + + size_type + max_size() const _GLIBCXX_USE_NOEXCEPT + { return size_t(-1) / sizeof(_Tp); } + +#if __cplusplus >= 201103L + template + void + construct(_Up* __p, _Args&&... __args) + { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } + + template + void + destroy(_Up* __p) { __p->~_Up(); } +#else + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 402. wrong new expression in [some_] allocator::construct + void + construct(pointer __p, const _Tp& __val) + { ::new((void *)__p) value_type(__val); } + + void + destroy(pointer __p) { __p->~_Tp(); } +#endif + }; + + template + inline bool + operator==(const malloc_allocator<_Tp>&, const malloc_allocator<_Tp>&) + { return true; } + + template + inline bool + operator!=(const malloc_allocator<_Tp>&, const malloc_allocator<_Tp>&) + { return false; } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/memory b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/memory new file mode 100644 index 0000000..b19b0d7 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/memory @@ -0,0 +1,197 @@ +// Memory extensions -*- C++ -*- + +// Copyright (C) 2002-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file ext/memory + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _EXT_MEMORY +#define _EXT_MEMORY 1 + +#pragma GCC system_header + +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::ptrdiff_t; + using std::pair; + using std::__iterator_category; + using std::_Temporary_buffer; + + template + pair<_InputIter, _ForwardIter> + __uninitialized_copy_n(_InputIter __first, _Size __count, + _ForwardIter __result, std::input_iterator_tag) + { + _ForwardIter __cur = __result; + __try + { + for (; __count > 0 ; --__count, ++__first, ++__cur) + std::_Construct(&*__cur, *__first); + return pair<_InputIter, _ForwardIter>(__first, __cur); + } + __catch(...) + { + std::_Destroy(__result, __cur); + __throw_exception_again; + } + } + + template + inline pair<_RandomAccessIter, _ForwardIter> + __uninitialized_copy_n(_RandomAccessIter __first, _Size __count, + _ForwardIter __result, + std::random_access_iterator_tag) + { + _RandomAccessIter __last = __first + __count; + return (pair<_RandomAccessIter, _ForwardIter> + (__last, std::uninitialized_copy(__first, __last, __result))); + } + + template + inline pair<_InputIter, _ForwardIter> + __uninitialized_copy_n(_InputIter __first, _Size __count, + _ForwardIter __result) + { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result, + __iterator_category(__first)); } + + /** + * @brief Copies the range [first,last) into result. + * @param __first An input iterator. + * @param __count Length + * @param __result An output iterator. + * @return __result + (__first + __count) + * @ingroup SGIextensions + * + * Like copy(), but does not require an initialized output range. + */ + template + inline pair<_InputIter, _ForwardIter> + uninitialized_copy_n(_InputIter __first, _Size __count, + _ForwardIter __result) + { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result, + __iterator_category(__first)); } + + + // An alternative version of uninitialized_copy_n that constructs + // and destroys objects with a user-provided allocator. + template + pair<_InputIter, _ForwardIter> + __uninitialized_copy_n_a(_InputIter __first, _Size __count, + _ForwardIter __result, + _Allocator __alloc) + { + _ForwardIter __cur = __result; + __try + { + for (; __count > 0 ; --__count, ++__first, ++__cur) + __alloc.construct(&*__cur, *__first); + return pair<_InputIter, _ForwardIter>(__first, __cur); + } + __catch(...) + { + std::_Destroy(__result, __cur, __alloc); + __throw_exception_again; + } + } + + template + inline pair<_InputIter, _ForwardIter> + __uninitialized_copy_n_a(_InputIter __first, _Size __count, + _ForwardIter __result, + std::allocator<_Tp>) + { + return __gnu_cxx::uninitialized_copy_n(__first, __count, __result); + } + + /** + * This class provides similar behavior and semantics of the standard + * functions get_temporary_buffer() and return_temporary_buffer(), but + * encapsulated in a type vaguely resembling a standard container. + * + * By default, a temporary_buffer stores space for objects of + * whatever type the Iter iterator points to. It is constructed from a + * typical [first,last) range, and provides the begin(), end(), size() + * functions, as well as requested_size(). For non-trivial types, copies + * of *first will be used to initialize the storage. + * + * @c malloc is used to obtain underlying storage. + * + * Like get_temporary_buffer(), not all the requested memory may be + * available. Ideally, the created buffer will be large enough to hold a + * copy of [first,last), but if size() is less than requested_size(), + * then this didn't happen. + * + * @ingroup SGIextensions + */ + template ::value_type > + struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp> + { + /// Requests storage large enough to hold a copy of [first,last). + temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) + : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) { } + + /// Destroys objects and frees storage. + ~temporary_buffer() { } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif + diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/mt_allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/mt_allocator.h new file mode 100644 index 0000000..4d61620 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/ext/mt_allocator.h @@ -0,0 +1,766 @@ +// MT-optimized allocator -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/mt_allocator.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _MT_ALLOCATOR_H +#define _MT_ALLOCATOR_H 1 + +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::size_t; + using std::ptrdiff_t; + + typedef void (*__destroy_handler)(void*); + + /// Base class for pool object. + struct __pool_base + { + // Using short int as type for the binmap implies we are never + // caching blocks larger than 32768 with this allocator. + typedef unsigned short int _Binmap_type; + + // Variables used to configure the behavior of the allocator, + // assigned and explained in detail below. + struct _Tune + { + // Compile time constants for the default _Tune values. + enum { _S_align = 8 }; + enum { _S_max_bytes = 128 }; + enum { _S_min_bin = 8 }; + enum { _S_chunk_size = 4096 - 4 * sizeof(void*) }; + enum { _S_max_threads = 4096 }; + enum { _S_freelist_headroom = 10 }; + + // Alignment needed. + // NB: In any case must be >= sizeof(_Block_record), that + // is 4 on 32 bit machines and 8 on 64 bit machines. + size_t _M_align; + + // Allocation requests (after round-up to power of 2) below + // this value will be handled by the allocator. A raw new/ + // call will be used for requests larger than this value. + // NB: Must be much smaller than _M_chunk_size and in any + // case <= 32768. + size_t _M_max_bytes; + + // Size in bytes of the smallest bin. + // NB: Must be a power of 2 and >= _M_align (and of course + // much smaller than _M_max_bytes). + size_t _M_min_bin; + + // In order to avoid fragmenting and minimize the number of + // new() calls we always request new memory using this + // value. Based on previous discussions on the libstdc++ + // mailing list we have chosen the value below. + // See http://gcc.gnu.org/ml/libstdc++/2001-07/msg00077.html + // NB: At least one order of magnitude > _M_max_bytes. + size_t _M_chunk_size; + + // The maximum number of supported threads. For + // single-threaded operation, use one. Maximum values will + // vary depending on details of the underlying system. (For + // instance, Linux 2.4.18 reports 4070 in + // /proc/sys/kernel/threads-max, while Linux 2.6.6 reports + // 65534) + size_t _M_max_threads; + + // Each time a deallocation occurs in a threaded application + // we make sure that there are no more than + // _M_freelist_headroom % of used memory on the freelist. If + // the number of additional records is more than + // _M_freelist_headroom % of the freelist, we move these + // records back to the global pool. + size_t _M_freelist_headroom; + + // Set to true forces all allocations to use new(). + bool _M_force_new; + + explicit + _Tune() + : _M_align(_S_align), _M_max_bytes(_S_max_bytes), _M_min_bin(_S_min_bin), + _M_chunk_size(_S_chunk_size), _M_max_threads(_S_max_threads), + _M_freelist_headroom(_S_freelist_headroom), + _M_force_new(std::getenv("GLIBCXX_FORCE_NEW") ? true : false) + { } + + explicit + _Tune(size_t __align, size_t __maxb, size_t __minbin, size_t __chunk, + size_t __maxthreads, size_t __headroom, bool __force) + : _M_align(__align), _M_max_bytes(__maxb), _M_min_bin(__minbin), + _M_chunk_size(__chunk), _M_max_threads(__maxthreads), + _M_freelist_headroom(__headroom), _M_force_new(__force) + { } + }; + + struct _Block_address + { + void* _M_initial; + _Block_address* _M_next; + }; + + const _Tune& + _M_get_options() const + { return _M_options; } + + void + _M_set_options(_Tune __t) + { + if (!_M_init) + _M_options = __t; + } + + bool + _M_check_threshold(size_t __bytes) + { return __bytes > _M_options._M_max_bytes || _M_options._M_force_new; } + + size_t + _M_get_binmap(size_t __bytes) + { return _M_binmap[__bytes]; } + + size_t + _M_get_align() + { return _M_options._M_align; } + + explicit + __pool_base() + : _M_options(_Tune()), _M_binmap(0), _M_init(false) { } + + explicit + __pool_base(const _Tune& __options) + : _M_options(__options), _M_binmap(0), _M_init(false) { } + + private: + explicit + __pool_base(const __pool_base&); + + __pool_base& + operator=(const __pool_base&); + + protected: + // Configuration options. + _Tune _M_options; + + _Binmap_type* _M_binmap; + + // Configuration of the pool object via _M_options can happen + // after construction but before initialization. After + // initialization is complete, this variable is set to true. + bool _M_init; + }; + + + /** + * @brief Data describing the underlying memory pool, parameterized on + * threading support. + */ + template + class __pool; + + /// Specialization for single thread. + template<> + class __pool : public __pool_base + { + public: + union _Block_record + { + // Points to the block_record of the next free block. + _Block_record* _M_next; + }; + + struct _Bin_record + { + // An "array" of pointers to the first free block. + _Block_record** _M_first; + + // A list of the initial addresses of all allocated blocks. + _Block_address* _M_address; + }; + + void + _M_initialize_once() + { + if (__builtin_expect(_M_init == false, false)) + _M_initialize(); + } + + void + _M_destroy() throw(); + + char* + _M_reserve_block(size_t __bytes, const size_t __thread_id); + + void + _M_reclaim_block(char* __p, size_t __bytes) throw (); + + size_t + _M_get_thread_id() { return 0; } + + const _Bin_record& + _M_get_bin(size_t __which) + { return _M_bin[__which]; } + + void + _M_adjust_freelist(const _Bin_record&, _Block_record*, size_t) + { } + + explicit __pool() + : _M_bin(0), _M_bin_size(1) { } + + explicit __pool(const __pool_base::_Tune& __tune) + : __pool_base(__tune), _M_bin(0), _M_bin_size(1) { } + + private: + // An "array" of bin_records each of which represents a specific + // power of 2 size. Memory to this "array" is allocated in + // _M_initialize(). + _Bin_record* _M_bin; + + // Actual value calculated in _M_initialize(). + size_t _M_bin_size; + + void + _M_initialize(); + }; + +#ifdef __GTHREADS + /// Specialization for thread enabled, via gthreads.h. + template<> + class __pool : public __pool_base + { + public: + // Each requesting thread is assigned an id ranging from 1 to + // _S_max_threads. Thread id 0 is used as a global memory pool. + // In order to get constant performance on the thread assignment + // routine, we keep a list of free ids. When a thread first + // requests memory we remove the first record in this list and + // stores the address in a __gthread_key. When initializing the + // __gthread_key we specify a destructor. When this destructor + // (i.e. the thread dies) is called, we return the thread id to + // the front of this list. + struct _Thread_record + { + // Points to next free thread id record. NULL if last record in list. + _Thread_record* _M_next; + + // Thread id ranging from 1 to _S_max_threads. + size_t _M_id; + }; + + union _Block_record + { + // Points to the block_record of the next free block. + _Block_record* _M_next; + + // The thread id of the thread which has requested this block. + size_t _M_thread_id; + }; + + struct _Bin_record + { + // An "array" of pointers to the first free block for each + // thread id. Memory to this "array" is allocated in + // _S_initialize() for _S_max_threads + global pool 0. + _Block_record** _M_first; + + // A list of the initial addresses of all allocated blocks. + _Block_address* _M_address; + + // An "array" of counters used to keep track of the amount of + // blocks that are on the freelist/used for each thread id. + // - Note that the second part of the allocated _M_used "array" + // actually hosts (atomic) counters of reclaimed blocks: in + // _M_reserve_block and in _M_reclaim_block those numbers are + // subtracted from the first ones to obtain the actual size + // of the "working set" of the given thread. + // - Memory to these "arrays" is allocated in _S_initialize() + // for _S_max_threads + global pool 0. + size_t* _M_free; + size_t* _M_used; + + // Each bin has its own mutex which is used to ensure data + // integrity while changing "ownership" on a block. The mutex + // is initialized in _S_initialize(). + __gthread_mutex_t* _M_mutex; + }; + + // XXX GLIBCXX_ABI Deprecated + void + _M_initialize(__destroy_handler); + + void + _M_initialize_once() + { + if (__builtin_expect(_M_init == false, false)) + _M_initialize(); + } + + void + _M_destroy() throw(); + + char* + _M_reserve_block(size_t __bytes, const size_t __thread_id); + + void + _M_reclaim_block(char* __p, size_t __bytes) throw (); + + const _Bin_record& + _M_get_bin(size_t __which) + { return _M_bin[__which]; } + + void + _M_adjust_freelist(const _Bin_record& __bin, _Block_record* __block, + size_t __thread_id) + { + if (__gthread_active_p()) + { + __block->_M_thread_id = __thread_id; + --__bin._M_free[__thread_id]; + ++__bin._M_used[__thread_id]; + } + } + + // XXX GLIBCXX_ABI Deprecated + _GLIBCXX_CONST void + _M_destroy_thread_key(void*) throw (); + + size_t + _M_get_thread_id(); + + explicit __pool() + : _M_bin(0), _M_bin_size(1), _M_thread_freelist(0) + { } + + explicit __pool(const __pool_base::_Tune& __tune) + : __pool_base(__tune), _M_bin(0), _M_bin_size(1), + _M_thread_freelist(0) + { } + + private: + // An "array" of bin_records each of which represents a specific + // power of 2 size. Memory to this "array" is allocated in + // _M_initialize(). + _Bin_record* _M_bin; + + // Actual value calculated in _M_initialize(). + size_t _M_bin_size; + + _Thread_record* _M_thread_freelist; + void* _M_thread_freelist_initial; + + void + _M_initialize(); + }; +#endif + + template

    dq!1Jkjcy2ysz4C(-x1YG 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 UzgEXVyd`hzv#ZquutDSh1AAU+Q2+n{ literal 0 HcmV?d00001 diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/_ansi.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/_ansi.h new file mode 100644 index 0000000..c5597b3 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/_ansi.h @@ -0,0 +1,144 @@ +/* Provide support for both ANSI and non-ANSI environments. */ + +/* Some ANSI environments are "broken" in the sense that __STDC__ cannot be + relied upon to have it's intended meaning. Therefore we must use our own + concoction: _HAVE_STDC. Always use _HAVE_STDC instead of __STDC__ in newlib + sources! + + To get a strict ANSI C environment, define macro __STRICT_ANSI__. This will + "comment out" the non-ANSI parts of the ANSI header files (non-ANSI header + files aren't affected). */ + +#ifndef _ANSIDECL_H_ +#define _ANSIDECL_H_ + +#include +#include + +/* First try to figure out whether we really are in an ANSI C environment. */ +/* FIXME: This probably needs some work. Perhaps sys/config.h can be + prevailed upon to give us a clue. */ + +#ifdef __STDC__ +#define _HAVE_STDC +#endif + +/* ISO C++. */ + +#ifdef __cplusplus +#if !(defined(_BEGIN_STD_C) && defined(_END_STD_C)) +#ifdef _HAVE_STD_CXX +#define _BEGIN_STD_C namespace std { extern "C" { +#define _END_STD_C } } +#else +#define _BEGIN_STD_C extern "C" { +#define _END_STD_C } +#endif +#if __GNUC_PREREQ (3, 3) +#define _NOTHROW __attribute__ ((nothrow)) +#else +#define _NOTHROW throw() +#endif +#endif +#else +#define _BEGIN_STD_C +#define _END_STD_C +#define _NOTHROW +#endif + +#ifdef _HAVE_STDC +#define _PTR void * +#define _AND , +#define _NOARGS void +#define _CONST const +#define _VOLATILE volatile +#define _SIGNED signed +#define _DOTS , ... +#define _VOID void +#ifdef __CYGWIN__ +#define _EXFUN_NOTHROW(name, proto) __cdecl name proto _NOTHROW +#define _EXFUN(name, proto) __cdecl name proto +#define _EXPARM(name, proto) (* __cdecl name) proto +#define _EXFNPTR(name, proto) (__cdecl * name) proto +#else +#define _EXFUN_NOTHROW(name, proto) name proto _NOTHROW +#define _EXFUN(name, proto) name proto +#define _EXPARM(name, proto) (* name) proto +#define _EXFNPTR(name, proto) (* name) proto +#endif +#define _DEFUN(name, arglist, args) name(args) +#define _DEFUN_VOID(name) name(_NOARGS) +#define _CAST_VOID (void) +#ifndef _LONG_DOUBLE +#define _LONG_DOUBLE long double +#endif +#ifndef _LONG_LONG_TYPE +#define _LONG_LONG_TYPE long long +#endif +#ifndef _PARAMS +#define _PARAMS(paramlist) paramlist +#endif +#else +#define _PTR char * +#define _AND ; +#define _NOARGS +#define _CONST +#define _VOLATILE +#define _SIGNED +#define _DOTS +#define _VOID void +#define _EXFUN(name, proto) name() +#define _EXFUN_NOTHROW(name, proto) name() +#define _DEFUN(name, arglist, args) name arglist args; +#define _DEFUN_VOID(name) name() +#define _CAST_VOID +#define _LONG_DOUBLE double +#define _LONG_LONG_TYPE long +#ifndef _PARAMS +#define _PARAMS(paramlist) () +#endif +#endif + +/* Support gcc's __attribute__ facility. */ + +#ifdef __GNUC__ +#define _ATTRIBUTE(attrs) __attribute__ (attrs) +#else +#define _ATTRIBUTE(attrs) +#endif + +/* The traditional meaning of 'extern inline' for GCC is not + to emit the function body unless the address is explicitly + taken. However this behaviour is changing to match the C99 + standard, which uses 'extern inline' to indicate that the + function body *must* be emitted. Likewise, a function declared + without either 'extern' or 'static' defaults to extern linkage + (C99 6.2.2p5), and the compiler may choose whether to use the + inline version or call the extern linkage version (6.7.4p6). + If we are using GCC, but do not have the new behaviour, we need + to use extern inline; if we are using a new GCC with the + C99-compatible behaviour, or a non-GCC compiler (which we will + have to hope is C99, since there is no other way to achieve the + effect of omitting the function if it isn't referenced) we use + 'static inline', which c99 defines to mean more-or-less the same + as the Gnu C 'extern inline'. */ +#if defined(__GNUC__) && !defined(__GNUC_STDC_INLINE__) +/* We're using GCC, but without the new C99-compatible behaviour. */ +#define _ELIDABLE_INLINE extern __inline__ _ATTRIBUTE ((__always_inline__)) +#else +/* We're using GCC in C99 mode, or an unknown compiler which + we just have to hope obeys the C99 semantics of inline. */ +#define _ELIDABLE_INLINE static __inline__ +#endif + +#if __GNUC_PREREQ (3, 1) +#define _NOINLINE __attribute__ ((__noinline__)) +#define _NOINLINE_STATIC _NOINLINE static +#else +/* On non-GNU compilers and GCC prior to version 3.1 the compiler can't be + trusted not to inline if it is static. */ +#define _NOINLINE +#define _NOINLINE_STATIC +#endif + +#endif /* _ANSIDECL_H_ */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/_syslist.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/_syslist.h new file mode 100644 index 0000000..271644e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/_syslist.h @@ -0,0 +1,40 @@ +/* internal use only -- mapping of "system calls" for libraries that lose + and only provide C names, so that we end up in violation of ANSI */ +#ifndef __SYSLIST_H +#define __SYSLIST_H + +#ifdef MISSING_SYSCALL_NAMES +#define _close close +#define _execve execve +#define _fcntl fcntl +#define _fork fork +#define _fstat fstat +#define _getpid getpid +#define _gettimeofday gettimeofday +#define _isatty isatty +#define _kill kill +#define _link link +#define _lseek lseek +#define _mkdir mkdir +#define _open open +#define _read read +#define _sbrk sbrk +#define _stat stat +#define _times times +#define _unlink unlink +#define _wait wait +#define _write write +#endif /* MISSING_SYSCALL_NAMES */ + +#if defined MISSING_SYSCALL_NAMES || !defined HAVE_OPENDIR +/* If the system call interface is missing opendir, readdir, and + closedir, there is an implementation of these functions in + libc/posix that is implemented using open, getdents, and close. + Note, these functions are currently not in the libc/syscalls + directory. */ +#define _opendir opendir +#define _readdir readdir +#define _closedir closedir +#endif /* MISSING_SYSCALL_NAMES || !HAVE_OPENDIR */ + +#endif /* !__SYSLIST_H_ */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/alloca.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/alloca.h new file mode 100644 index 0000000..2ea0fd9 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/alloca.h @@ -0,0 +1,21 @@ +/* libc/include/alloca.h - Allocate memory on stack */ + +/* Written 2000 by Werner Almesberger */ +/* Rearranged for general inclusion by stdlib.h. + 2001, Corinna Vinschen */ + +#ifndef _NEWLIB_ALLOCA_H +#define _NEWLIB_ALLOCA_H + +#include "_ansi.h" +#include + +#undef alloca + +#ifdef __GNUC__ +#define alloca(size) __builtin_alloca(size) +#else +void * _EXFUN(alloca,(size_t)); +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/ar.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/ar.h new file mode 100644 index 0000000..ac2e4ca --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/ar.h @@ -0,0 +1,69 @@ +/* $NetBSD: ar.h,v 1.4 1994/10/26 00:55:43 cgd Exp $ */ + +/*- + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * This code is derived from software contributed to Berkeley by + * Hugh Smith at The University of Guelph. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)ar.h 8.2 (Berkeley) 1/21/94 + */ + +#ifndef _AR_H_ +#define _AR_H_ + +/* Pre-4BSD archives had these magic numbers in them. */ +#define OARMAG1 0177555 +#define OARMAG2 0177545 + +#define ARMAG "!\n" /* ar "magic number" */ +#define SARMAG 8 /* strlen(ARMAG); */ + +#define AR_EFMT1 "#1/" /* extended format #1 */ + +struct ar_hdr { + char ar_name[16]; /* name */ + char ar_date[12]; /* modification time */ + char ar_uid[6]; /* user id */ + char ar_gid[6]; /* group id */ + char ar_mode[8]; /* octal file permissions */ + char ar_size[10]; /* size in bytes */ +#define ARFMAG "`\n" + char ar_fmag[2]; /* consistency check */ +}; + +#endif /* !_AR_H_ */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/argz.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/argz.h new file mode 100644 index 0000000..02c9adb --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/argz.h @@ -0,0 +1,33 @@ +/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software + * is freely granted, provided that this notice is preserved. + */ + +#ifndef _ARGZ_H_ +#define _ARGZ_H_ + +#include +#include + +#include "_ansi.h" + +_BEGIN_STD_C + +/* The newlib implementation of these functions assumes that sizeof(char) == 1. */ +error_t argz_create (char *const argv[], char **argz, size_t *argz_len); +error_t argz_create_sep (const char *string, int sep, char **argz, size_t *argz_len); +size_t argz_count (const char *argz, size_t argz_len); +void argz_extract (char *argz, size_t argz_len, char **argv); +void argz_stringify (char *argz, size_t argz_len, int sep); +error_t argz_add (char **argz, size_t *argz_len, const char *str); +error_t argz_add_sep (char **argz, size_t *argz_len, const char *str, int sep); +error_t argz_append (char **argz, size_t *argz_len, const char *buf, size_t buf_len); +error_t argz_delete (char **argz, size_t *argz_len, char *entry); +error_t argz_insert (char **argz, size_t *argz_len, char *before, const char *entry); +char * argz_next (char *argz, size_t argz_len, const char *entry); +error_t argz_replace (char **argz, size_t *argz_len, const char *str, const char *with, unsigned *replace_count); + +_END_STD_C + +#endif /* _ARGZ_H_ */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/assert.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/assert.h new file mode 100644 index 0000000..91bb040 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/assert.h @@ -0,0 +1,50 @@ +/* + assert.h +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "_ansi.h" + +#undef assert + +#ifdef NDEBUG /* required by ANSI standard */ +# define assert(__e) ((void)0) +#else +# define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \ + __ASSERT_FUNC, #__e)) + +# ifndef __ASSERT_FUNC + /* Use g++'s demangled names in C++. */ +# if defined __cplusplus && defined __GNUC__ +# define __ASSERT_FUNC __PRETTY_FUNCTION__ + + /* C99 requires the use of __func__. */ +# elif __STDC_VERSION__ >= 199901L +# define __ASSERT_FUNC __func__ + + /* Older versions of gcc don't have __func__ but can use __FUNCTION__. */ +# elif __GNUC__ >= 2 +# define __ASSERT_FUNC __FUNCTION__ + + /* failed to detect __func__ support. */ +# else +# define __ASSERT_FUNC ((char *) 0) +# endif +# endif /* !__ASSERT_FUNC */ +#endif /* !NDEBUG */ + +void _EXFUN(__assert, (const char *, int, const char *) + _ATTRIBUTE ((__noreturn__))); +void _EXFUN(__assert_func, (const char *, int, const char *, const char *) + _ATTRIBUTE ((__noreturn__))); + +#if __STDC_VERSION__ >= 201112L && !defined __cplusplus +# define static_assert _Static_assert +#endif + +#ifdef __cplusplus +} +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/algorithm b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/algorithm new file mode 100644 index 0000000..535ddb9 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/algorithm @@ -0,0 +1,68 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996,1997 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file include/algorithm + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_ALGORITHM +#define _GLIBCXX_ALGORITHM 1 + +#pragma GCC system_header + +#include // UK-300. +#include +#include + +#ifdef _GLIBCXX_PARALLEL +# include +#endif + +#endif /* _GLIBCXX_ALGORITHM */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++config.h new file mode 100644 index 0000000..95931be --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +/* #undef _GLIBCXX_ATOMIC_BUILTINS */ + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv6-m/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++config.h new file mode 100644 index 0000000..3105a54 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +#define _GLIBCXX_ATOMIC_BUILTINS 1 + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++config.h new file mode 100644 index 0000000..3105a54 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +#define _GLIBCXX_ATOMIC_BUILTINS 1 + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/fpu/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++config.h new file mode 100644 index 0000000..3105a54 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +#define _GLIBCXX_ATOMIC_BUILTINS 1 + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-ar/thumb/softfp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++config.h new file mode 100644 index 0000000..3105a54 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +#define _GLIBCXX_ATOMIC_BUILTINS 1 + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7-m/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++config.h new file mode 100644 index 0000000..3105a54 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +#define _GLIBCXX_ATOMIC_BUILTINS 1 + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++config.h new file mode 100644 index 0000000..3105a54 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +#define _GLIBCXX_ATOMIC_BUILTINS 1 + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/fpu/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++config.h new file mode 100644 index 0000000..3105a54 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +#define _GLIBCXX_ATOMIC_BUILTINS 1 + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/armv7e-m/softfp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++config.h new file mode 100644 index 0000000..95931be --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +/* #undef _GLIBCXX_ATOMIC_BUILTINS */ + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++config.h new file mode 100644 index 0000000..95931be --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +/* #undef _GLIBCXX_ATOMIC_BUILTINS */ + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/fpu/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/atomic_word.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/atomic_word.h new file mode 100644 index 0000000..02837f4 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/atomic_word.h @@ -0,0 +1,47 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + +// Define these two macros using the appropriate memory barrier for the target. +// The commented out versions below are the defaults. +// See ia64/atomic_word.h for an alternative approach. + +// This one prevents loads from being hoisted across the barrier; +// in other words, this is a Load-Load acquire barrier. +// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h. +// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") + +// This one prevents stores from being sunk across the barrier; in other +// words, a Store-Store release barrier. +// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/basic_file.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/basic_file.h new file mode 100644 index 0000000..c7e8c8e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/basic_file.h @@ -0,0 +1,110 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++allocator.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++allocator.h new file mode 100644 index 0000000..6d70bcc --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++allocator.h @@ -0,0 +1,55 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++config.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++config.h new file mode 100644 index 0000000..95931be --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++config.h @@ -0,0 +1,1666 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The current version of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20140228 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// If this is not supplied by the OS-specific or CPU-specific +// headers included below, it will be defined to an empty default. +# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __EXCEPTIONS +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +// Macro for extern template, ie controling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } + namespace placeholders { } + namespace regex_constants { } + namespace this_thread { } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION + +namespace std +{ + inline namespace __7 { } + + namespace rel_ops { inline namespace __7 { } } + + namespace tr1 + { + inline namespace __7 { } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } + } + + namespace tr2 + { inline namespace __7 { } } + + namespace decimal { inline namespace __7 { } } + + namespace chrono { inline namespace __7 { } } + namespace placeholders { inline namespace __7 { } } + namespace regex_constants { inline namespace __7 { } } + namespace this_thread { inline namespace __7 { } } + + namespace __detail { inline namespace __7 { } } +} + +namespace __gnu_cxx +{ + inline namespace __7 { } + namespace __detail { inline namespace __7 { } } +} +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { +# define _GLIBCXX_END_NAMESPACE_VERSION } +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +#if _GLIBCXX_INLINE_VERSION + inline namespace __7 { } +#endif + } + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_CONTAINER \ + _GLIBCXX_END_NAMESPACE_VERSION } +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_ALGO \ + _GLIBCXX_END_NAMESPACE_VERSION } +#endif + +#ifndef _GLIBCXX_STD_A +# define _GLIBCXX_STD_A std +#endif + +#ifndef _GLIBCXX_STD_C +# define _GLIBCXX_STD_C std +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +#endif + +#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif + +// Assert. +#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL) +# define __glibcxx_assert(_Condition) +#else +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +// Macros for race detectors. +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain +// atomic (lock-free) synchronization to race detectors: +// the race detector will infer a happens-before arc from the former to the +// latter when they share the same argument pointer. +// +// The most frequent use case for these macros (and the only case in the +// current implementation of the library) is atomic reference counting: +// void _M_remove_reference() +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); +// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) +// { +// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); +// _M_destroy(__a); +// } +// } +// The annotations in this example tell the race detector that all memory +// accesses occurred when the refcount was positive do not race with +// memory accesses which occurred after the refcount became zero. +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) +#endif +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// Macros for C linkage: define extern "C" linkage only when using C++. +# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { +# define _GLIBCXX_END_EXTERN_C } + +#else // !__cplusplus +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// If platform uses neither visibility nor psuedo-visibility, +// specify empty default for namespace annotation macros. +#ifndef _GLIBCXX_PSEUDO_VISIBILITY +# define _GLIBCXX_PSEUDO_VISIBILITY(V) +#endif + +// Certain function definitions that are meant to be overridable from +// user code are decorated with this macro. For some targets, this +// macro causes these definitions to be weak. +#ifndef _GLIBCXX_WEAK_DEFINITION +# define _GLIBCXX_WEAK_DEFINITION +#endif + + +// The remainder of the prewritten config is automatic; all the +// user hooks are listed above. + +// Create a boolean flag to be used to determine if --fast-math is set. +#ifdef __FAST_MATH__ +# define _GLIBCXX_FAST_MATH 1 +#else +# define _GLIBCXX_FAST_MATH 0 +#endif + +// This marks string literals in header files to be extracted for eventual +// translation. It is primarily used for messages in thrown exceptions; see +// src/functexcept.cc. We use __N because the more traditional _N is used +// for something else under certain OSes (see BADNAMES). +#define __N(msgid) (msgid) + +// For example, is known to #define min and max as macros... +#undef min +#undef max + +// End of prewritten config; the settings discovered at configure time follow. +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `acosf' function. */ +#define _GLIBCXX_HAVE_ACOSF 1 + +/* Define to 1 if you have the `acosl' function. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* Define to 1 if the target assembler supports .symver directive. */ +#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 + +/* Define to 1 if you have the `atan2f' function. */ +#define _GLIBCXX_HAVE_ATAN2F 1 + +/* Define to 1 if you have the `atan2l' function. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* Define to 1 if the target assembler supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_CC_TLS */ + +/* Define to 1 if you have the `ceilf' function. */ +#define _GLIBCXX_HAVE_CEILF 1 + +/* Define to 1 if you have the `ceill' function. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_COMPLEX_H 1 + +/* Define to 1 if you have the `cosf' function. */ +#define _GLIBCXX_HAVE_COSF 1 + +/* Define to 1 if you have the `coshf' function. */ +#define _GLIBCXX_HAVE_COSHF 1 + +/* Define to 1 if you have the `coshl' function. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* Define if EBADMSG exists. */ +#define _GLIBCXX_HAVE_EBADMSG 1 + +/* Define if ECANCELED exists. */ +#define _GLIBCXX_HAVE_ECANCELED 1 + +/* Define if ECHILD exists. */ +#define _GLIBCXX_HAVE_ECHILD 1 + +/* Define if EIDRM exists. */ +#define _GLIBCXX_HAVE_EIDRM 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* Define if ENODATA exists. */ +#define _GLIBCXX_HAVE_ENODATA 1 + +/* Define if ENOLINK exists. */ +#define _GLIBCXX_HAVE_ENOLINK 1 + +/* Define if ENOSPC exists. */ +#define _GLIBCXX_HAVE_ENOSPC 1 + +/* Define if ENOSR exists. */ +#define _GLIBCXX_HAVE_ENOSR 1 + +/* Define if ENOSTR exists. */ +#define _GLIBCXX_HAVE_ENOSTR 1 + +/* Define if ENOTRECOVERABLE exists. */ +#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 + +/* Define if ENOTSUP exists. */ +#define _GLIBCXX_HAVE_ENOTSUP 1 + +/* Define if EOVERFLOW exists. */ +#define _GLIBCXX_HAVE_EOVERFLOW 1 + +/* Define if EOWNERDEAD exists. */ +#define _GLIBCXX_HAVE_EOWNERDEAD 1 + +/* Define if EPERM exists. */ +#define _GLIBCXX_HAVE_EPERM 1 + +/* Define if EPROTO exists. */ +#define _GLIBCXX_HAVE_EPROTO 1 + +/* Define if ETIME exists. */ +#define _GLIBCXX_HAVE_ETIME 1 + +/* Define if ETIMEDOUT exists. */ +#define _GLIBCXX_HAVE_ETIMEDOUT 1 + +/* Define if ETXTBSY exists. */ +#define _GLIBCXX_HAVE_ETXTBSY 1 + +/* Define if EWOULDBLOCK exists. */ +#define _GLIBCXX_HAVE_EWOULDBLOCK 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* Define to 1 if you have the `finite' function. */ +/* #undef _GLIBCXX_HAVE_FINITE */ + +/* Define to 1 if you have the `finitef' function. */ +/* #undef _GLIBCXX_HAVE_FINITEF */ + +/* Define to 1 if you have the `finitel' function. */ +/* #undef _GLIBCXX_HAVE_FINITEL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floorf' function. */ +#define _GLIBCXX_HAVE_FLOORF 1 + +/* Define to 1 if you have the `floorl' function. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* Define to 1 if you have the `fmodl' function. */ +/* #undef _GLIBCXX_HAVE_FMODL */ + +/* Define to 1 if you have the `fpclass' function. */ +/* #undef _GLIBCXX_HAVE_FPCLASS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FP_H */ + +/* Define to 1 if you have the `frexpf' function. */ +#define _GLIBCXX_HAVE_FREXPF 1 + +/* Define to 1 if you have the `frexpl' function. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in . */ +#define _GLIBCXX_HAVE_GETS 1 + +/* Define to 1 if you have the `hypot' function. */ +#define _GLIBCXX_HAVE_HYPOT 1 + +/* Define to 1 if you have the `hypotf' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isinf' function. */ +/* #undef _GLIBCXX_HAVE_ISINF */ + +/* Define to 1 if you have the `isinff' function. */ +/* #undef _GLIBCXX_HAVE_ISINFF */ + +/* Define to 1 if you have the `isinfl' function. */ +/* #undef _GLIBCXX_HAVE_ISINFL */ + +/* Define to 1 if you have the `isnan' function. */ +/* #undef _GLIBCXX_HAVE_ISNAN */ + +/* Define to 1 if you have the `isnanf' function. */ +/* #undef _GLIBCXX_HAVE_ISNANF */ + +/* Define to 1 if you have the `isnanl' function. */ +/* #undef _GLIBCXX_HAVE_ISNANL */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#define _GLIBCXX_HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `ldexpf' function. */ +#define _GLIBCXX_HAVE_LDEXPF 1 + +/* Define to 1 if you have the `ldexpl' function. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_AS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_DATA */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_RSS */ + +/* Only used in build directory testsuite_hooks.h. */ +/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */ + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `log10f' function. */ +#define _GLIBCXX_HAVE_LOG10F 1 + +/* Define to 1 if you have the `log10l' function. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* Define if mbstate_t exists in wchar.h. */ +#define _GLIBCXX_HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_MEMORY_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* Define to 1 if you have the `powl' function. */ +/* #undef _GLIBCXX_HAVE_POWL */ + +/* Define to 1 if you have the `qfpclass' function. */ +/* #undef _GLIBCXX_HAVE_QFPCLASS */ + +/* Define to 1 if you have the `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* Define to 1 if you have the `sincos' function. */ +/* #undef _GLIBCXX_HAVE_SINCOS */ + +/* Define to 1 if you have the `sincosf' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSF */ + +/* Define to 1 if you have the `sincosl' function. */ +/* #undef _GLIBCXX_HAVE_SINCOSL */ + +/* Define to 1 if you have the `sinf' function. */ +#define _GLIBCXX_HAVE_SINF 1 + +/* Define to 1 if you have the `sinhf' function. */ +#define _GLIBCXX_HAVE_SINHF 1 + +/* Define to 1 if you have the `sinhl' function. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtof' function. */ +#define _GLIBCXX_HAVE_STRTOF 1 + +/* Define to 1 if you have the `strtold' function. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_IFREG is available in . */ +#define _GLIBCXX_HAVE_S_ISREG 1 + +/* Define to 1 if you have the `tanf' function. */ +#define _GLIBCXX_HAVE_TANF 1 + +/* Define to 1 if you have the `tanhf' function. */ +#define _GLIBCXX_HAVE_TANHF 1 + +/* Define to 1 if you have the `tanhl' function. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Defined if vfwscanf exists. */ +#define _GLIBCXX_HAVE_VFWSCANF 1 + +/* Defined if vswscanf exists. */ +#define _GLIBCXX_HAVE_VSWSCANF 1 + +/* Defined if vwscanf exists. */ +#define _GLIBCXX_HAVE_VWSCANF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _GLIBCXX_ICONV_CONST */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +/* #undef _GLIBCXX_PACKAGE */ + +/* Define to the address where bug reports for this package should be sent. */ +#define _GLIBCXX_PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define _GLIBCXX_PACKAGE_NAME "package-unused" + +/* Define to the full name and version of this package. */ +#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" + +/* Define to the one symbol short name of this package. */ +#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" + +/* Define to the home page for this package. */ +#define _GLIBCXX_PACKAGE_URL "" + +/* Define to the version of this package. */ +#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" + +/* The size of `char', as computed by sizeof. */ +/* #undef SIZEOF_CHAR */ + +/* The size of `int', as computed by sizeof. */ +/* #undef SIZEOF_INT */ + +/* The size of `long', as computed by sizeof. */ +/* #undef SIZEOF_LONG */ + +/* The size of `short', as computed by sizeof. */ +/* #undef SIZEOF_SHORT */ + +/* The size of `void *', as computed by sizeof. */ +/* #undef SIZEOF_VOID_P */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +/* #undef _GLIBCXX_VERSION */ + +/* Define if the compiler supports C++11 atomics. */ +/* #undef _GLIBCXX_ATOMIC_BUILTINS */ + +/* Define to use concept checking code from the boost libraries. */ +/* #undef _GLIBCXX_CONCEPT_CHECKS */ + +/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, + undefined for platform defaults */ +#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 + +/* Define if gthreads library is available. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ +#define _GLIBCXX_HOSTED 1 + +/* Define if compatibility should be provided for -mlong-double-64. */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* Define if the compiler is configured for setjmp/longjmp exceptions. */ +/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */ + +/* Define to the value of the EOF integer constant. */ +#define _GLIBCXX_STDIO_EOF -1 + +/* Define to the value of the SEEK_CUR integer constant. */ +#define _GLIBCXX_STDIO_SEEK_CUR 1 + +/* Define to the value of the SEEK_END integer constant. */ +#define _GLIBCXX_STDIO_SEEK_END 2 + +/* Define to use symbol versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* Define to use GNU namespace versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ + +/* Define to use Sun versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_SUN */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . Using + compiler builtins for these functions requires corresponding C99 library + functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std. */ +#define _GLIBCXX_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_MATH_TR1 */ + +/* Define if C99 types in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_STDINT_TR1 1 + +/* Defined if clock_gettime has monotonic clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime syscall has monotonic and realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if __float128 is supported on this host. */ +/* #undef _GLIBCXX_USE_FLOAT128 */ + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if code specialized for wchar_t should be used. */ +#define _GLIBCXX_USE_WCHAR_T 1 + +/* Define to 1 if a verbose library is built, or 0 otherwise. */ +#define _GLIBCXX_VERBOSE 1 + +/* Defined if as can handle rdrand. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* Define to 1 if mutex_timedlock is available. */ +#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++io.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++io.h new file mode 100644 index 0000000..7c8c186 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++locale.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++locale.h new file mode 100644 index 0000000..b5fd989 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#ifdef _GLIBCXX_USE_C99 + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/cpu_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/cpu_defines.h new file mode 100644 index 0000000..9581d3f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/cpu_defines.h @@ -0,0 +1,33 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2005-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cpu_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CPU_DEFINES +#define _GLIBCXX_CPU_DEFINES 1 + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/ctype_base.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/ctype_base.h new file mode 100644 index 0000000..72449e5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 + +// Support for Solaris 2.5.1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/ctype_inline.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/ctype_inline.h new file mode 100644 index 0000000..40bc63c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/cxxabi_tweaks.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/cxxabi_tweaks.h new file mode 100644 index 0000000..dfc6c7a --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/error_constants.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/error_constants.h new file mode 100644 index 0000000..fa6d889 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/extc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/extc++.h new file mode 100644 index 0000000..30a9eff --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/extc++.h @@ -0,0 +1,71 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-default.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-default.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-posix.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-posix.h new file mode 100644 index 0000000..6e71b18 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-single.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-single.h new file mode 100644 index 0000000..41e575e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((unused)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr.h new file mode 100644 index 0000000..6c3394e --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2013 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/messages_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/messages_members.h new file mode 100644 index 0000000..bae46c5 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/opt_random.h new file mode 100644 index 0000000..76c9155 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/os_defines.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/os_defines.h new file mode 100644 index 0000000..6b10b71 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/os_defines.h @@ -0,0 +1,52 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/os_defines.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 +#endif + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/stdc++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/stdc++.h new file mode 100644 index 0000000..195377d --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/stdc++.h @@ -0,0 +1,117 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/stdtr1c++.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/stdtr1c++.h new file mode 100644 index 0000000..6fbf136 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/time_members.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/time_members.h new file mode 100644 index 0000000..fb59895 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/ext/opt_random.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/ext/opt_random.h new file mode 100644 index 0000000..61f47de --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/arm-none-eabi/thumb/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/array b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/array new file mode 100644 index 0000000..0d2a71c --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/array @@ -0,0 +1,333 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/array + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_ARRAY +#define _GLIBCXX_ARRAY 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + 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); } + }; + + /** + * @brief A standard container for storing a fixed size sequence of elements. + * + * @ingroup sequences + * + * Meets the requirements of a container, a + * reversible container, and a + * sequence. + * + * Sets support random access iterators. + * + * @tparam Tp Type of element. Required to be a complete type. + * @tparam N Number of elements. + */ + template + struct array + { + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* iterator; + typedef const value_type* const_iterator; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // Support for zero-sized arrays mandatory. + typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type; + typename _AT_Type::_Type _M_elems; + + // No explicit construct/copy/destroy for aggregate type. + + // DR 776. + void + fill(const value_type& __u) + { std::fill_n(begin(), size(), __u); } + + void + swap(array& __other) + noexcept(noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))) + { std::swap_ranges(begin(), end(), __other.begin()); } + + // Iterators. + 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()); } + + // Capacity. + constexpr size_type + size() const noexcept { return _Nm; } + + constexpr size_type + max_size() const noexcept { return _Nm; } + + constexpr bool + empty() const noexcept { return size() == 0; } + + // Element access. + reference + operator[](size_type __n) + { 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(__N("array::at")); + return _AT_Type::_S_ref(_M_elems, __n); + } + + constexpr const_reference + at(size_type __n) const + { + // Result of conditional expression must be an lvalue so use + // boolean ? lvalue : (throw-expr, lvalue) + return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) + : (std::__throw_out_of_range(__N("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)); } + }; + + // Array comparisons. + template + inline bool + operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return std::equal(__one.begin(), __one.end(), __two.begin()); } + + template + inline bool + operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one == __two); } + + template + inline bool + operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) + { + return std::lexicographical_compare(__a.begin(), __a.end(), + __b.begin(), __b.end()); + } + + template + inline bool + operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return __two < __one; } + + template + inline bool + operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one > __two); } + + template + inline bool + operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one < __two); } + + // Specialized algorithms. + template + inline void + swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) + noexcept(noexcept(__one.swap(__two))) + { __one.swap(__two); } + + template + constexpr _Tp& + get(array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + + template + constexpr _Tp&& + get(array<_Tp, _Nm>&& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return std::move(get<_Int>(__arr)); + } + + template + constexpr const _Tp& + get(const array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Tuple interface to class template array. + + /// tuple_size + template + class tuple_size; + + template + struct tuple_size<_GLIBCXX_STD_C::array<_Tp, _Nm>> + : public integral_constant { }; + + /// tuple_element + template + class tuple_element; + + template + struct tuple_element<_Int, _GLIBCXX_STD_C::array<_Tp, _Nm>> + { + static_assert(_Int < _Nm, "index is out of bounds"); + typedef _Tp type; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif // C++11 + +#endif // _GLIBCXX_ARRAY diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/atomic b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/atomic new file mode 100644 index 0000000..813f574 --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/atomic @@ -0,0 +1,1122 @@ +// -*- C++ -*- header. + +// Copyright (C) 2008-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file include/atomic + * This is a Standard C++ Library header. + */ + +// Based on "C++ Atomic Types and Operations" by Hans Boehm and Lawrence Crowl. +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html + +#ifndef _GLIBCXX_ATOMIC +#define _GLIBCXX_ATOMIC 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#endif + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup atomics + * @{ + */ + + /// atomic_bool + // NB: No operators or fetch-operations for this type. + struct atomic_bool + { + private: + __atomic_base _M_base; + + public: + atomic_bool() noexcept = default; + ~atomic_bool() noexcept = default; + atomic_bool(const atomic_bool&) = delete; + atomic_bool& operator=(const atomic_bool&) = delete; + atomic_bool& operator=(const atomic_bool&) volatile = delete; + + constexpr atomic_bool(bool __i) noexcept : _M_base(__i) { } + + bool + operator=(bool __i) noexcept + { return _M_base.operator=(__i); } + + bool + operator=(bool __i) volatile noexcept + { return _M_base.operator=(__i); } + + operator bool() const noexcept + { return _M_base.load(); } + + operator bool() const volatile noexcept + { return _M_base.load(); } + + bool + is_lock_free() const noexcept { return _M_base.is_lock_free(); } + + bool + is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } + + void + store(bool __i, memory_order __m = memory_order_seq_cst) noexcept + { _M_base.store(__i, __m); } + + void + store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept + { _M_base.store(__i, __m); } + + bool + load(memory_order __m = memory_order_seq_cst) const noexcept + { return _M_base.load(__m); } + + bool + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { return _M_base.load(__m); } + + bool + exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept + { return _M_base.exchange(__i, __m); } + + bool + exchange(bool __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_base.exchange(__i, __m); } + + bool + compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, + memory_order __m2) noexcept + { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } + + bool + compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, + memory_order __m2) volatile noexcept + { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } + + bool + compare_exchange_weak(bool& __i1, bool __i2, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_base.compare_exchange_weak(__i1, __i2, __m); } + + bool + compare_exchange_weak(bool& __i1, bool __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_base.compare_exchange_weak(__i1, __i2, __m); } + + bool + compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, + memory_order __m2) noexcept + { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } + + bool + compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, + memory_order __m2) volatile noexcept + { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } + + bool + compare_exchange_strong(bool& __i1, bool __i2, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_base.compare_exchange_strong(__i1, __i2, __m); } + + bool + compare_exchange_strong(bool& __i1, bool __i2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_base.compare_exchange_strong(__i1, __i2, __m); } + }; + + + /** + * @brief Generic atomic type, primary class template. + * + * @tparam _Tp Type to be made atomic, must be trivally copyable. + */ + template + struct atomic + { + private: + _Tp _M_i; + + public: + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(_Tp __i) noexcept : _M_i(__i) { } + + operator _Tp() const noexcept + { return load(); } + + operator _Tp() const volatile noexcept + { return load(); } + + _Tp + operator=(_Tp __i) noexcept + { store(__i); return __i; } + + _Tp + operator=(_Tp __i) volatile noexcept + { store(__i); return __i; } + + bool + is_lock_free() const noexcept + { return __atomic_is_lock_free(sizeof(_M_i), nullptr); } + + bool + is_lock_free() const volatile noexcept + { return __atomic_is_lock_free(sizeof(_M_i), nullptr); } + + void + store(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept + { __atomic_store(&_M_i, &__i, _m); } + + void + store(_Tp __i, memory_order _m = memory_order_seq_cst) volatile noexcept + { __atomic_store(&_M_i, &__i, _m); } + + _Tp + load(memory_order _m = memory_order_seq_cst) const noexcept + { + _Tp tmp; + __atomic_load(&_M_i, &tmp, _m); + return tmp; + } + + _Tp + load(memory_order _m = memory_order_seq_cst) const volatile noexcept + { + _Tp tmp; + __atomic_load(&_M_i, &tmp, _m); + return tmp; + } + + _Tp + exchange(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept + { + _Tp tmp; + __atomic_exchange(&_M_i, &__i, &tmp, _m); + return tmp; + } + + _Tp + exchange(_Tp __i, + memory_order _m = memory_order_seq_cst) volatile noexcept + { + _Tp tmp; + __atomic_exchange(&_M_i, &__i, &tmp, _m); + return tmp; + } + + bool + compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); + } + + bool + compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) volatile noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); + } + + bool + compare_exchange_weak(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) noexcept + { return compare_exchange_weak(__e, __i, __m, __m); } + + bool + compare_exchange_weak(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return compare_exchange_weak(__e, __i, __m, __m); } + + bool + compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); + } + + bool + compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, + memory_order __f) volatile noexcept + { + return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); + } + + bool + compare_exchange_strong(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) noexcept + { return compare_exchange_strong(__e, __i, __m, __m); } + + bool + compare_exchange_strong(_Tp& __e, _Tp __i, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return compare_exchange_strong(__e, __i, __m, __m); } + }; + + + /// Partial specialization for pointer types. + template + struct atomic<_Tp*> + { + typedef _Tp* __pointer_type; + typedef __atomic_base<_Tp*> __base_type; + __base_type _M_b; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { } + + operator __pointer_type() const noexcept + { return __pointer_type(_M_b); } + + operator __pointer_type() const volatile noexcept + { return __pointer_type(_M_b); } + + __pointer_type + operator=(__pointer_type __p) noexcept + { return _M_b.operator=(__p); } + + __pointer_type + operator=(__pointer_type __p) volatile noexcept + { return _M_b.operator=(__p); } + + __pointer_type + operator++(int) noexcept + { return _M_b++; } + + __pointer_type + operator++(int) volatile noexcept + { return _M_b++; } + + __pointer_type + operator--(int) noexcept + { return _M_b--; } + + __pointer_type + operator--(int) volatile noexcept + { return _M_b--; } + + __pointer_type + operator++() noexcept + { return ++_M_b; } + + __pointer_type + operator++() volatile noexcept + { return ++_M_b; } + + __pointer_type + operator--() noexcept + { return --_M_b; } + + __pointer_type + operator--() volatile noexcept + { return --_M_b; } + + __pointer_type + operator+=(ptrdiff_t __d) noexcept + { return _M_b.operator+=(__d); } + + __pointer_type + operator+=(ptrdiff_t __d) volatile noexcept + { return _M_b.operator+=(__d); } + + __pointer_type + operator-=(ptrdiff_t __d) noexcept + { return _M_b.operator-=(__d); } + + __pointer_type + operator-=(ptrdiff_t __d) volatile noexcept + { return _M_b.operator-=(__d); } + + bool + is_lock_free() const noexcept + { return _M_b.is_lock_free(); } + + bool + is_lock_free() const volatile noexcept + { return _M_b.is_lock_free(); } + + void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_b.store(__p, __m); } + + void + store(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_b.store(__p, __m); } + + __pointer_type + load(memory_order __m = memory_order_seq_cst) const noexcept + { return _M_b.load(__m); } + + __pointer_type + load(memory_order __m = memory_order_seq_cst) const volatile noexcept + { return _M_b.load(__m); } + + __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_b.exchange(__p, __m); } + + __pointer_type + exchange(__pointer_type __p, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_b.exchange(__p, __m); } + + bool + compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, memory_order __m2) noexcept + { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } + + bool + compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) volatile noexcept + { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } + + bool + compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, + memory_order __m = memory_order_seq_cst) noexcept + { + return compare_exchange_weak(__p1, __p2, __m, + __cmpexch_failure_order(__m)); + } + + bool + compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return compare_exchange_weak(__p1, __p2, __m, + __cmpexch_failure_order(__m)); + } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, memory_order __m2) noexcept + { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m1, + memory_order __m2) volatile noexcept + { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m = memory_order_seq_cst) noexcept + { + return _M_b.compare_exchange_strong(__p1, __p2, __m, + __cmpexch_failure_order(__m)); + } + + bool + compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, + memory_order __m = memory_order_seq_cst) volatile noexcept + { + return _M_b.compare_exchange_strong(__p1, __p2, __m, + __cmpexch_failure_order(__m)); + } + + __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_b.fetch_add(__d, __m); } + + __pointer_type + fetch_add(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_b.fetch_add(__d, __m); } + + __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) noexcept + { return _M_b.fetch_sub(__d, __m); } + + __pointer_type + fetch_sub(ptrdiff_t __d, + memory_order __m = memory_order_seq_cst) volatile noexcept + { return _M_b.fetch_sub(__d, __m); } + }; + + + /// Explicit specialization for bool. + template<> + struct atomic : public atomic_bool + { + typedef bool __integral_type; + typedef atomic_bool __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for char. + template<> + struct atomic : public atomic_char + { + typedef char __integral_type; + typedef atomic_char __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for signed char. + template<> + struct atomic : public atomic_schar + { + typedef signed char __integral_type; + typedef atomic_schar __base_type; + + atomic() noexcept= default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for unsigned char. + template<> + struct atomic : public atomic_uchar + { + typedef unsigned char __integral_type; + typedef atomic_uchar __base_type; + + atomic() noexcept= default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for short. + template<> + struct atomic : public atomic_short + { + typedef short __integral_type; + typedef atomic_short __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for unsigned short. + template<> + struct atomic : public atomic_ushort + { + typedef unsigned short __integral_type; + typedef atomic_ushort __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for int. + template<> + struct atomic : atomic_int + { + typedef int __integral_type; + typedef atomic_int __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for unsigned int. + template<> + struct atomic : public atomic_uint + { + typedef unsigned int __integral_type; + typedef atomic_uint __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for long. + template<> + struct atomic : public atomic_long + { + typedef long __integral_type; + typedef atomic_long __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for unsigned long. + template<> + struct atomic : public atomic_ulong + { + typedef unsigned long __integral_type; + typedef atomic_ulong __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for long long. + template<> + struct atomic : public atomic_llong + { + typedef long long __integral_type; + typedef atomic_llong __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for unsigned long long. + template<> + struct atomic : public atomic_ullong + { + typedef unsigned long long __integral_type; + typedef atomic_ullong __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for wchar_t. + template<> + struct atomic : public atomic_wchar_t + { + typedef wchar_t __integral_type; + typedef atomic_wchar_t __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for char16_t. + template<> + struct atomic : public atomic_char16_t + { + typedef char16_t __integral_type; + typedef atomic_char16_t __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + /// Explicit specialization for char32_t. + template<> + struct atomic : public atomic_char32_t + { + typedef char32_t __integral_type; + typedef atomic_char32_t __base_type; + + atomic() noexcept = default; + ~atomic() noexcept = default; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + + constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } + + using __base_type::operator __integral_type; + using __base_type::operator=; + }; + + + // Function definitions, atomic_flag operations. + inline bool + atomic_flag_test_and_set_explicit(atomic_flag* __a, + memory_order __m) noexcept + { return __a->test_and_set(__m); } + + inline bool + atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, + memory_order __m) noexcept + { return __a->test_and_set(__m); } + + inline void + atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept + { __a->clear(__m); } + + inline void + atomic_flag_clear_explicit(volatile atomic_flag* __a, + memory_order __m) noexcept + { __a->clear(__m); } + + inline bool + atomic_flag_test_and_set(atomic_flag* __a) noexcept + { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } + + inline bool + atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept + { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } + + inline void + atomic_flag_clear(atomic_flag* __a) noexcept + { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } + + inline void + atomic_flag_clear(volatile atomic_flag* __a) noexcept + { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } + + + // Function templates generally applicable to atomic types. + template + inline bool + atomic_is_lock_free(const atomic<_ITp>* __a) noexcept + { return __a->is_lock_free(); } + + template + inline bool + atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept + { return __a->is_lock_free(); } + + template + inline void + atomic_init(atomic<_ITp>* __a, _ITp __i) noexcept; + + template + inline void + atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept; + + template + inline void + atomic_store_explicit(atomic<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { __a->store(__i, __m); } + + template + inline void + atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { __a->store(__i, __m); } + + template + inline _ITp + atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept + { return __a->load(__m); } + + template + inline _ITp + atomic_load_explicit(const volatile atomic<_ITp>* __a, + memory_order __m) noexcept + { return __a->load(__m); } + + template + inline _ITp + atomic_exchange_explicit(atomic<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->exchange(__i, __m); } + + template + inline _ITp + atomic_exchange_explicit(volatile atomic<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->exchange(__i, __m); } + + template + inline bool + atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2, + memory_order __m1, + memory_order __m2) noexcept + { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } + + template + inline bool + atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2, + memory_order __m1, + memory_order __m2) noexcept + { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } + + template + inline bool + atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2, + memory_order __m1, + memory_order __m2) noexcept + { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } + + template + inline bool + atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2, + memory_order __m1, + memory_order __m2) noexcept + { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } + + + template + inline void + atomic_store(atomic<_ITp>* __a, _ITp __i) noexcept + { atomic_store_explicit(__a, __i, memory_order_seq_cst); } + + template + inline void + atomic_store(volatile atomic<_ITp>* __a, _ITp __i) noexcept + { atomic_store_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_load(const atomic<_ITp>* __a) noexcept + { return atomic_load_explicit(__a, memory_order_seq_cst); } + + template + inline _ITp + atomic_load(const volatile atomic<_ITp>* __a) noexcept + { return atomic_load_explicit(__a, memory_order_seq_cst); } + + template + inline _ITp + atomic_exchange(atomic<_ITp>* __a, _ITp __i) noexcept + { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_exchange(volatile atomic<_ITp>* __a, _ITp __i) noexcept + { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } + + template + inline bool + atomic_compare_exchange_weak(atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2) noexcept + { + return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, + memory_order_seq_cst, + memory_order_seq_cst); + } + + template + inline bool + atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2) noexcept + { + return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, + memory_order_seq_cst, + memory_order_seq_cst); + } + + template + inline bool + atomic_compare_exchange_strong(atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2) noexcept + { + return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, + memory_order_seq_cst, + memory_order_seq_cst); + } + + template + inline bool + atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, + _ITp* __i1, _ITp __i2) noexcept + { + return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, + memory_order_seq_cst, + memory_order_seq_cst); + } + + // Function templates for atomic_integral operations only, using + // __atomic_base. Template argument should be constricted to + // intergral types as specified in the standard, excluding address + // types. + template + inline _ITp + atomic_fetch_add_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_add(__i, __m); } + + template + inline _ITp + atomic_fetch_add_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_add(__i, __m); } + + template + inline _ITp + atomic_fetch_sub_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_sub(__i, __m); } + + template + inline _ITp + atomic_fetch_sub_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_sub(__i, __m); } + + template + inline _ITp + atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_and(__i, __m); } + + template + inline _ITp + atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_and(__i, __m); } + + template + inline _ITp + atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_or(__i, __m); } + + template + inline _ITp + atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_or(__i, __m); } + + template + inline _ITp + atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_xor(__i, __m); } + + template + inline _ITp + atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, + memory_order __m) noexcept + { return __a->fetch_xor(__i, __m); } + + template + inline _ITp + atomic_fetch_add(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_fetch_sub(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_fetch_and(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_fetch_or(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_fetch_xor(__atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } + + template + inline _ITp + atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept + { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } + + + // Partial specializations for pointers. + template + inline _ITp* + atomic_fetch_add_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, + memory_order __m) noexcept + { return __a->fetch_add(__d, __m); } + + template + inline _ITp* + atomic_fetch_add_explicit(volatile atomic<_ITp*>* __a, ptrdiff_t __d, + memory_order __m) noexcept + { return __a->fetch_add(__d, __m); } + + template + inline _ITp* + atomic_fetch_add(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept + { return __a->fetch_add(__d); } + + template + inline _ITp* + atomic_fetch_add(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept + { return __a->fetch_add(__d); } + + template + inline _ITp* + atomic_fetch_sub_explicit(volatile atomic<_ITp*>* __a, + ptrdiff_t __d, memory_order __m) noexcept + { return __a->fetch_sub(__d, __m); } + + template + inline _ITp* + atomic_fetch_sub_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, + memory_order __m) noexcept + { return __a->fetch_sub(__d, __m); } + + template + inline _ITp* + atomic_fetch_sub(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept + { return __a->fetch_sub(__d); } + + template + inline _ITp* + atomic_fetch_sub(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept + { return __a->fetch_sub(__d); } + // @} group atomics + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/auto_ptr.h b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/auto_ptr.h new file mode 100644 index 0000000..73c9d2f --- /dev/null +++ b/tools/arm-none-eabi-gcc/gcc-arm-none-eabi-4_8-2014q1/arm-none-eabi/include/c++/4.8.3/backward/auto_ptr.h @@ -0,0 +1,329 @@ +// auto_ptr implementation -*- C++ -*- + +// Copyright (C) 2007-2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file backward/auto_ptr.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _BACKWARD_AUTO_PTR_H +#define _BACKWARD_AUTO_PTR_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * A wrapper class to provide auto_ptr with reference semantics. + * For example, an auto_ptr can be assigned (or constructed from) + * the result of a function which returns an auto_ptr by value. + * + * All the auto_ptr_ref stuff should happen behind the scenes. + */ + template + struct auto_ptr_ref + { + _Tp1* _M_ptr; + + explicit + auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } + } _GLIBCXX_DEPRECATED; + + + /** + * @brief A simple smart pointer providing strict ownership semantics. + * + * The Standard says: + *

  • r4+}EbWq@JHwSU(m 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

    +hGDxt;jm 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