From 42790112469663cd5e1a61a3b7bb626616b3e0dd Mon Sep 17 00:00:00 2001 From: Lubos Dolezel Date: Wed, 7 Oct 2015 22:38:57 +0200 Subject: [PATCH] Made libcxx & libcxxabi external submodules --- .gitmodules | 6 + CMakeLists.txt | 14 +- external/libcxx | 1 + external/libcxxabi | 1 + libc/include/time.h | 4 +- libcxx/.arcconfig | 4 - libcxx/.gitignore | 54 - libcxx/CMakeLists.txt | 356 - libcxx/CREDITS.TXT | 138 - libcxx/LICENSE.TXT | 76 - libcxx/cmake/Modules/CodeCoverage.cmake | 36 - libcxx/cmake/Modules/HandleLibCXXABI.cmake | 103 - .../Modules/MacroEnsureOutOfSourceBuild.cmake | 18 - libcxx/cmake/config-ix.cmake | 35 - libcxx/include/CMakeLists.txt | 24 - libcxx/include/__bit_reference | 1286 - libcxx/include/__config | 754 - libcxx/include/__debug | 222 - libcxx/include/__functional_03 | 2115 -- libcxx/include/__functional_base | 637 - libcxx/include/__functional_base_03 | 1144 - libcxx/include/__hash_table | 2440 -- libcxx/include/__locale | 1475 - libcxx/include/__mutex_base | 407 - libcxx/include/__refstring | 139 - libcxx/include/__split_buffer | 654 - libcxx/include/__sso_allocator | 79 - libcxx/include/__std_stream | 359 - libcxx/include/__tree | 2310 -- libcxx/include/__tuple | 373 - libcxx/include/__undef___deallocate | 18 - libcxx/include/__undef_min_max | 29 - libcxx/include/algorithm | 5760 --- libcxx/include/array | 331 - libcxx/include/atomic | 1798 - libcxx/include/bitset | 1081 - libcxx/include/cassert | 25 - libcxx/include/ccomplex | 29 - libcxx/include/cctype | 165 - libcxx/include/cerrno | 393 - libcxx/include/cfenv | 82 - libcxx/include/cfloat | 78 - libcxx/include/chrono | 1031 - libcxx/include/cinttypes | 261 - libcxx/include/ciso646 | 25 - libcxx/include/climits | 48 - libcxx/include/clocale | 53 - libcxx/include/cmath | 1697 - libcxx/include/codecvt | 550 - libcxx/include/complex | 1567 - libcxx/include/complex.h | 35 - libcxx/include/condition_variable | 260 - libcxx/include/csetjmp | 52 - libcxx/include/csignal | 58 - libcxx/include/cstdarg | 48 - libcxx/include/cstdbool | 32 - libcxx/include/cstddef | 102 - libcxx/include/cstdint | 191 - libcxx/include/cstdio | 209 - libcxx/include/cstdlib | 178 - libcxx/include/cstring | 112 - libcxx/include/ctgmath | 29 - libcxx/include/ctime | 72 - libcxx/include/cwchar | 225 - libcxx/include/cwctype | 213 - libcxx/include/deque | 2870 -- libcxx/include/exception | 256 - libcxx/include/experimental/__config | 32 - libcxx/include/experimental/chrono | 59 - libcxx/include/experimental/dynarray | 316 - libcxx/include/experimental/optional | 894 - libcxx/include/experimental/ratio | 77 - libcxx/include/experimental/string_view | 812 - libcxx/include/experimental/system_error | 63 - libcxx/include/experimental/tuple | 81 - libcxx/include/experimental/type_traits | 427 - libcxx/include/experimental/utility | 47 - libcxx/include/ext/__hash | 135 - libcxx/include/ext/hash_map | 995 - libcxx/include/ext/hash_set | 661 - libcxx/include/forward_list | 1657 - libcxx/include/fstream | 1457 - libcxx/include/functional | 2452 -- libcxx/include/future | 2629 -- libcxx/include/initializer_list | 118 - libcxx/include/iomanip | 654 - libcxx/include/ios | 1023 - libcxx/include/iosfwd | 199 - libcxx/include/iostream | 64 - libcxx/include/istream | 1732 - libcxx/include/iterator | 1614 - libcxx/include/limits | 813 - libcxx/include/list | 2365 -- libcxx/include/locale | 4474 --- libcxx/include/map | 2076 -- libcxx/include/memory | 5482 --- libcxx/include/module.modulemap | 473 - libcxx/include/mutex | 571 - libcxx/include/new | 186 - libcxx/include/numeric | 197 - libcxx/include/ostream | 1113 - libcxx/include/queue | 717 - libcxx/include/random | 6728 ---- libcxx/include/ratio | 487 - libcxx/include/regex | 6601 ---- libcxx/include/scoped_allocator | 578 - libcxx/include/set | 1217 - libcxx/include/shared_mutex | 426 - libcxx/include/sstream | 977 - libcxx/include/stack | 292 - libcxx/include/stdexcept | 170 - libcxx/include/streambuf | 575 - libcxx/include/string | 4249 --- libcxx/include/strstream | 400 - .../include/support/android/locale_bionic.h | 31 - libcxx/include/support/ibm/limits.h | 99 - libcxx/include/support/ibm/support.h | 54 - libcxx/include/support/ibm/xlocale.h | 326 - libcxx/include/support/newlib/xlocale.h | 63 - .../include/support/solaris/floatingpoint.h | 14 - libcxx/include/support/solaris/wchar.h | 47 - libcxx/include/support/solaris/xlocale.h | 67 - libcxx/include/support/win32/limits_win32.h | 79 - libcxx/include/support/win32/locale_win32.h | 129 - libcxx/include/support/win32/math_win32.h | 117 - libcxx/include/support/win32/support.h | 206 - libcxx/include/support/xlocale/xlocale.h | 194 - libcxx/include/system_error | 642 - libcxx/include/tgmath.h | 29 - libcxx/include/thread | 465 - libcxx/include/tuple | 1137 - libcxx/include/type_traits | 3745 -- libcxx/include/typeindex | 103 - libcxx/include/typeinfo | 168 - libcxx/include/unordered_map | 2074 -- libcxx/include/unordered_set | 1381 - libcxx/include/utility | 755 - libcxx/include/valarray | 4783 --- libcxx/include/vector | 3308 -- libcxx/lib/CMakeLists.txt | 131 - libcxx/lib/buildit | 179 - libcxx/lib/libc++abi.exp | 159 - libcxx/lib/libc++abi2.exp | 310 - libcxx/lib/libc++sjlj-abi.exp | 159 - libcxx/lib/libc++unexp.exp | 19 - libcxx/lib/notweak.exp | 5 - libcxx/lib/weak.exp | 16 - libcxx/src/algorithm.cpp | 91 - libcxx/src/bind.cpp | 30 - libcxx/src/chrono.cpp | 133 - libcxx/src/condition_variable.cpp | 87 - libcxx/src/config_elast.h | 36 - libcxx/src/debug.cpp | 570 - libcxx/src/exception.cpp | 307 - libcxx/src/future.cpp | 306 - libcxx/src/hash.cpp | 570 - libcxx/src/ios.cpp | 466 - libcxx/src/iostream.cpp | 88 - libcxx/src/locale.cpp | 6262 ---- libcxx/src/memory.cpp | 225 - libcxx/src/mutex.cpp | 280 - libcxx/src/new.cpp | 267 - libcxx/src/optional.cpp | 24 - libcxx/src/random.cpp | 152 - libcxx/src/regex.cpp | 333 - libcxx/src/shared_mutex.cpp | 106 - libcxx/src/stdexcept.cpp | 106 - libcxx/src/string.cpp | 528 - libcxx/src/strstream.cpp | 329 - libcxx/src/support/solaris/README | 4 - libcxx/src/support/solaris/mbsnrtowcs.inc | 76 - libcxx/src/support/solaris/wcsnrtombs.inc | 93 - libcxx/src/support/solaris/xlocale.c | 66 - libcxx/src/support/win32/locale_win32.cpp | 105 - libcxx/src/support/win32/support.cpp | 166 - libcxx/src/system_error.cpp | 209 - libcxx/src/thread.cpp | 232 - libcxx/src/typeinfo.cpp | 73 - libcxx/src/utility.cpp | 17 - libcxx/src/valarray.cpp | 54 - libcxx/test/CMakeLists.txt | 87 - libcxx/test/libcxx/__init__.py | 0 libcxx/test/libcxx/compiler.py | 136 - libcxx/test/libcxx/double_include.sh.cpp | 113 - .../dynarray/dynarray.cons/alloc.pass.cpp | 86 - .../dynarray/dynarray.cons/default.pass.cpp | 95 - .../dynarray/dynarray.data/default.pass.cpp | 67 - .../dynarray/dynarray.mutate/default.pass.cpp | 48 - .../dynarray/dynarray.overview/at.pass.cpp | 94 - .../dynarray.overview/begin_end.pass.cpp | 108 - .../dynarray.overview/capacity.pass.cpp | 57 - .../dynarray.overview/front_back.pass.cpp | 68 - .../dynarray.overview/indexing.pass.cpp | 71 - .../dynarray/dynarray.traits/default.pass.cpp | 31 - .../dynarray/dynarray.zero/default.pass.cpp | 50 - .../sequences/dynarray/nothing_to_do.pass.cpp | 12 - .../header.ratio.synop/includes.pass.cpp | 24 - .../utilities/ratio/version.pass.cpp | 20 - .../includes.pass.cpp | 22 - .../utilities/syserror/version.pass.cpp | 20 - .../header.chrono.synop/includes.pass.cpp | 22 - .../utilities/time/version.pass.cpp | 20 - .../header.tuple.synop/includes.pass.cpp | 21 - .../utilities/tuple/version.pass.cpp | 20 - libcxx/test/libcxx/selftest/not_test.sh.cpp | 17 - libcxx/test/libcxx/selftest/test.fail.cpp | 11 - libcxx/test/libcxx/selftest/test.pass.cpp | 13 - libcxx/test/libcxx/selftest/test.sh.cpp | 16 - libcxx/test/libcxx/test/__init__.py | 0 libcxx/test/libcxx/test/config.py | 683 - libcxx/test/libcxx/test/executor.py | 191 - libcxx/test/libcxx/test/format.py | 159 - libcxx/test/libcxx/test/target_info.py | 55 - libcxx/test/libcxx/test/tracing.py | 34 - .../type_traits/convert_to_integral.pass.cpp | 91 - libcxx/test/libcxx/util.py | 46 - libcxx/test/lit.cfg | 51 - libcxx/test/lit.site.cfg.in | 28 - libcxx/test/nothing_to_do.pass.cpp | 13 - .../alg.c.library/tested_elsewhere.pass.cpp | 12 - .../alg.copy/copy.pass.cpp | 73 - .../alg.copy/copy_backward.pass.cpp | 51 - .../alg.copy/copy_if.pass.cpp | 80 - .../alg.copy/copy_n.pass.cpp | 76 - .../alg.fill/fill.pass.cpp | 59 - .../alg.fill/fill_n.pass.cpp | 156 - .../alg.generate/generate.pass.cpp | 47 - .../alg.generate/generate_n.pass.cpp | 50 - .../alg.move/move.pass.cpp | 134 - .../alg.move/move_backward.pass.cpp | 88 - .../alg.partitions/is_partitioned.pass.cpp | 77 - .../alg.partitions/partition.pass.cpp | 104 - .../alg.partitions/partition_copy.pass.cpp | 50 - .../alg.partitions/partition_point.pass.cpp | 76 - .../alg.partitions/stable_partition.pass.cpp | 314 - .../random_shuffle.pass.cpp | 30 - .../random_shuffle_rand.pass.cpp | 37 - .../random_shuffle_urng.pass.cpp | 31 - .../alg.remove/remove.pass.cpp | 83 - .../alg.remove/remove_copy.pass.cpp | 70 - .../alg.remove/remove_copy_if.pass.cpp | 73 - .../alg.remove/remove_if.pass.cpp | 98 - .../alg.replace/replace.pass.cpp | 44 - .../alg.replace/replace_copy.pass.cpp | 72 - .../alg.replace/replace_copy_if.pass.cpp | 74 - .../alg.replace/replace_if.pass.cpp | 45 - .../alg.reverse/reverse.pass.cpp | 60 - .../alg.reverse/reverse_copy.pass.cpp | 81 - .../alg.rotate/rotate.pass.cpp | 439 - .../alg.rotate/rotate_copy.pass.cpp | 134 - .../alg.swap/iter_swap.pass.cpp | 27 - .../alg.swap/swap_ranges.pass.cpp | 159 - .../alg.transform/binary_transform.pass.cpp | 217 - .../alg.transform/unary_transform.pass.cpp | 77 - .../alg.unique/unique.pass.cpp | 189 - .../alg.unique/unique_copy.pass.cpp | 125 - .../alg.unique/unique_copy_pred.pass.cpp | 152 - .../alg.unique/unique_pred.pass.cpp | 231 - .../nothing_to_do.pass.cpp | 12 - .../alg.adjacent.find/adjacent_find.pass.cpp | 35 - .../adjacent_find_pred.pass.cpp | 39 - .../alg.all_of/all_of.pass.cpp | 47 - .../alg.any_of/any_of.pass.cpp | 55 - .../alg.nonmodifying/alg.count/count.pass.cpp | 32 - .../alg.count/count_if.pass.cpp | 36 - .../alg.nonmodifying/alg.equal/equal.pass.cpp | 66 - .../alg.equal/equal_pred.pass.cpp | 87 - .../alg.find.end/find_end.pass.cpp | 57 - .../alg.find.end/find_end_pred.pass.cpp | 86 - .../alg.find.first.of/find_first_of.pass.cpp | 49 - .../find_first_of_pred.pass.cpp | 55 - .../alg.nonmodifying/alg.find/find.pass.cpp | 31 - .../alg.find/find_if.pass.cpp | 35 - .../alg.find/find_if_not.pass.cpp | 35 - .../alg.foreach/test.pass.cpp | 39 - .../is_permutation.pass.cpp | 605 - .../is_permutation_pred.pass.cpp | 729 - .../alg.none_of/none_of.pass.cpp | 55 - .../alg.search/search.pass.cpp | 72 - .../alg.search/search_n.pass.cpp | 77 - .../alg.search/search_n_pred.pass.cpp | 154 - .../alg.search/search_pred.pass.cpp | 111 - .../mismatch/mismatch.pass.cpp | 53 - .../mismatch/mismatch_pred.pass.cpp | 71 - .../alg.nonmodifying/nothing_to_do.pass.cpp | 12 - .../binary.search/binary_search.pass.cpp | 63 - .../binary.search/binary_search_comp.pass.cpp | 64 - .../equal.range/equal_range.pass.cpp | 69 - .../equal.range/equal_range_comp.pass.cpp | 70 - .../lower.bound/lower_bound.pass.cpp | 64 - .../lower.bound/lower_bound_comp.pass.cpp | 65 - .../alg.binary.search/nothing_to_do.pass.cpp | 12 - .../upper.bound/upper_bound.pass.cpp | 64 - .../upper.bound/upper_bound_comp.pass.cpp | 65 - .../is.heap/is_heap.pass.cpp | 521 - .../is.heap/is_heap_comp.pass.cpp | 522 - .../is.heap/is_heap_until.pass.cpp | 521 - .../is.heap/is_heap_until_comp.pass.cpp | 522 - .../make.heap/make_heap.pass.cpp | 39 - .../make.heap/make_heap_comp.pass.cpp | 101 - .../nothing_to_do.pass.cpp | 12 - .../pop.heap/pop_heap.pass.cpp | 39 - .../pop.heap/pop_heap_comp.pass.cpp | 68 - .../push.heap/push_heap.pass.cpp | 38 - .../push.heap/push_heap_comp.pass.cpp | 66 - .../sort.heap/sort_heap.pass.cpp | 40 - .../sort.heap/sort_heap_comp.pass.cpp | 66 - .../lexicographical_compare.pass.cpp | 69 - .../lexicographical_compare_comp.pass.cpp | 73 - .../alg.merge/inplace_merge.pass.cpp | 79 - .../alg.merge/inplace_merge_comp.pass.cpp | 116 - .../alg.sorting/alg.merge/merge.pass.cpp | 224 - .../alg.sorting/alg.merge/merge_comp.pass.cpp | 234 - .../alg.sorting/alg.min.max/max.pass.cpp | 54 - .../alg.sorting/alg.min.max/max_comp.pass.cpp | 56 - .../alg.min.max/max_element.pass.cpp | 66 - .../alg.min.max/max_element_comp.pass.cpp | 85 - .../alg.min.max/max_init_list.pass.cpp | 42 - .../alg.min.max/max_init_list_comp.pass.cpp | 43 - .../alg.sorting/alg.min.max/min.pass.cpp | 54 - .../alg.sorting/alg.min.max/min_comp.pass.cpp | 56 - .../alg.min.max/min_element.pass.cpp | 66 - .../alg.min.max/min_element_comp.pass.cpp | 85 - .../alg.min.max/min_init_list.pass.cpp | 42 - .../alg.min.max/min_init_list_comp.pass.cpp | 43 - .../alg.sorting/alg.min.max/minmax.pass.cpp | 62 - .../alg.min.max/minmax_comp.pass.cpp | 65 - .../alg.min.max/minmax_element.pass.cpp | 83 - .../alg.min.max/minmax_element_comp.pass.cpp | 88 - .../alg.min.max/minmax_init_list.pass.cpp | 39 - .../minmax_init_list_comp.pass.cpp | 77 - .../alg.nth.element/nth_element.pass.cpp | 63 - .../alg.nth.element/nth_element_comp.pass.cpp | 86 - .../next_permutation.pass.cpp | 66 - .../next_permutation_comp.pass.cpp | 68 - .../prev_permutation.pass.cpp | 66 - .../prev_permutation_comp.pass.cpp | 68 - .../includes/includes.pass.cpp | 84 - .../includes/includes_comp.pass.cpp | 85 - .../alg.set.operations/nothing_to_do.pass.cpp | 12 - .../set.difference/set_difference.pass.cpp | 200 - .../set_difference_comp.pass.cpp | 202 - .../set_intersection.pass.cpp | 198 - .../set_intersection_comp.pass.cpp | 200 - .../set_symmetric_difference.pass.cpp | 199 - .../set_symmetric_difference_comp.pass.cpp | 203 - .../set.union/set_union.pass.cpp | 198 - .../set.union/set_union_comp.pass.cpp | 200 - .../alg.sort/is.sorted/is_sorted.pass.cpp | 183 - .../is.sorted/is_sorted_comp.pass.cpp | 184 - .../is.sorted/is_sorted_until.pass.cpp | 183 - .../is.sorted/is_sorted_until_comp.pass.cpp | 184 - .../alg.sort/nothing_to_do.pass.cpp | 12 - .../partial_sort_copy.pass.cpp | 86 - .../partial_sort_copy_comp.pass.cpp | 90 - .../partial.sort/partial_sort.pass.cpp | 63 - .../partial.sort/partial_sort_comp.pass.cpp | 87 - .../alg.sorting/alg.sort/sort/sort.pass.cpp | 150 - .../alg.sort/sort/sort_comp.pass.cpp | 57 - .../alg.sort/stable.sort/stable_sort.pass.cpp | 150 - .../stable.sort/stable_sort_comp.pass.cpp | 83 - .../alg.sorting/nothing_to_do.pass.cpp | 12 - .../algorithms.general/nothing_to_do.pass.cpp | 12 - libcxx/test/std/algorithms/version.pass.cpp | 20 - .../atomic_signal_fence.pass.cpp | 21 - .../atomic_thread_fence.pass.cpp | 21 - .../atomics.flag/atomic_flag_clear.pass.cpp | 36 - .../atomic_flag_clear_explicit.pass.cpp | 60 - .../atomic_flag_test_and_set.pass.cpp | 36 - ...atomic_flag_test_and_set_explicit.pass.cpp | 96 - .../std/atomics/atomics.flag/clear.pass.cpp | 72 - .../atomics/atomics.flag/copy_assign.fail.cpp | 24 - .../atomics/atomics.flag/copy_ctor.fail.cpp | 23 - .../copy_volatile_assign.fail.cpp | 24 - .../std/atomics/atomics.flag/default.pass.cpp | 33 - .../std/atomics/atomics.flag/init.pass.cpp | 25 - .../atomics.flag/test_and_set.pass.cpp | 108 - .../atomics.general/nothing_to_do.pass.cpp | 13 - .../replace_failure_order.pass.cpp | 43 - .../atomics.lockfree/lockfree.pass.cpp | 52 - .../atomics.order/kill_dependency.pass.cpp | 23 - .../atomics.order/memory_order.pass.cpp | 33 - .../atomics.syn/nothing_to_do.pass.cpp | 13 - .../atomics.types.generic/address.pass.cpp | 140 - .../atomics.types.generic/bool.pass.cpp | 237 - .../cstdint_typedefs.pass.cpp | 69 - .../atomics.types.generic/integral.pass.cpp | 203 - .../integral_typedefs.pass.cpp | 50 - .../trivially_copyable.fail.cpp | 70 - .../trivially_copyable.pass.cpp | 77 - .../nothing_to_do.pass.cpp | 13 - .../nothing_to_do.pass.cpp | 13 - .../nothing_to_do.pass.cpp | 13 - .../atomic_compare_exchange_strong.pass.cpp | 88 - ..._compare_exchange_strong_explicit.pass.cpp | 95 - .../atomic_compare_exchange_weak.pass.cpp | 90 - ...ic_compare_exchange_weak_explicit.pass.cpp | 97 - .../atomic_exchange.pass.cpp | 73 - .../atomic_exchange_explicit.pass.cpp | 75 - .../atomic_fetch_add.pass.cpp | 111 - .../atomic_fetch_add_explicit.pass.cpp | 115 - .../atomic_fetch_and.pass.cpp | 64 - .../atomic_fetch_and_explicit.pass.cpp | 66 - .../atomic_fetch_or.pass.cpp | 64 - .../atomic_fetch_or_explicit.pass.cpp | 66 - .../atomic_fetch_sub.pass.cpp | 111 - .../atomic_fetch_sub_explicit.pass.cpp | 116 - .../atomic_fetch_xor.pass.cpp | 64 - .../atomic_fetch_xor_explicit.pass.cpp | 66 - .../atomic_init.pass.cpp | 71 - .../atomic_is_lock_free.pass.cpp | 61 - .../atomic_load.pass.cpp | 71 - .../atomic_load_explicit.pass.cpp | 71 - .../atomic_store.pass.cpp | 71 - .../atomic_store_explicit.pass.cpp | 71 - .../atomic_var_init.pass.cpp | 24 - .../nothing_to_do.pass.cpp | 13 - .../nothing_to_do.pass.cpp | 13 - .../atomics/libcpp-has-no-threads.fail.cpp | 23 - .../atomics/libcpp-has-no-threads.pass.cpp | 18 - libcxx/test/std/atomics/version.pass.cpp | 22 - libcxx/test/std/containers/Copyable.h | 18 - libcxx/test/std/containers/Emplaceable.h | 54 - libcxx/test/std/containers/NotConstructible.h | 39 - .../associative/map/compare.pass.cpp | 32 - .../associative/map/map.access/at.pass.cpp | 154 - .../associative/map/map.access/empty.pass.cpp | 43 - .../map/map.access/index_key.pass.cpp | 105 - .../map/map.access/index_rv_key.pass.cpp | 58 - .../map/map.access/index_tuple.pass.cpp | 33 - .../map/map.access/iterator.pass.cpp | 227 - .../map/map.access/max_size.pass.cpp | 35 - .../associative/map/map.access/size.pass.cpp | 59 - .../associative/map/map.cons/alloc.pass.cpp | 42 - .../map.cons/assign_initializer_list.pass.cpp | 75 - .../associative/map/map.cons/compare.pass.cpp | 40 - .../map/map.cons/compare_alloc.pass.cpp | 45 - .../associative/map/map.cons/copy.pass.cpp | 131 - .../map/map.cons/copy_alloc.pass.cpp | 95 - .../map/map.cons/copy_assign.pass.cpp | 182 - .../associative/map/map.cons/default.pass.cpp | 40 - .../map/map.cons/default_noexcept.pass.cpp | 53 - .../map/map.cons/default_recursive.pass.cpp | 29 - .../map/map.cons/dtor_noexcept.pass.cpp | 51 - .../map/map.cons/initializer_list.pass.cpp | 67 - .../initializer_list_compare.pass.cpp | 69 - .../initializer_list_compare_alloc.pass.cpp | 100 - .../map/map.cons/iter_iter.pass.cpp | 68 - .../map/map.cons/iter_iter_comp.pass.cpp | 73 - .../map.cons/iter_iter_comp_alloc.pass.cpp | 108 - .../associative/map/map.cons/move.pass.cpp | 120 - .../map/map.cons/move_alloc.pass.cpp | 234 - .../map/map.cons/move_assign.pass.cpp | 190 - .../map.cons/move_assign_noexcept.pass.cpp | 53 - .../map/map.cons/move_noexcept.pass.cpp | 51 - .../map/map.modifiers/clear.pass.cpp | 63 - .../map/map.modifiers/emplace.pass.cpp | 165 - .../map/map.modifiers/emplace_hint.pass.cpp | 160 - .../map/map.modifiers/erase_iter.pass.cpp | 237 - .../map.modifiers/erase_iter_iter.pass.cpp | 157 - .../map/map.modifiers/erase_key.pass.cpp | 275 - .../map/map.modifiers/insert_cv.pass.cpp | 89 - .../insert_initializer_list.pass.cpp | 71 - .../map/map.modifiers/insert_iter_cv.pass.cpp | 81 - .../map.modifiers/insert_iter_iter.pass.cpp | 77 - .../map/map.modifiers/insert_iter_rv.pass.cpp | 87 - .../map/map.modifiers/insert_rv.pass.cpp | 93 - .../associative/map/map.ops/count.pass.cpp | 173 - .../map/map.ops/equal_range.pass.cpp | 437 - .../associative/map/map.ops/find.pass.cpp | 240 - .../map/map.ops/lower_bound.pass.cpp | 336 - .../map/map.ops/upper_bound.pass.cpp | 335 - .../map/map.special/member_swap.pass.cpp | 176 - .../map/map.special/non_member_swap.pass.cpp | 281 - .../map/map.special/swap_noexcept.pass.cpp | 60 - .../containers/associative/map/types.pass.cpp | 70 - .../associative/map/version.pass.cpp | 20 - .../associative/multimap/empty.pass.cpp | 43 - .../associative/multimap/iterator.pass.cpp | 231 - .../associative/multimap/max_size.pass.cpp | 35 - .../multimap/multimap.cons/alloc.pass.cpp | 42 - .../assign_initializer_list.pass.cpp | 85 - .../multimap/multimap.cons/compare.pass.cpp | 40 - .../multimap.cons/compare_alloc.pass.cpp | 45 - .../multimap/multimap.cons/copy.pass.cpp | 104 - .../multimap.cons/copy_alloc.pass.cpp | 77 - .../multimap.cons/copy_assign.pass.cpp | 125 - .../multimap/multimap.cons/default.pass.cpp | 40 - .../multimap.cons/default_noexcept.pass.cpp | 53 - .../multimap.cons/default_recursive.pass.cpp | 29 - .../multimap.cons/dtor_noexcept.pass.cpp | 51 - .../multimap.cons/initializer_list.pass.cpp | 83 - .../initializer_list_compare.pass.cpp | 91 - .../initializer_list_compare_alloc.pass.cpp | 129 - .../multimap/multimap.cons/iter_iter.pass.cpp | 112 - .../multimap.cons/iter_iter_comp.pass.cpp | 86 - .../iter_iter_comp_alloc.pass.cpp | 91 - .../multimap/multimap.cons/move.pass.cpp | 132 - .../multimap.cons/move_alloc.pass.cpp | 234 - .../multimap.cons/move_assign.pass.cpp | 190 - .../move_assign_noexcept.pass.cpp | 53 - .../multimap.cons/move_noexcept.pass.cpp | 51 - .../multimap.modifiers/clear.pass.cpp | 63 - .../multimap.modifiers/emplace.pass.cpp | 150 - .../multimap.modifiers/emplace_hint.pass.cpp | 160 - .../multimap.modifiers/erase_iter.pass.cpp | 279 - .../erase_iter_iter.pass.cpp | 157 - .../multimap.modifiers/erase_key.pass.cpp | 153 - .../multimap.modifiers/insert_cv.pass.cpp | 81 - .../insert_initializer_list.pass.cpp | 91 - .../insert_iter_cv.pass.cpp | 81 - .../insert_iter_iter.pass.cpp | 101 - .../insert_iter_rv.pass.cpp | 87 - .../multimap.modifiers/insert_rv.pass.cpp | 85 - .../multimap/multimap.ops/count.pass.cpp | 159 - .../multimap.ops/equal_range.pass.cpp | 264 - .../multimap/multimap.ops/find.pass.cpp | 209 - .../multimap.ops/lower_bound.pass.cpp | 221 - .../multimap.ops/upper_bound.pass.cpp | 221 - .../multimap.special/member_swap.pass.cpp | 176 - .../multimap.special/non_member_swap.pass.cpp | 281 - .../multimap.special/swap_noexcept.pass.cpp | 60 - .../associative/multimap/scary.pass.cpp | 24 - .../associative/multimap/size.pass.cpp | 59 - .../associative/multimap/types.pass.cpp | 70 - .../associative/multiset/clear.pass.cpp | 63 - .../associative/multiset/count.pass.cpp | 160 - .../associative/multiset/emplace.pass.cpp | 83 - .../multiset/emplace_hint.pass.cpp | 83 - .../associative/multiset/empty.pass.cpp | 43 - .../associative/multiset/equal_range.pass.cpp | 263 - .../associative/multiset/erase_iter.pass.cpp | 181 - .../multiset/erase_iter_iter.pass.cpp | 141 - .../associative/multiset/erase_key.pass.cpp | 129 - .../associative/multiset/find.pass.cpp | 240 - .../associative/multiset/insert_cv.pass.cpp | 73 - .../multiset/insert_initializer_list.pass.cpp | 61 - .../multiset/insert_iter_cv.pass.cpp | 73 - .../multiset/insert_iter_iter.pass.cpp | 85 - .../multiset/insert_iter_rv.pass.cpp | 76 - .../associative/multiset/insert_rv.pass.cpp | 76 - .../associative/multiset/iterator.pass.cpp | 215 - .../associative/multiset/lower_bound.pass.cpp | 223 - .../associative/multiset/max_size.pass.cpp | 35 - .../multiset/multiset.cons/alloc.pass.cpp | 29 - .../assign_initializer_list.pass.cpp | 57 - .../multiset/multiset.cons/compare.pass.cpp | 28 - .../multiset.cons/compare_alloc.pass.cpp | 31 - .../multiset/multiset.cons/copy.pass.cpp | 118 - .../multiset.cons/copy_alloc.pass.cpp | 68 - .../multiset.cons/copy_assign.pass.cpp | 138 - .../multiset/multiset.cons/default.pass.cpp | 40 - .../multiset.cons/default_noexcept.pass.cpp | 53 - .../multiset.cons/dtor_noexcept.pass.cpp | 51 - .../multiset.cons/initializer_list.pass.cpp | 73 - .../initializer_list_compare.pass.cpp | 38 - .../initializer_list_compare_alloc.pass.cpp | 41 - .../multiset/multiset.cons/iter_iter.pass.cpp | 83 - .../multiset.cons/iter_iter_alloc.pass.cpp | 92 - .../multiset.cons/iter_iter_comp.pass.cpp | 53 - .../multiset/multiset.cons/move.pass.cpp | 119 - .../multiset.cons/move_alloc.pass.cpp | 187 - .../multiset.cons/move_assign.pass.cpp | 186 - .../move_assign_noexcept.pass.cpp | 53 - .../multiset.cons/move_noexcept.pass.cpp | 51 - .../multiset.special/member_swap.pass.cpp | 177 - .../multiset.special/non_member_swap.pass.cpp | 165 - .../multiset.special/swap_noexcept.pass.cpp | 60 - .../associative/multiset/scary.pass.cpp | 24 - .../associative/multiset/size.pass.cpp | 59 - .../associative/multiset/types.pass.cpp | 70 - .../associative/multiset/upper_bound.pass.cpp | 222 - .../containers/associative/set/clear.pass.cpp | 63 - .../containers/associative/set/count.pass.cpp | 168 - .../associative/set/emplace.pass.cpp | 90 - .../associative/set/emplace_hint.pass.cpp | 83 - .../containers/associative/set/empty.pass.cpp | 43 - .../associative/set/equal_range.pass.cpp | 370 - .../associative/set/erase_iter.pass.cpp | 181 - .../associative/set/erase_iter_iter.pass.cpp | 141 - .../associative/set/erase_key.pass.cpp | 203 - .../containers/associative/set/find.pass.cpp | 240 - .../associative/set/insert_cv.pass.cpp | 81 - .../set/insert_initializer_list.pass.cpp | 61 - .../associative/set/insert_iter_cv.pass.cpp | 73 - .../associative/set/insert_iter_iter.pass.cpp | 73 - .../associative/set/insert_iter_rv.pass.cpp | 76 - .../associative/set/insert_rv.pass.cpp | 84 - .../associative/set/iterator.pass.cpp | 211 - .../associative/set/lower_bound.pass.cpp | 337 - .../associative/set/max_size.pass.cpp | 35 - .../associative/set/set.cons/alloc.pass.cpp | 29 - .../set.cons/assign_initializer_list.pass.cpp | 57 - .../associative/set/set.cons/compare.pass.cpp | 28 - .../set/set.cons/compare_alloc.pass.cpp | 31 - .../associative/set/set.cons/copy.pass.cpp | 94 - .../set/set.cons/copy_alloc.pass.cpp | 56 - .../set/set.cons/copy_assign.pass.cpp | 109 - .../associative/set/set.cons/default.pass.cpp | 40 - .../set/set.cons/default_noexcept.pass.cpp | 53 - .../set/set.cons/dtor_noexcept.pass.cpp | 51 - .../set/set.cons/initializer_list.pass.cpp | 55 - .../initializer_list_compare.pass.cpp | 38 - .../initializer_list_compare_alloc.pass.cpp | 63 - .../set/set.cons/iter_iter.pass.cpp | 71 - .../set/set.cons/iter_iter_alloc.pass.cpp | 84 - .../set/set.cons/iter_iter_comp.pass.cpp | 47 - .../associative/set/set.cons/move.pass.cpp | 107 - .../set/set.cons/move_alloc.pass.cpp | 188 - .../set/set.cons/move_assign.pass.cpp | 186 - .../set.cons/move_assign_noexcept.pass.cpp | 53 - .../set/set.cons/move_noexcept.pass.cpp | 51 - .../set/set.special/member_swap.pass.cpp | 177 - .../set/set.special/non_member_swap.pass.cpp | 165 - .../set/set.special/swap_noexcept.pass.cpp | 60 - .../containers/associative/set/size.pass.cpp | 59 - .../containers/associative/set/types.pass.cpp | 70 - .../associative/set/upper_bound.pass.cpp | 336 - .../associative/set/version.pass.cpp | 20 - .../tree_balance_after_insert.pass.cpp | 1616 - .../associative/tree_left_rotate.pass.cpp | 98 - .../associative/tree_remove.pass.cpp | 1648 - .../associative/tree_right_rotate.pass.cpp | 98 - .../container.adaptors/nothing_to_do.pass.cpp | 12 - .../priqueue.cons.alloc/ctor_alloc.pass.cpp | 48 - .../ctor_comp_alloc.pass.cpp | 48 - .../ctor_comp_cont_alloc.pass.cpp | 62 - .../ctor_comp_rcont_alloc.pass.cpp | 61 - .../ctor_copy_alloc.pass.cpp | 58 - .../ctor_move_alloc.pass.cpp | 68 - .../priqueue.cons/assign_copy.pass.cpp | 36 - .../priqueue.cons/assign_move.pass.cpp | 42 - .../priqueue.cons/ctor_comp.pass.cpp | 27 - .../ctor_comp_container.pass.cpp | 34 - .../ctor_comp_rcontainer.pass.cpp | 40 - .../priqueue.cons/ctor_copy.pass.cpp | 35 - .../priqueue.cons/ctor_default.pass.cpp | 27 - .../priqueue.cons/ctor_iter_iter.pass.cpp | 25 - .../ctor_iter_iter_comp.pass.cpp | 27 - .../ctor_iter_iter_comp_cont.pass.cpp | 27 - .../ctor_iter_iter_comp_rcont.pass.cpp | 32 - .../priqueue.cons/ctor_move.pass.cpp | 41 - .../priqueue.cons/default_noexcept.pass.cpp | 31 - .../priqueue.cons/dtor_noexcept.pass.cpp | 27 - .../move_assign_noexcept.pass.cpp | 31 - .../priqueue.cons/move_noexcept.pass.cpp | 31 - .../priqueue.members/emplace.pass.cpp | 32 - .../priqueue.members/empty.pass.cpp | 27 - .../priqueue.members/pop.pass.cpp | 34 - .../priqueue.members/push.pass.cpp | 28 - .../priqueue.members/push_rvalue.pass.cpp | 32 - .../priqueue.members/size.pass.cpp | 27 - .../priqueue.members/swap.pass.cpp | 30 - .../priqueue.members/top.pass.cpp | 28 - .../priqueue.special/swap.pass.cpp | 32 - .../priqueue.special/swap_noexcept.pass.cpp | 32 - .../priority.queue/types.pass.cpp | 60 - .../queue.cons.alloc/ctor_alloc.pass.cpp | 38 - .../ctor_container_alloc.pass.cpp | 57 - .../ctor_queue_alloc.pass.cpp | 52 - .../ctor_rcontainer_alloc.pass.cpp | 59 - .../ctor_rqueue_alloc.pass.cpp | 60 - .../queue/queue.cons/ctor_container.pass.cpp | 37 - .../queue/queue.cons/ctor_copy.pass.cpp | 32 - .../queue/queue.cons/ctor_default.pass.cpp | 28 - .../queue/queue.cons/ctor_move.pass.cpp | 41 - .../queue/queue.cons/ctor_rcontainer.pass.cpp | 39 - .../queue.cons/default_noexcept.pass.cpp | 30 - .../queue/queue.cons/dtor_noexcept.pass.cpp | 27 - .../queue.cons/move_assign_noexcept.pass.cpp | 30 - .../queue/queue.cons/move_noexcept.pass.cpp | 30 - .../queue/queue.defn/assign_copy.pass.cpp | 33 - .../queue/queue.defn/assign_move.pass.cpp | 42 - .../queue/queue.defn/back.pass.cpp | 26 - .../queue/queue.defn/back_const.pass.cpp | 27 - .../queue/queue.defn/emplace.pass.cpp | 30 - .../queue/queue.defn/empty.pass.cpp | 25 - .../queue/queue.defn/front.pass.cpp | 26 - .../queue/queue.defn/front_const.pass.cpp | 27 - .../queue/queue.defn/pop.pass.cpp | 37 - .../queue/queue.defn/push.pass.cpp | 32 - .../queue/queue.defn/push_rv.pass.cpp | 36 - .../queue/queue.defn/size.pass.cpp | 23 - .../queue/queue.defn/swap.pass.cpp | 36 - .../queue/queue.defn/types.pass.cpp | 58 - .../queue/queue.ops/eq.pass.cpp | 40 - .../queue/queue.ops/lt.pass.cpp | 45 - .../queue/queue.special/swap.pass.cpp | 37 - .../queue.special/swap_noexcept.pass.cpp | 31 - .../container.adaptors/queue/version.pass.cpp | 20 - .../stack.cons.alloc/ctor_alloc.pass.cpp | 38 - .../ctor_container_alloc.pass.cpp | 57 - .../stack.cons.alloc/ctor_copy_alloc.pass.cpp | 52 - .../ctor_rcontainer_alloc.pass.cpp | 59 - .../ctor_rqueue_alloc.pass.cpp | 60 - .../stack/stack.cons/ctor_container.pass.cpp | 37 - .../stack/stack.cons/ctor_copy.pass.cpp | 32 - .../stack/stack.cons/ctor_default.pass.cpp | 28 - .../stack/stack.cons/ctor_move.pass.cpp | 41 - .../stack/stack.cons/ctor_rcontainer.pass.cpp | 39 - .../stack.cons/default_noexcept.pass.cpp | 30 - .../stack/stack.cons/dtor_noexcept.pass.cpp | 27 - .../stack.cons/move_assign_noexcept.pass.cpp | 30 - .../stack/stack.cons/move_noexcept.pass.cpp | 30 - .../stack/stack.defn/assign_copy.pass.cpp | 33 - .../stack/stack.defn/assign_move.pass.cpp | 42 - .../stack/stack.defn/emplace.pass.cpp | 29 - .../stack/stack.defn/empty.pass.cpp | 25 - .../stack/stack.defn/pop.pass.cpp | 34 - .../stack/stack.defn/push.pass.cpp | 29 - .../stack/stack.defn/push_rv.pass.cpp | 33 - .../stack/stack.defn/size.pass.cpp | 23 - .../stack/stack.defn/swap.pass.cpp | 36 - .../stack/stack.defn/top.pass.cpp | 26 - .../stack/stack.defn/top_const.pass.cpp | 27 - .../stack/stack.defn/types.pass.cpp | 59 - .../stack/stack.ops/eq.pass.cpp | 40 - .../stack/stack.ops/lt.pass.cpp | 45 - .../stack/stack.special/swap.pass.cpp | 37 - .../stack.special/swap_noexcept.pass.cpp | 31 - .../container.adaptors/stack/version.pass.cpp | 20 - .../nothing_to_do.pass.cpp | 12 - .../associative.reqmts/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../sequence.reqmts/nothing_to_do.pass.cpp | 12 - .../unord.req/nothing_to_do.pass.cpp | 12 - .../unord.req.except/nothing_to_do.pass.cpp | 12 - .../containers.general/nothing_to_do.pass.cpp | 12 - .../std/containers/nothing_to_do.pass.cpp | 12 - .../array/array.cons/default.pass.cpp | 31 - .../array.cons/initializer_list.pass.cpp | 34 - .../sequences/array/array.data/data.pass.cpp | 35 - .../array/array.data/data_const.pass.cpp | 35 - .../sequences/array/array.fill/fill.pass.cpp | 36 - .../sequences/array/array.size/size.pass.cpp | 53 - .../array/array.special/swap.pass.cpp | 43 - .../sequences/array/array.swap/swap.pass.cpp | 43 - .../sequences/array/array.tuple/get.fail.cpp | 25 - .../sequences/array/array.tuple/get.pass.cpp | 52 - .../array/array.tuple/get_const.pass.cpp | 37 - .../array/array.tuple/get_rv.pass.cpp | 30 - .../array/array.tuple/tuple_element.pass.cpp | 54 - .../array/array.tuple/tuple_size.pass.cpp | 42 - .../array.zero/tested_elsewhere.pass.cpp | 18 - .../containers/sequences/array/at.pass.cpp | 67 - .../containers/sequences/array/begin.pass.cpp | 32 - .../sequences/array/front_back.pass.cpp | 62 - .../sequences/array/indexing.pass.cpp | 60 - .../sequences/array/iterators.pass.cpp | 110 - .../containers/sequences/array/types.pass.cpp | 62 - .../sequences/array/version.pass.cpp | 20 - .../deque/deque.capacity/access.pass.cpp | 91 - .../deque/deque.capacity/resize_size.pass.cpp | 86 - .../deque.capacity/resize_size_value.pass.cpp | 86 - .../deque.capacity/shrink_to_fit.pass.cpp | 77 - .../sequences/deque/deque.cons/alloc.pass.cpp | 38 - .../assign_initializer_list.pass.cpp | 43 - .../deque.cons/assign_iter_iter.pass.cpp | 109 - .../deque.cons/assign_size_value.pass.cpp | 85 - .../sequences/deque/deque.cons/copy.pass.cpp | 61 - .../deque/deque.cons/copy_alloc.pass.cpp | 51 - .../deque/deque.cons/default.pass.cpp | 41 - .../deque.cons/default_noexcept.pass.cpp | 50 - .../deque/deque.cons/dtor_noexcept.pass.cpp | 52 - .../deque.cons/initializer_list.pass.cpp | 41 - .../initializer_list_alloc.pass.cpp | 44 - .../deque/deque.cons/iter_iter.pass.cpp | 62 - .../deque/deque.cons/iter_iter_alloc.pass.cpp | 51 - .../sequences/deque/deque.cons/move.pass.cpp | 72 - .../deque/deque.cons/move_alloc.pass.cpp | 87 - .../deque/deque.cons/move_assign.pass.cpp | 91 - .../deque.cons/move_assign_noexcept.pass.cpp | 52 - .../deque/deque.cons/move_noexcept.pass.cpp | 50 - .../deque/deque.cons/op_equal.pass.cpp | 63 - .../op_equal_initializer_list.pass.cpp | 43 - .../sequences/deque/deque.cons/size.pass.cpp | 113 - .../deque/deque.cons/size_value.pass.cpp | 51 - .../deque.cons/size_value_alloc.pass.cpp | 67 - .../deque/deque.modifiers/emplace.pass.cpp | 112 - .../deque.modifiers/emplace_back.pass.cpp | 87 - .../deque.modifiers/emplace_front.pass.cpp | 87 - .../deque/deque.modifiers/erase_iter.pass.cpp | 90 - .../deque.modifiers/erase_iter_iter.pass.cpp | 96 - .../insert_iter_initializer_list.pass.cpp | 63 - .../deque.modifiers/insert_iter_iter.pass.cpp | 295 - .../deque.modifiers/insert_rvalue.pass.cpp | 118 - .../insert_size_value.pass.cpp | 159 - .../deque.modifiers/insert_value.pass.cpp | 139 - .../deque/deque.modifiers/pop_back.pass.cpp | 84 - .../deque/deque.modifiers/pop_front.pass.cpp | 84 - .../deque/deque.modifiers/push_back.pass.cpp | 73 - .../push_back_exception_safety.pass.cpp | 101 - .../deque.modifiers/push_back_rvalue.pass.cpp | 80 - .../deque/deque.modifiers/push_front.pass.cpp | 83 - .../push_front_exception_safety.pass.cpp | 101 - .../push_front_rvalue.pass.cpp | 90 - .../deque/deque.special/copy.pass.cpp | 88 - .../deque.special/copy_backward.pass.cpp | 87 - .../deque/deque.special/move.pass.cpp | 87 - .../deque.special/move_backward.pass.cpp | 87 - .../deque/deque.special/swap.pass.cpp | 110 - .../deque.special/swap_noexcept.pass.cpp | 60 - .../sequences/deque/iterators.pass.cpp | 79 - .../containers/sequences/deque/types.pass.cpp | 90 - .../sequences/deque/version.pass.cpp | 20 - .../forwardlist.access/front.pass.cpp | 61 - .../forwardlist.cons/alloc.fail.cpp | 30 - .../forwardlist.cons/alloc.pass.cpp | 41 - .../forwardlist.cons/assign_copy.pass.cpp | 146 - .../forwardlist.cons/assign_init.pass.cpp | 70 - .../forwardlist.cons/assign_move.pass.cpp | 199 - .../forwardlist.cons/assign_op_init.pass.cpp | 70 - .../forwardlist.cons/assign_range.pass.cpp | 78 - .../assign_size_value.pass.cpp | 68 - .../forwardlist.cons/copy.pass.cpp | 69 - .../forwardlist.cons/copy_alloc.pass.cpp | 67 - .../forwardlist.cons/default.pass.cpp | 41 - .../default_noexcept.pass.cpp | 50 - .../default_recursive.pass.cpp | 25 - .../forwardlist.cons/dtor_noexcept.pass.cpp | 52 - .../forwardlist.cons/init.pass.cpp | 43 - .../forwardlist.cons/init_alloc.pass.cpp | 48 - .../forwardlist.cons/move.pass.cpp | 73 - .../forwardlist.cons/move_alloc.pass.cpp | 73 - .../move_assign_noexcept.pass.cpp | 52 - .../forwardlist.cons/move_noexcept.pass.cpp | 50 - .../forwardlist.cons/range.pass.cpp | 48 - .../forwardlist.cons/range_alloc.pass.cpp | 54 - .../forwardlist.cons/size.fail.cpp | 35 - .../forwardlist.cons/size.pass.cpp | 66 - .../forwardlist.cons/size_value.pass.cpp | 45 - .../size_value_alloc.pass.cpp | 50 - .../forwardlist.iter/before_begin.pass.cpp | 104 - .../forwardlist.iter/iterators.pass.cpp | 145 - .../forwardlist.modifiers/clear.pass.cpp | 62 - .../emplace_after.pass.cpp | 89 - .../emplace_front.pass.cpp | 50 - .../erase_after_many.pass.cpp | 155 - .../erase_after_one.pass.cpp | 97 - .../insert_after_const.pass.cpp | 87 - .../insert_after_init.pass.cpp | 75 - .../insert_after_range.pass.cpp | 80 - .../insert_after_rv.pass.cpp | 90 - .../insert_after_size_value.pass.cpp | 73 - .../forwardlist.modifiers/pop_front.pass.cpp | 78 - .../push_front_const.pass.cpp | 47 - .../push_front_exception_safety.pass.cpp | 73 - .../push_front_rv.pass.cpp | 50 - .../resize_size.pass.cpp | 114 - .../resize_size_value.pass.cpp | 84 - .../forwardlist.ops/merge.pass.cpp | 48 - .../forwardlist.ops/merge_pred.pass.cpp | 49 - .../forwardlist.ops/remove.pass.cpp | 155 - .../forwardlist.ops/remove_if.pass.cpp | 155 - .../forwardlist.ops/reverse.pass.cpp | 42 - .../forwardlist/forwardlist.ops/sort.pass.cpp | 47 - .../forwardlist.ops/sort_pred.pass.cpp | 48 - .../splice_after_flist.pass.cpp | 75 - .../forwardlist.ops/splice_after_one.pass.cpp | 140 - .../splice_after_range.pass.cpp | 169 - .../forwardlist.ops/unique.pass.cpp | 120 - .../forwardlist.ops/unique_pred.pass.cpp | 125 - .../sequences/forwardlist/max_size.pass.cpp | 35 - .../sequences/forwardlist/types.pass.cpp | 62 - .../sequences/forwardlist/version.pass.cpp | 20 - .../sequences/list/db_back.pass.cpp | 56 - .../sequences/list/db_cback.pass.cpp | 52 - .../sequences/list/db_cfront.pass.cpp | 52 - .../sequences/list/db_front.pass.cpp | 56 - .../sequences/list/db_iterators_6.pass.cpp | 58 - .../sequences/list/db_iterators_7.pass.cpp | 58 - .../sequences/list/db_iterators_8.pass.cpp | 54 - .../sequences/list/db_iterators_9.pass.cpp | 67 - .../sequences/list/iterators.pass.cpp | 159 - .../list/list.capacity/resize_size.pass.cpp | 81 - .../list.capacity/resize_size_value.pass.cpp | 53 - .../list/list.cons/assign_copy.pass.cpp | 44 - .../assign_initializer_list.pass.cpp | 45 - .../list/list.cons/assign_move.pass.cpp | 82 - .../sequences/list/list.cons/copy.pass.cpp | 54 - .../list/list.cons/copy_alloc.pass.cpp | 42 - .../sequences/list/list.cons/default.pass.cpp | 58 - .../list/list.cons/default_noexcept.pass.cpp | 50 - .../list.cons/default_stack_alloc.pass.cpp | 48 - .../list/list.cons/dtor_noexcept.pass.cpp | 52 - .../list/list.cons/initializer_list.pass.cpp | 43 - .../list.cons/initializer_list_alloc.pass.cpp | 46 - .../list/list.cons/input_iterator.pass.cpp | 77 - .../sequences/list/list.cons/move.pass.cpp | 74 - .../list/list.cons/move_alloc.pass.cpp | 78 - .../list.cons/move_assign_noexcept.pass.cpp | 52 - .../list/list.cons/move_noexcept.pass.cpp | 50 - .../op_equal_initializer_list.pass.cpp | 44 - .../list/list.cons/size_type.pass.cpp | 103 - .../list/list.cons/size_value_alloc.pass.cpp | 79 - .../list/list.modifiers/clear.pass.cpp | 35 - .../list/list.modifiers/emplace.pass.cpp | 88 - .../list/list.modifiers/emplace_back.pass.cpp | 66 - .../list.modifiers/emplace_front.pass.cpp | 66 - .../list/list.modifiers/erase_iter.pass.cpp | 65 - .../list.modifiers/erase_iter_db1.pass.cpp | 51 - .../list.modifiers/erase_iter_db2.pass.cpp | 53 - .../list.modifiers/erase_iter_iter.pass.cpp | 84 - .../erase_iter_iter_db1.pass.cpp | 51 - .../erase_iter_iter_db2.pass.cpp | 51 - .../erase_iter_iter_db3.pass.cpp | 51 - .../erase_iter_iter_db4.pass.cpp | 49 - .../insert_iter_initializer_list.pass.cpp | 67 - .../insert_iter_iter_iter.pass.cpp | 185 - .../insert_iter_rvalue.pass.cpp | 68 - .../insert_iter_size_value.pass.cpp | 106 - .../list.modifiers/insert_iter_value.pass.cpp | 112 - .../list/list.modifiers/pop_back.pass.cpp | 55 - .../list/list.modifiers/pop_front.pass.cpp | 43 - .../list/list.modifiers/push_back.pass.cpp | 37 - .../push_back_exception_safety.pass.cpp | 73 - .../list.modifiers/push_back_rvalue.pass.cpp | 46 - .../list/list.modifiers/push_front.pass.cpp | 37 - .../push_front_exception_safety.pass.cpp | 73 - .../list.modifiers/push_front_rvalue.pass.cpp | 46 - .../sequences/list/list.ops/merge.pass.cpp | 41 - .../list/list.ops/merge_comp.pass.cpp | 42 - .../sequences/list/list.ops/remove.pass.cpp | 69 - .../list/list.ops/remove_if.pass.cpp | 64 - .../sequences/list/list.ops/reverse.pass.cpp | 37 - .../sequences/list/list.ops/sort.pass.cpp | 37 - .../list/list.ops/sort_comp.pass.cpp | 38 - .../list/list.ops/splice_pos_list.pass.cpp | 803 - .../list.ops/splice_pos_list_iter.pass.cpp | 357 - .../splice_pos_list_iter_iter.pass.cpp | 237 - .../sequences/list/list.ops/unique.pass.cpp | 37 - .../list/list.ops/unique_pred.pass.cpp | 42 - .../list/list.special/db_swap_1.pass.cpp | 59 - .../sequences/list/list.special/swap.pass.cpp | 146 - .../list/list.special/swap_noexcept.pass.cpp | 60 - .../containers/sequences/list/types.pass.cpp | 48 - .../sequences/list/version.pass.cpp | 20 - .../sequences/nothing_to_do.pass.cpp | 12 - .../vector.bool/assign_copy.pass.cpp | 44 - .../assign_initializer_list.pass.cpp | 43 - .../vector.bool/assign_move.pass.cpp | 81 - .../sequences/vector.bool/capacity.pass.cpp | 44 - .../vector.bool/construct_default.pass.cpp | 59 - .../vector.bool/construct_iter_iter.pass.cpp | 48 - .../construct_iter_iter_alloc.pass.cpp | 55 - .../vector.bool/construct_size.pass.cpp | 64 - .../vector.bool/construct_size_value.pass.cpp | 37 - .../construct_size_value_alloc.pass.cpp | 39 - .../sequences/vector.bool/copy.pass.cpp | 65 - .../sequences/vector.bool/copy_alloc.pass.cpp | 62 - .../vector.bool/default_noexcept.pass.cpp | 49 - .../vector.bool/dtor_noexcept.pass.cpp | 51 - .../sequences/vector.bool/emplace.pass.cpp | 68 - .../vector.bool/emplace_back.pass.cpp | 57 - .../sequences/vector.bool/erase_iter.pass.cpp | 65 - .../vector.bool/erase_iter_iter.pass.cpp | 85 - .../sequences/vector.bool/find.pass.cpp | 40 - .../vector.bool/initializer_list.pass.cpp | 41 - .../initializer_list_alloc.pass.cpp | 44 - .../insert_iter_initializer_list.pass.cpp | 65 - .../insert_iter_iter_iter.pass.cpp | 126 - .../insert_iter_size_value.pass.cpp | 81 - .../vector.bool/insert_iter_value.pass.cpp | 77 - .../sequences/vector.bool/iterators.pass.cpp | 123 - .../sequences/vector.bool/move.pass.cpp | 64 - .../sequences/vector.bool/move_alloc.pass.cpp | 77 - .../vector.bool/move_assign_noexcept.pass.cpp | 51 - .../vector.bool/move_noexcept.pass.cpp | 49 - .../op_equal_initializer_list.pass.cpp | 43 - .../sequences/vector.bool/push_back.pass.cpp | 48 - .../sequences/vector.bool/reserve.pass.cpp | 54 - .../vector.bool/resize_size.pass.cpp | 50 - .../vector.bool/resize_size_value.pass.cpp | 52 - .../vector.bool/shrink_to_fit.pass.cpp | 38 - .../sequences/vector.bool/swap.pass.cpp | 98 - .../vector.bool/swap_noexcept.pass.cpp | 59 - .../sequences/vector.bool/types.pass.cpp | 72 - .../vector.bool/vector_bool.pass.cpp | 52 - .../containers/sequences/vector/asan.pass.cpp | 52 - .../sequences/vector/asan_throw.pass.cpp | 232 - .../vector/const_value_type.pass.cpp | 22 - .../sequences/vector/db_back.pass.cpp | 56 - .../sequences/vector/db_cback.pass.cpp | 52 - .../sequences/vector/db_cfront.pass.cpp | 52 - .../sequences/vector/db_cindex.pass.cpp | 54 - .../sequences/vector/db_front.pass.cpp | 56 - .../sequences/vector/db_index.pass.cpp | 56 - .../sequences/vector/db_iterators_2.pass.cpp | 54 - .../sequences/vector/db_iterators_3.pass.cpp | 54 - .../sequences/vector/db_iterators_4.pass.cpp | 56 - .../sequences/vector/db_iterators_5.pass.cpp | 60 - .../sequences/vector/db_iterators_6.pass.cpp | 58 - .../sequences/vector/db_iterators_7.pass.cpp | 58 - .../sequences/vector/db_iterators_8.pass.cpp | 54 - .../sequences/vector/iterators.pass.cpp | 165 - .../sequences/vector/types.pass.cpp | 86 - .../vector/vector.capacity/capacity.pass.cpp | 48 - .../vector/vector.capacity/reserve.pass.cpp | 69 - .../vector.capacity/resize_size.pass.cpp | 83 - .../resize_size_value.pass.cpp | 76 - .../vector.capacity/shrink_to_fit.pass.cpp | 62 - .../vector/vector.capacity/swap.pass.cpp | 50 - .../vector/vector.cons/assign_copy.pass.cpp | 44 - .../assign_initializer_list.pass.cpp | 55 - .../vector/vector.cons/assign_move.pass.cpp | 101 - .../vector.cons/assign_size_value.pass.cpp | 56 - .../vector.cons/construct_default.pass.cpp | 78 - .../vector.cons/construct_iter_iter.pass.cpp | 56 - .../construct_iter_iter_alloc.pass.cpp | 71 - .../vector.cons/construct_size.pass.cpp | 73 - .../vector.cons/construct_size_value.pass.cpp | 40 - .../construct_size_value_alloc.pass.cpp | 39 - .../vector/vector.cons/copy.pass.cpp | 78 - .../vector/vector.cons/copy_alloc.pass.cpp | 64 - .../vector.cons/default.recursive.pass.cpp | 23 - .../vector.cons/default_noexcept.pass.cpp | 50 - .../vector/vector.cons/dtor_noexcept.pass.cpp | 52 - .../vector.cons/initializer_list.pass.cpp | 43 - .../initializer_list_alloc.pass.cpp | 47 - .../vector/vector.cons/move.pass.cpp | 103 - .../vector/vector.cons/move_alloc.pass.cpp | 99 - .../vector.cons/move_assign_noexcept.pass.cpp | 52 - .../vector/vector.cons/move_noexcept.pass.cpp | 50 - .../op_equal_initializer_list.pass.cpp | 46 - .../vector/vector.data/data.pass.cpp | 44 - .../vector/vector.data/data_const.pass.cpp | 44 - .../vector/vector.modifiers/emplace.pass.cpp | 160 - .../vector.modifiers/emplace_back.pass.cpp | 107 - .../vector.modifiers/emplace_extra.pass.cpp | 62 - .../vector.modifiers/erase_iter.pass.cpp | 75 - .../vector.modifiers/erase_iter_db1.pass.cpp | 51 - .../vector.modifiers/erase_iter_db2.pass.cpp | 53 - .../vector.modifiers/erase_iter_iter.pass.cpp | 128 - .../erase_iter_iter_db1.pass.cpp | 51 - .../erase_iter_iter_db2.pass.cpp | 51 - .../erase_iter_iter_db3.pass.cpp | 51 - .../erase_iter_iter_db4.pass.cpp | 49 - .../insert_iter_initializer_list.pass.cpp | 68 - .../insert_iter_iter_iter.pass.cpp | 190 - .../insert_iter_rvalue.pass.cpp | 86 - .../insert_iter_size_value.pass.cpp | 132 - .../insert_iter_value.pass.cpp | 116 - .../vector/vector.modifiers/pop_back.pass.cpp | 55 - .../vector.modifiers/push_back.pass.cpp | 108 - .../push_back_exception_safety.pass.cpp | 86 - .../push_back_rvalue.pass.cpp | 111 - .../vector/vector.special/db_swap_1.pass.cpp | 56 - .../vector/vector.special/swap.pass.cpp | 188 - .../vector.special/swap_noexcept.pass.cpp | 60 - .../sequences/vector/version.pass.cpp | 20 - libcxx/test/std/containers/stack_allocator.h | 66 - libcxx/test/std/containers/test_compare.h | 36 - libcxx/test/std/containers/test_hash.h | 32 - .../std/containers/unord/next_prime.pass.cpp | 51 - .../unord/unord.map/bucket.pass.cpp | 77 - .../unord/unord.map/bucket_count.pass.cpp | 80 - .../unord/unord.map/bucket_size.pass.cpp | 81 - .../unord/unord.map/compare.pass.cpp | 42 - .../containers/unord/unord.map/count.pass.cpp | 65 - .../unord/unord.map/db_iterators_7.pass.cpp | 60 - .../unord/unord.map/db_iterators_8.pass.cpp | 56 - .../unord.map/db_local_iterators_7.pass.cpp | 57 - .../unord.map/db_local_iterators_8.pass.cpp | 54 - .../containers/unord/unord.map/eq.pass.cpp | 163 - .../unord.map/equal_range_const.pass.cpp | 75 - .../unord.map/equal_range_non_const.pass.cpp | 75 - .../unord/unord.map/find_const.pass.cpp | 71 - .../unord/unord.map/find_non_const.pass.cpp | 71 - .../unord/unord.map/iterators.pass.cpp | 128 - .../unord/unord.map/load_factor.pass.cpp | 77 - .../unord/unord.map/local_iterators.pass.cpp | 421 - .../unord/unord.map/max_bucket_count.pass.cpp | 43 - .../unord/unord.map/max_load_factor.pass.cpp | 71 - .../unord/unord.map/max_size.pass.cpp | 36 - .../unord/unord.map/rehash.pass.cpp | 91 - .../unord/unord.map/reserve.pass.cpp | 91 - .../unord/unord.map/swap_member.pass.cpp | 572 - .../containers/unord/unord.map/types.pass.cpp | 72 - .../unord.map.cnstr/allocator.pass.cpp | 111 - .../unord.map.cnstr/assign_copy.pass.cpp | 185 - .../unord.map.cnstr/assign_init.pass.cpp | 97 - .../unord.map.cnstr/assign_move.pass.cpp | 229 - .../unord.map/unord.map.cnstr/copy.pass.cpp | 151 - .../unord.map.cnstr/copy_alloc.pass.cpp | 110 - .../unord.map.cnstr/default.pass.cpp | 78 - .../unord.map.cnstr/default_noexcept.pass.cpp | 70 - .../unord.map.cnstr/dtor_noexcept.pass.cpp | 67 - .../unord.map/unord.map.cnstr/init.pass.cpp | 162 - .../unord.map.cnstr/init_size.pass.cpp | 100 - .../unord.map.cnstr/init_size_hash.pass.cpp | 102 - .../init_size_hash_equal.pass.cpp | 105 - .../init_size_hash_equal_allocator.pass.cpp | 107 - .../unord.map/unord.map.cnstr/move.pass.cpp | 199 - .../unord.map.cnstr/move_alloc.pass.cpp | 157 - .../move_assign_noexcept.pass.cpp | 69 - .../unord.map.cnstr/move_noexcept.pass.cpp | 66 - .../unord.map/unord.map.cnstr/range.pass.cpp | 170 - .../unord.map.cnstr/range_size.pass.cpp | 105 - .../unord.map.cnstr/range_size_hash.pass.cpp | 108 - .../range_size_hash_equal.pass.cpp | 110 - .../range_size_hash_equal_allocator.pass.cpp | 113 - .../unord.map/unord.map.cnstr/size.fail.cpp | 69 - .../unord.map/unord.map.cnstr/size.pass.cpp | 69 - .../unord.map.cnstr/size_hash.pass.cpp | 73 - .../unord.map.cnstr/size_hash_equal.pass.cpp | 75 - .../size_hash_equal_allocator.pass.cpp | 77 - .../unord.map/unord.map.elem/at.pass.cpp | 134 - .../unord.map/unord.map.elem/index.pass.cpp | 115 - .../unord.map.elem/index_tuple.pass.cpp | 41 - .../unord.map.swap/db_swap_1.pass.cpp | 44 - .../unord.map.swap/swap_noexcept.pass.cpp | 73 - .../unord.map.swap/swap_non_member.pass.cpp | 572 - .../unorder.map.modifiers/clear.pass.cpp | 61 - .../unorder.map.modifiers/emplace.pass.cpp | 80 - .../emplace_hint.pass.cpp | 93 - .../erase_const_iter.pass.cpp | 69 - .../erase_iter_db1.pass.cpp | 39 - .../erase_iter_db2.pass.cpp | 42 - .../erase_iter_iter_db1.pass.cpp | 41 - .../erase_iter_iter_db2.pass.cpp | 41 - .../erase_iter_iter_db3.pass.cpp | 41 - .../erase_iter_iter_db4.pass.cpp | 40 - .../unorder.map.modifiers/erase_key.pass.cpp | 177 - .../erase_range.pass.cpp | 99 - .../insert_const_lvalue.pass.cpp | 86 - .../insert_hint_const_lvalue.pass.cpp | 97 - .../insert_hint_rvalue.pass.cpp | 156 - .../insert_init.pass.cpp | 72 - .../insert_range.pass.cpp | 71 - .../insert_rvalue.pass.cpp | 152 - .../unord/unord.map/version.pass.cpp | 20 - .../unord/unord.multimap/bucket.pass.cpp | 77 - .../unord.multimap/bucket_count.pass.cpp | 49 - .../unord/unord.multimap/bucket_size.pass.cpp | 85 - .../unord/unord.multimap/count.pass.cpp | 71 - .../unord.multimap/db_iterators_7.pass.cpp | 60 - .../unord.multimap/db_iterators_8.pass.cpp | 56 - .../db_local_iterators_7.pass.cpp | 57 - .../db_local_iterators_8.pass.cpp | 54 - .../unord/unord.multimap/eq.pass.cpp | 181 - .../unord.multimap/equal_range_const.pass.cpp | 97 - .../equal_range_non_const.pass.cpp | 97 - .../unord/unord.multimap/find_const.pass.cpp | 71 - .../unord.multimap/find_non_const.pass.cpp | 71 - .../unord/unord.multimap/iterators.fail.cpp | 69 - .../unord/unord.multimap/iterators.pass.cpp | 134 - .../unord/unord.multimap/load_factor.pass.cpp | 77 - .../unord.multimap/local_iterators.fail.cpp | 286 - .../unord.multimap/local_iterators.pass.cpp | 549 - .../unord.multimap/max_bucket_count.pass.cpp | 43 - .../unord.multimap/max_load_factor.pass.cpp | 71 - .../unord/unord.multimap/max_size.pass.cpp | 36 - .../unord/unord.multimap/rehash.pass.cpp | 119 - .../unord/unord.multimap/reserve.pass.cpp | 93 - .../unord/unord.multimap/scary.pass.cpp | 24 - .../unord/unord.multimap/swap_member.pass.cpp | 585 - .../unord/unord.multimap/types.pass.cpp | 72 - .../unord.multimap.cnstr/allocator.pass.cpp | 111 - .../unord.multimap.cnstr/assign_copy.pass.cpp | 227 - .../unord.multimap.cnstr/assign_init.pass.cpp | 146 - .../unord.multimap.cnstr/assign_move.pass.cpp | 306 - .../unord.multimap.cnstr/copy.pass.cpp | 193 - .../unord.multimap.cnstr/copy_alloc.pass.cpp | 138 - .../unord.multimap.cnstr/default.pass.cpp | 78 - .../default_noexcept.pass.cpp | 70 - .../dtor_noexcept.pass.cpp | 67 - .../unord.multimap.cnstr/init.pass.cpp | 254 - .../unord.multimap.cnstr/init_size.pass.cpp | 144 - .../init_size_hash.pass.cpp | 146 - .../init_size_hash_equal.pass.cpp | 149 - .../init_size_hash_equal_allocator.pass.cpp | 151 - .../unord.multimap.cnstr/move.pass.cpp | 243 - .../unord.multimap.cnstr/move_alloc.pass.cpp | 228 - .../move_assign_noexcept.pass.cpp | 69 - .../move_noexcept.pass.cpp | 66 - .../unord.multimap.cnstr/range.pass.cpp | 263 - .../unord.multimap.cnstr/range_size.pass.cpp | 149 - .../range_size_hash.pass.cpp | 152 - .../range_size_hash_equal.pass.cpp | 154 - .../range_size_hash_equal_allocator.pass.cpp | 157 - .../unord.multimap.cnstr/size.fail.cpp | 69 - .../unord.multimap.cnstr/size.pass.cpp | 69 - .../unord.multimap.cnstr/size_hash.pass.cpp | 73 - .../size_hash_equal.pass.cpp | 75 - .../size_hash_equal_allocator.pass.cpp | 77 - .../unord.multimap.modifiers/clear.pass.cpp | 61 - .../unord.multimap.modifiers/emplace.pass.cpp | 74 - .../emplace_hint.pass.cpp | 109 - .../erase_const_iter.pass.cpp | 117 - .../erase_iter_db1.pass.cpp | 39 - .../erase_iter_db2.pass.cpp | 42 - .../erase_iter_iter_db1.pass.cpp | 41 - .../erase_iter_iter_db2.pass.cpp | 41 - .../erase_iter_iter_db3.pass.cpp | 41 - .../erase_iter_iter_db4.pass.cpp | 40 - .../erase_key.pass.cpp | 388 - .../erase_range.pass.cpp | 179 - .../insert_const_lvalue.pass.cpp | 78 - .../insert_hint_const_lvalue.pass.cpp | 97 - .../insert_hint_rvalue.pass.cpp | 156 - .../insert_init.pass.cpp | 122 - .../insert_range.pass.cpp | 121 - .../insert_rvalue.pass.cpp | 136 - .../unord.multimap.swap/db_swap_1.pass.cpp | 44 - .../swap_noexcept.pass.cpp | 73 - .../swap_non_member.pass.cpp | 584 - .../unord/unord.multiset/bucket.pass.cpp | 76 - .../unord.multiset/bucket_count.pass.cpp | 79 - .../unord/unord.multiset/bucket_size.pass.cpp | 84 - .../unord/unord.multiset/clear.pass.cpp | 60 - .../unord/unord.multiset/count.pass.cpp | 70 - .../unord.multiset/db_iterators_7.pass.cpp | 58 - .../unord.multiset/db_iterators_8.pass.cpp | 54 - .../db_local_iterators_7.pass.cpp | 57 - .../db_local_iterators_8.pass.cpp | 54 - .../unord/unord.multiset/emplace.pass.cpp | 64 - .../unord.multiset/emplace_hint.pass.cpp | 80 - .../unord/unord.multiset/eq.pass.cpp | 180 - .../unord.multiset/equal_range_const.pass.cpp | 90 - .../equal_range_non_const.pass.cpp | 90 - .../unord.multiset/erase_const_iter.pass.cpp | 70 - .../unord.multiset/erase_iter_db1.pass.cpp | 38 - .../unord.multiset/erase_iter_db2.pass.cpp | 41 - .../erase_iter_iter_db1.pass.cpp | 40 - .../erase_iter_iter_db2.pass.cpp | 40 - .../erase_iter_iter_db3.pass.cpp | 40 - .../erase_iter_iter_db4.pass.cpp | 39 - .../unord/unord.multiset/erase_key.pass.cpp | 176 - .../unord/unord.multiset/erase_range.pass.cpp | 94 - .../unord/unord.multiset/find_const.pass.cpp | 68 - .../unord.multiset/find_non_const.pass.cpp | 68 - .../insert_const_lvalue.pass.cpp | 70 - .../insert_hint_const_lvalue.pass.cpp | 89 - .../insert_hint_rvalue.pass.cpp | 138 - .../unord/unord.multiset/insert_init.pass.cpp | 71 - .../unord.multiset/insert_range.pass.cpp | 70 - .../unord.multiset/insert_rvalue.pass.cpp | 118 - .../unord/unord.multiset/iterators.fail.cpp | 67 - .../unord/unord.multiset/iterators.pass.cpp | 127 - .../unord/unord.multiset/load_factor.pass.cpp | 76 - .../unord.multiset/local_iterators.fail.cpp | 261 - .../unord.multiset/local_iterators.pass.cpp | 500 - .../unord.multiset/max_bucket_count.pass.cpp | 38 - .../unord.multiset/max_load_factor.pass.cpp | 70 - .../unord/unord.multiset/max_size.pass.cpp | 36 - .../unord/unord.multiset/rehash.pass.cpp | 90 - .../unord/unord.multiset/reserve.pass.cpp | 90 - .../unord/unord.multiset/scary.pass.cpp | 24 - .../unord/unord.multiset/swap_member.pass.cpp | 571 - .../unord/unord.multiset/types.pass.cpp | 69 - .../unord.multiset.cnstr/allocator.pass.cpp | 109 - .../unord.multiset.cnstr/assign_copy.pass.cpp | 209 - .../unord.multiset.cnstr/assign_init.pass.cpp | 97 - .../unord.multiset.cnstr/assign_move.pass.cpp | 286 - .../unord.multiset.cnstr/copy.pass.cpp | 171 - .../unord.multiset.cnstr/copy_alloc.pass.cpp | 123 - .../unord.multiset.cnstr/default.pass.cpp | 74 - .../default_noexcept.pass.cpp | 70 - .../dtor_noexcept.pass.cpp | 67 - .../unord.multiset.cnstr/init.pass.cpp | 163 - .../unord.multiset.cnstr/init_size.pass.cpp | 97 - .../init_size_hash.pass.cpp | 100 - .../init_size_hash_equal.pass.cpp | 102 - .../init_size_hash_equal_allocator.pass.cpp | 104 - .../unord.multiset.cnstr/move.pass.cpp | 194 - .../unord.multiset.cnstr/move_alloc.pass.cpp | 213 - .../move_assign_noexcept.pass.cpp | 69 - .../move_noexcept.pass.cpp | 66 - .../unord.multiset.cnstr/range.pass.cpp | 167 - .../unord.multiset.cnstr/range_size.pass.cpp | 101 - .../range_size_hash.pass.cpp | 104 - .../range_size_hash_equal.pass.cpp | 106 - .../range_size_hash_equal_allocator.pass.cpp | 109 - .../unord.multiset.cnstr/size.fail.cpp | 65 - .../unord.multiset.cnstr/size.pass.cpp | 65 - .../unord.multiset.cnstr/size_hash.pass.cpp | 69 - .../size_hash_equal.pass.cpp | 71 - .../size_hash_equal_allocator.pass.cpp | 73 - .../unord.multiset.swap/db_swap_1.pass.cpp | 43 - .../swap_noexcept.pass.cpp | 73 - .../swap_non_member.pass.cpp | 571 - .../unord/unord.set/bucket.pass.cpp | 75 - .../unord/unord.set/bucket_count.pass.cpp | 77 - .../unord/unord.set/bucket_size.pass.cpp | 79 - .../containers/unord/unord.set/clear.pass.cpp | 59 - .../containers/unord/unord.set/count.pass.cpp | 69 - .../unord/unord.set/db_iterators_7.pass.cpp | 58 - .../unord/unord.set/db_iterators_8.pass.cpp | 54 - .../unord.set/db_local_iterators_7.pass.cpp | 57 - .../unord.set/db_local_iterators_8.pass.cpp | 54 - .../unord/unord.set/emplace.pass.cpp | 70 - .../unord/unord.set/emplace_hint.pass.cpp | 80 - .../containers/unord/unord.set/eq.pass.cpp | 159 - .../unord.set/equal_range_const.pass.cpp | 81 - .../unord.set/equal_range_non_const.pass.cpp | 81 - .../unord/unord.set/erase_const_iter.pass.cpp | 67 - .../unord/unord.set/erase_iter_db1.pass.cpp | 38 - .../unord/unord.set/erase_iter_db2.pass.cpp | 41 - .../unord.set/erase_iter_iter_db1.pass.cpp | 40 - .../unord.set/erase_iter_iter_db2.pass.cpp | 40 - .../unord.set/erase_iter_iter_db3.pass.cpp | 40 - .../unord.set/erase_iter_iter_db4.pass.cpp | 39 - .../unord/unord.set/erase_key.pass.cpp | 175 - .../unord/unord.set/erase_range.pass.cpp | 93 - .../unord/unord.set/find_const.pass.cpp | 67 - .../unord/unord.set/find_non_const.pass.cpp | 67 - .../unord.set/insert_const_lvalue.pass.cpp | 78 - .../insert_hint_const_lvalue.pass.cpp | 89 - .../unord.set/insert_hint_rvalue.pass.cpp | 138 - .../unord/unord.set/insert_init.pass.cpp | 71 - .../unord/unord.set/insert_range.pass.cpp | 70 - .../unord/unord.set/insert_rvalue.pass.cpp | 134 - .../unord/unord.set/iterators.fail.cpp | 67 - .../unord/unord.set/iterators.pass.cpp | 127 - .../unord/unord.set/load_factor.pass.cpp | 76 - .../unord/unord.set/local_iterators.fail.cpp | 261 - .../unord/unord.set/local_iterators.pass.cpp | 388 - .../unord/unord.set/max_bucket_count.pass.cpp | 38 - .../unord/unord.set/max_load_factor.pass.cpp | 70 - .../unord/unord.set/max_size.pass.cpp | 36 - .../unord/unord.set/rehash.pass.cpp | 90 - .../unord/unord.set/reserve.pass.cpp | 90 - .../unord/unord.set/swap_member.pass.cpp | 571 - .../containers/unord/unord.set/types.pass.cpp | 69 - .../unord.set.cnstr/allocator.pass.cpp | 109 - .../unord.set.cnstr/assign_copy.pass.cpp | 184 - .../unord.set.cnstr/assign_init.pass.cpp | 97 - .../unord.set.cnstr/assign_move.pass.cpp | 225 - .../unord.set/unord.set.cnstr/copy.pass.cpp | 147 - .../unord.set.cnstr/copy_alloc.pass.cpp | 107 - .../unord.set.cnstr/default.pass.cpp | 74 - .../unord.set.cnstr/default_noexcept.pass.cpp | 70 - .../unord.set.cnstr/dtor_noexcept.pass.cpp | 67 - .../unord.set/unord.set.cnstr/init.pass.cpp | 163 - .../unord.set.cnstr/init_size.pass.cpp | 97 - .../unord.set.cnstr/init_size_hash.pass.cpp | 100 - .../init_size_hash_equal.pass.cpp | 102 - .../init_size_hash_equal_allocator.pass.cpp | 104 - .../unord.set/unord.set.cnstr/move.pass.cpp | 194 - .../unord.set.cnstr/move_alloc.pass.cpp | 156 - .../move_assign_noexcept.pass.cpp | 69 - .../unord.set.cnstr/move_noexcept.pass.cpp | 66 - .../unord.set/unord.set.cnstr/range.pass.cpp | 168 - .../unord.set.cnstr/range_size.pass.cpp | 101 - .../unord.set.cnstr/range_size_hash.pass.cpp | 104 - .../range_size_hash_equal.pass.cpp | 106 - .../range_size_hash_equal_allocator.pass.cpp | 109 - .../unord.set/unord.set.cnstr/size.fail.cpp | 45 - .../unord.set/unord.set.cnstr/size.pass.cpp | 65 - .../unord.set.cnstr/size_hash.pass.cpp | 69 - .../unord.set.cnstr/size_hash_equal.pass.cpp | 71 - .../size_hash_equal_allocator.pass.cpp | 73 - .../unord.set.swap/db_swap_1.pass.cpp | 43 - .../unord.set.swap/swap_noexcept.pass.cpp | 73 - .../unord.set.swap/swap_non_member.pass.cpp | 571 - .../unord/unord.set/version.pass.cpp | 20 - .../test/std/depr/depr.auto.ptr/auto.ptr/A.h | 30 - .../test/std/depr/depr.auto.ptr/auto.ptr/AB.h | 41 - .../auto.ptr.cons/assignment.fail.cpp | 44 - .../auto.ptr.cons/assignment.pass.cpp | 44 - .../auto.ptr/auto.ptr.cons/convert.fail.cpp | 40 - .../auto.ptr/auto.ptr.cons/convert.pass.cpp | 40 - .../auto.ptr.cons/convert_assignment.fail.cpp | 47 - .../auto.ptr.cons/convert_assignment.pass.cpp | 47 - .../auto.ptr/auto.ptr.cons/copy.fail.cpp | 38 - .../auto.ptr/auto.ptr.cons/copy.pass.cpp | 38 - .../auto.ptr/auto.ptr.cons/explicit.fail.cpp | 40 - .../auto.ptr/auto.ptr.cons/pointer.pass.cpp | 40 - .../assign_from_auto_ptr_ref.pass.cpp | 40 - .../convert_from_auto_ptr_ref.pass.cpp | 39 - .../convert_to_auto_ptr.pass.cpp | 36 - .../convert_to_auto_ptr_ref.pass.cpp | 33 - .../auto.ptr/auto.ptr.members/arrow.pass.cpp | 37 - .../auto.ptr/auto.ptr.members/deref.pass.cpp | 37 - .../auto.ptr.members/release.pass.cpp | 38 - .../auto.ptr/auto.ptr.members/reset.pass.cpp | 54 - .../auto.ptr/element_type.pass.cpp | 36 - .../depr/depr.auto.ptr/nothing_to_do.pass.cpp | 12 - .../std/depr/depr.c.headers/assert_h.pass.cpp | 20 - .../std/depr/depr.c.headers/ciso646.pass.cpp | 20 - .../depr/depr.c.headers/complex.h.pass.cpp | 21 - .../std/depr/depr.c.headers/ctype_h.pass.cpp | 103 - .../std/depr/depr.c.headers/errno_h.pass.cpp | 33 - .../std/depr/depr.c.headers/fenv_h.pass.cpp | 76 - .../std/depr/depr.c.headers/float_h.pass.cpp | 140 - .../depr/depr.c.headers/inttypes_h.pass.cpp | 643 - .../std/depr/depr.c.headers/iso646_h.pass.cpp | 17 - .../std/depr/depr.c.headers/limits_h.pass.cpp | 92 - .../std/depr/depr.c.headers/locale_h.pass.cpp | 48 - .../std/depr/depr.c.headers/math_h.pass.cpp | 683 - .../std/depr/depr.c.headers/setjmp_h.pass.cpp | 20 - .../std/depr/depr.c.headers/signal_h.pass.cpp | 57 - .../std/depr/depr.c.headers/stdarg_h.pass.cpp | 35 - .../depr/depr.c.headers/stdbool_h.pass.cpp | 32 - .../std/depr/depr.c.headers/stddef_h.pass.cpp | 37 - .../std/depr/depr.c.headers/stdint_h.pass.cpp | 291 - .../std/depr/depr.c.headers/stdio_h.pass.cpp | 138 - .../std/depr/depr.c.headers/stdlib_h.pass.cpp | 82 - .../std/depr/depr.c.headers/string_h.pass.cpp | 48 - .../std/depr/depr.c.headers/tgmath_h.pass.cpp | 23 - .../std/depr/depr.c.headers/time_h.pass.cpp | 40 - .../std/depr/depr.c.headers/uchar_h.pass.cpp | 19 - .../std/depr/depr.c.headers/wchar_h.pass.cpp | 104 - .../std/depr/depr.c.headers/wctype_h.pass.cpp | 114 - .../pointer_to_binary_function.pass.cpp | 26 - .../pointer_to_unary_function.pass.cpp | 26 - .../ptr_fun1.pass.cpp | 25 - .../ptr_fun2.pass.cpp | 25 - .../const_mem_fun.pass.cpp | 31 - .../const_mem_fun1.pass.cpp | 31 - .../const_mem_fun1_ref_t.pass.cpp | 33 - .../const_mem_fun1_t.pass.cpp | 33 - .../const_mem_fun_ref.pass.cpp | 31 - .../const_mem_fun_ref1.pass.cpp | 31 - .../const_mem_fun_ref_t.pass.cpp | 33 - .../const_mem_fun_t.pass.cpp | 33 - .../mem_fun.pass.cpp | 31 - .../mem_fun1.pass.cpp | 31 - .../mem_fun1_ref_t.pass.cpp | 33 - .../mem_fun1_t.pass.cpp | 33 - .../mem_fun_ref.pass.cpp | 31 - .../mem_fun_ref1.pass.cpp | 31 - .../mem_fun_ref_t.pass.cpp | 33 - .../mem_fun_t.pass.cpp | 33 - .../depr.adaptors/nothing_to_do.pass.cpp | 12 - .../depr.base/binary_function.pass.cpp | 28 - .../depr.base/unary_function.pass.cpp | 26 - .../nothing_to_do.pass.cpp | 12 - .../depr/depr.ios.members/io_state.pass.cpp | 25 - .../depr/depr.ios.members/open_mode.pass.cpp | 25 - .../depr/depr.ios.members/seek_dir.pass.cpp | 25 - .../depr/depr.ios.members/streamoff.pass.cpp | 25 - .../depr/depr.ios.members/streampos.pass.cpp | 24 - .../depr.lib.bind.1st/bind1st.pass.cpp | 24 - .../depr.lib.bind.2nd/bind2nd.pass.cpp | 24 - .../depr.lib.binder.1st/binder1st.pass.cpp | 58 - .../depr.lib.binder.2nd/binder2nd.pass.cpp | 58 - .../depr.lib.binders/nothing_to_do.pass.cpp | 12 - .../std/depr/depr.lib.binders/test_func.h | 33 - .../depr.istrstream.cons/ccp.pass.cpp | 43 - .../depr.istrstream.cons/ccp_size.pass.cpp | 43 - .../depr.istrstream.cons/cp.pass.cpp | 43 - .../depr.istrstream.cons/cp_size.pass.cpp | 43 - .../depr.istrstream.members/rdbuf.pass.cpp | 27 - .../depr.istrstream.members/str.pass.cpp | 26 - .../depr.istrstream/types.pass.cpp | 23 - .../cp_size_mode.pass.cpp | 41 - .../depr.ostrstream.cons/default.pass.cpp | 28 - .../depr.ostrstream.members/freeze.pass.cpp | 34 - .../depr.ostrstream.members/pcount.pass.cpp | 27 - .../depr.ostrstream.members/rdbuf.pass.cpp | 28 - .../depr.ostrstream.members/str.pass.cpp | 27 - .../depr.ostrstream/types.pass.cpp | 23 - .../depr.strstream.cons/cp_size_mode.pass.cpp | 59 - .../depr.strstream.cons/default.pass.cpp | 35 - .../depr.strstream.dest/rdbuf.pass.cpp | 28 - .../depr.strstream.oper/freeze.pass.cpp | 34 - .../depr.strstream.oper/pcount.pass.cpp | 27 - .../depr.strstream.oper/str.pass.cpp | 27 - .../depr.strstream/types.pass.cpp | 32 - .../depr.strstreambuf.cons/ccp_size.pass.cpp | 40 - .../cp_size_cp.pass.cpp | 96 - .../depr.strstreambuf.cons/cscp_size.pass.cpp | 40 - .../depr.strstreambuf.cons/cucp_size.pass.cpp | 40 - .../custom_alloc.pass.cpp | 51 - .../depr.strstreambuf.cons/default.pass.cpp | 31 - .../scp_size_scp.pass.cpp | 96 - .../ucp_size_ucp.pass.cpp | 96 - .../depr.strstreambuf.members/freeze.pass.cpp | 28 - .../depr.strstreambuf.members/pcount.pass.cpp | 32 - .../depr.strstreambuf.members/str.pass.cpp | 28 - .../overflow.pass.cpp | 47 - .../pbackfail.pass.cpp | 62 - .../seekoff.pass.cpp | 57 - .../seekpos.pass.cpp | 39 - .../setbuf.pass.cpp | 27 - .../underflow.pass.cpp | 51 - .../depr.strstreambuf/types.pass.cpp | 21 - .../depr/depr.str.strstreams/version.pass.cpp | 20 - .../nothing_to_do.pass.cpp | 12 - .../set.unexpected/get_unexpected.pass.cpp | 39 - .../set.unexpected/set_unexpected.pass.cpp | 35 - .../unexpected_handler.pass.cpp | 19 - .../unexpected/unexpected.pass.cpp | 26 - libcxx/test/std/depr/nothing_to_do.pass.cpp | 12 - .../diagnostics/assertions/cassert.pass.cpp | 24 - .../nothing_to_do.pass.cpp | 12 - .../std/diagnostics/errno/cerrno.pass.cpp | 349 - .../std/diagnostics/nothing_to_do.pass.cpp | 12 - .../domain.error/domain_error.pass.cpp | 42 - .../invalid_argument.pass.cpp | 42 - .../length.error/length_error.pass.cpp | 42 - .../logic.error/logic_error.pass.cpp | 42 - .../out.of.range/out_of_range.pass.cpp | 42 - .../overflow.error/overflow_error.pass.cpp | 42 - .../range.error/range_error.pass.cpp | 42 - .../runtime.error/runtime_error.pass.cpp | 42 - .../underflow.error/underflow_error.pass.cpp | 42 - .../std.exceptions/version.pass.cpp | 20 - .../test/std/diagnostics/syserr/errc.pass.cpp | 104 - .../eq_error_code_error_code.pass.cpp | 106 - .../syserr.errcat/nothing_to_do.pass.cpp | 12 - .../syserr.errcat.derived/message.pass.cpp | 34 - .../default_ctor.pass.cpp | 40 - .../syserr.errcat.nonvirtuals/eq.pass.cpp | 26 - .../syserr.errcat.nonvirtuals/lt.pass.cpp | 26 - .../syserr.errcat.nonvirtuals/neq.pass.cpp | 26 - .../generic_category.pass.cpp | 25 - .../system_category.pass.cpp | 29 - .../error_category.pass.cpp | 19 - .../default_error_condition.pass.cpp | 25 - .../equivalent_error_code_int.pass.cpp | 24 - .../equivalent_int_error_condition.pass.cpp | 25 - .../syserr.errcode/nothing_to_do.pass.cpp | 12 - .../ErrorCodeEnum.pass.cpp | 44 - .../default.pass.cpp | 24 - .../int_error_category.pass.cpp | 31 - .../ErrorCodeEnum.pass.cpp | 45 - .../syserr.errcode.modifiers/assign.pass.cpp | 33 - .../syserr.errcode.modifiers/clear.pass.cpp | 30 - .../syserr.errcode.nonmembers/lt.pass.cpp | 27 - .../make_error_code.pass.cpp | 26 - .../stream_inserter.pass.cpp | 27 - .../syserr.errcode.observers/bool.pass.cpp | 30 - .../category.pass.cpp | 23 - .../default_error_condition.pass.cpp | 31 - .../syserr.errcode.observers/message.pass.cpp | 24 - .../syserr.errcode.observers/value.pass.cpp | 23 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../ErrorConditionEnum.pass.cpp | 26 - .../default.pass.cpp | 24 - .../int_error_category.pass.cpp | 31 - .../ErrorConditionEnum.pass.cpp | 27 - .../assign.pass.cpp | 33 - .../clear.pass.cpp | 30 - .../lt.pass.cpp | 27 - .../make_error_condition.pass.cpp | 26 - .../bool.pass.cpp | 30 - .../category.pass.cpp | 23 - .../message.pass.cpp | 24 - .../value.pass.cpp | 23 - .../nothing_to_do.pass.cpp | 12 - .../syserr/syserr.hash/error_code.pass.cpp | 42 - .../syserr.syserr/nothing_to_do.pass.cpp | 12 - .../ctor_error_code.pass.cpp | 29 - ...tor_error_code_const_char_pointer.pass.cpp | 30 - .../ctor_error_code_string.pass.cpp | 30 - .../ctor_int_error_category.pass.cpp | 29 - ...error_category_const_char_pointer.pass.cpp | 31 - .../ctor_int_error_category_string.pass.cpp | 31 - .../nothing_to_do.pass.cpp | 12 - .../std/diagnostics/syserr/version.pass.cpp | 20 - .../std/experimental/nothing_to_do.pass.cpp | 12 - .../default.pass.cpp | 23 - .../derive.pass.cpp | 25 - .../optional.comp_with_t/equal.pass.cpp | 58 - .../optional.comp_with_t/greater.pass.cpp | 61 - .../greater_equal.pass.cpp | 61 - .../optional.comp_with_t/less_equal.pass.cpp | 61 - .../optional.comp_with_t/less_than.pass.cpp | 61 - .../optional.comp_with_t/not_equal.pass.cpp | 58 - .../optional.defs/tested_elsewhere.pass.cpp | 12 - .../optional.general/nothing_to_do.pass.cpp | 12 - .../optional/optional.hash/hash.pass.cpp | 47 - .../optional.inplace/in_place_t.pass.cpp | 42 - .../optional/optional.nullops/equal.pass.cpp | 41 - .../optional.nullops/greater.pass.cpp | 41 - .../optional.nullops/greater_equal.pass.cpp | 41 - .../optional.nullops/less_equal.pass.cpp | 41 - .../optional.nullops/less_than.pass.cpp | 41 - .../optional.nullops/not_equal.pass.cpp | 41 - .../optional.nullopt/nullopt_t.pass.cpp | 43 - .../assign_value.pass.cpp | 72 - .../optional.object.assign/copy.pass.cpp | 90 - .../optional.object.assign/emplace.pass.cpp | 148 - .../emplace_initializer_list.pass.cpp | 116 - .../optional.object.assign/move.pass.cpp | 103 - .../optional.object.assign/nullopt_t.pass.cpp | 67 - .../optional.object.ctor/const_T.pass.cpp | 117 - .../optional.object.ctor/copy.pass.cpp | 124 - .../optional.object.ctor/default.pass.cpp | 67 - .../optional.object.ctor/in_place_t.pass.cpp | 145 - .../initializer_list.pass.cpp | 126 - .../optional.object.ctor/move.pass.cpp | 124 - .../optional.object.ctor/nullopt_t.pass.cpp | 68 - .../optional.object.ctor/rvalue_T.pass.cpp | 110 - .../optional.object.dtor/dtor.pass.cpp | 59 - .../optional.object.observe/bool.pass.cpp | 32 - .../dereference.pass.cpp | 49 - .../dereference_const.pass.cpp | 57 - .../optional.object.observe/op_arrow.pass.cpp | 48 - .../op_arrow_const.pass.cpp | 67 - .../optional.object.observe/value.pass.cpp | 53 - .../value_const.fail.cpp | 40 - .../value_const.pass.cpp | 58 - .../optional.object.observe/value_or.pass.cpp | 71 - .../value_or_const.pass.cpp | 82 - .../optional.object.swap/swap.pass.cpp | 306 - .../optional_const_void.fail.cpp | 25 - .../optional_not_destructible.fail.cpp | 35 - ...ptional_not_noexcept_destructible.fail.cpp | 34 - .../optional.object/optional_void.fail.cpp | 25 - .../optional/optional.object/types.pass.cpp | 43 - .../optional/optional.relops/equal.pass.cpp | 79 - .../optional.relops/greater_equal.pass.cpp | 75 - .../optional.relops/greater_than.pass.cpp | 75 - .../optional.relops/less_equal.pass.cpp | 75 - .../optional.relops/less_than.pass.cpp | 75 - .../optional.relops/not_equal.pass.cpp | 79 - .../optional.specalg/make_optional.pass.cpp | 50 - .../optional/optional.specalg/swap.pass.cpp | 305 - .../optional_const_in_place_t.fail.cpp | 28 - .../optional_const_lvalue_ref.fail.cpp | 26 - .../optional_const_nullopt_t.fail.cpp | 28 - .../optional.syn/optional_in_place_t.fail.cpp | 28 - ...ptional_includes_initializer_list.pass.cpp | 23 - .../optional.syn/optional_lvalue_ref.fail.cpp | 26 - .../optional.syn/optional_nullopt_t.fail.cpp | 28 - .../optional.syn/optional_rvalue_ref.fail.cpp | 26 - .../experimental/optional/version.pass.cpp | 20 - .../string.view/nothing_to_do.pass.cpp | 12 - .../string.view.access/at.pass.cpp | 57 - .../string.view.access/back.pass.cpp | 48 - .../string.view.access/data.pass.cpp | 48 - .../string.view.access/front.pass.cpp | 48 - .../string.view.access/index.pass.cpp | 51 - .../string.view.capacity/capacity.pass.cpp | 87 - .../opeq.string_view.pointer.pass.cpp | 68 - .../opeq.string_view.string.pass.cpp | 54 - .../opeq.string_view.string_view.pass.cpp | 61 - .../opge.string_view.pointer.pass.cpp | 71 - .../opge.string_view.string.pass.cpp | 50 - .../opge.string_view.string_view.pass.cpp | 64 - .../opgt.string_view.pointer.pass.cpp | 71 - .../opgt.string_view.string.pass.cpp | 50 - .../opgt.string_view.string_view.pass.cpp | 64 - .../ople.string_view.pointer.pass.cpp | 71 - .../ople.string_view.string.pass.cpp | 50 - .../ople.string_view.string_view.pass.cpp | 64 - .../oplt.string_view.pointer.pass.cpp | 71 - .../oplt.string_view.string.pass.cpp | 50 - .../oplt.string_view.string_view.pass.cpp | 64 - .../opne.string_view.pointer.pass.cpp | 69 - .../opne.string_view.string.pass.cpp | 49 - .../opne.string_view.string_view.pass.cpp | 61 - .../string.view.cons/default.pass.cpp | 46 - .../string.view.cons/from_literal.pass.cpp | 64 - .../string.view.cons/from_ptr_len.pass.cpp | 81 - .../string.view.cons/from_string.pass.cpp | 54 - .../string.view.cons/from_string1.fail.cpp | 32 - .../string.view.cons/from_string2.fail.cpp | 32 - .../string.view.find/find_char_size.pass.cpp | 84 - .../find_first_not_of_char_size.pass.cpp | 84 - .../find_first_not_of_pointer_size.pass.cpp | 165 - ...nd_first_not_of_pointer_size_size.pass.cpp | 392 - ...ind_first_not_of_string_view_size.pass.cpp | 148 - .../find_first_of_char_size.pass.cpp | 82 - .../find_first_of_pointer_size.pass.cpp | 165 - .../find_first_of_pointer_size_size.pass.cpp | 392 - .../find_first_of_string_view_size.pass.cpp | 148 - .../find_last_not_of_char_size.pass.cpp | 82 - .../find_last_not_of_pointer_size.pass.cpp | 165 - ...ind_last_not_of_pointer_size_size.pass.cpp | 392 - ...find_last_not_of_string_view_size.pass.cpp | 148 - .../find_last_of_char_size.pass.cpp | 82 - .../find_last_of_pointer_size.pass.cpp | 165 - .../find_last_of_pointer_size_size.pass.cpp | 392 - .../find_last_of_string_view_size.pass.cpp | 148 - .../find_pointer_size.pass.cpp | 171 - .../find_pointer_size_size.pass.cpp | 393 - .../find_string_view_size.pass.cpp | 164 - .../string.view.find/rfind_char_size.pass.cpp | 83 - .../rfind_pointer_size.pass.cpp | 171 - .../rfind_pointer_size_size.pass.cpp | 392 - .../rfind_string_view_size.pass.cpp | 164 - .../string.view.hash/string_view.pass.cpp | 55 - .../string.view.io/stream_insert.pass.cpp | 58 - .../string.view.iterators/begin.pass.cpp | 77 - .../string.view.iterators/end.pass.cpp | 85 - .../string.view.iterators/rbegin.pass.cpp | 59 - .../string.view.iterators/rend.pass.cpp | 66 - .../string.view.modifiers/clear.pass.cpp | 65 - .../remove_prefix.pass.cpp | 76 - .../remove_suffix.pass.cpp | 76 - .../string.view.modifiers/swap.pass.cpp | 74 - .../string.view.nonmem/quoted.pass.cpp | 212 - .../string.view.ops/basic_string.pass.cpp | 63 - .../string.view.ops/compare.pointer.pass.cpp | 126 - .../compare.pointer_size.pass.cpp | 444 - .../compare.size_size_sv.pass.cpp | 397 - ...compare.size_size_sv_pointer_size.pass.cpp | 1349 - .../compare.size_size_sv_size_size.pass.cpp | 5843 --- .../string.view.ops/compare.sv.pass.cpp | 121 - .../string.view/string.view.ops/copy.pass.cpp | 92 - .../string.view.ops/substr.pass.cpp | 107 - .../string.view.ops/to_string.pass.cpp | 76 - .../string.view.synop/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../meta/meta.type.synop/includes.pass.cpp | 22 - .../meta/meta.type.synop/meta.rel.pass.cpp | 65 - .../meta.type.synop/meta.unary.cat.pass.cpp | 181 - .../meta.type.synop/meta.unary.comp.pass.cpp | 102 - .../meta.type.synop/meta.unary.prop.pass.cpp | 489 - .../meta.unary.prop.query.pass.cpp | 66 - .../utilities/meta/version.pass.cpp | 20 - .../utilities/nothing_to_do.pass.cpp | 13 - .../header.ratio.synop/includes.pass.cpp | 21 - .../header.ratio.synop/ratio_equal_v.pass.cpp | 47 - .../ratio_greater_equal_v.pass.cpp | 61 - .../ratio_greater_v.pass.cpp | 57 - .../ratio_less_equal_v.pass.cpp | 57 - .../header.ratio.synop/ratio_less_v.pass.cpp | 57 - .../ratio_not_equal_v.pass.cpp | 47 - .../utilities/ratio/nothing_to_do.pass.cpp | 13 - .../includes.pass.cpp | 21 - .../is_error_code_enum_v.pass.cpp | 37 - .../is_error_condition_enum.pass.cpp | 38 - .../header.chrono.synop/includes.pass.cpp | 19 - .../treat_as_floating_point_v.pass.cpp | 49 - .../header.tuple.synop/includes.pass.cpp | 19 - .../tuple/tuple.apply/arg_type.pass.cpp | 182 - .../tuple.apply/constexpr_types.pass.cpp | 118 - .../tuple/tuple.apply/extended_types.pass.cpp | 423 - .../tuple/tuple.apply/large_arity.pass.cpp | 146 - .../tuple/tuple.apply/ref_qualifiers.pass.cpp | 50 - .../tuple/tuple.apply/return_type.pass.cpp | 76 - .../tuple/tuple.apply/types.pass.cpp | 427 - .../utilities/tuple/tuple_size_v.fail.cpp | 25 - .../utilities/tuple/tuple_size_v.pass.cpp | 45 - .../utilities/tuple/tuple_size_v_2.fail.cpp | 25 - .../utilities/tuple/tuple_size_v_3.fail.cpp | 25 - .../utility.erased.type/erased_type.pass.cpp | 17 - .../utility/utility.synop/includes.pass.cpp | 20 - .../utilities/utility/version.pass.cpp | 20 - .../extensions/hash/specializations.fail.cpp | 17 - .../extensions/hash/specializations.pass.cpp | 31 - .../hash_map/const_iterator.fail.cpp | 18 - .../std/extensions/nothing_to_do.pass.cpp | 12 - .../file.streams/c.files/cinttypes.pass.cpp | 929 - .../file.streams/c.files/cstdio.pass.cpp | 148 - .../file.streams/c.files/gets.fail.cpp | 23 - .../fopen.fail.cpp | 15 - .../lit.local.cfg | 2 - .../rename.fail.cpp | 15 - .../c.files/version_ccstdio.pass.cpp | 20 - .../c.files/version_cinttypes.pass.cpp | 20 - .../filebuf.assign/member_swap.pass.cpp | 54 - .../filebuf.assign/move_assign.pass.cpp | 56 - .../filebuf.assign/nonmember_swap.pass.cpp | 56 - .../fstreams/filebuf.cons/default.pass.cpp | 30 - .../fstreams/filebuf.cons/move.pass.cpp | 54 - .../filebuf.members/open_pointer.pass.cpp | 51 - .../filebuf.virtuals/overflow.pass.cpp | 142 - .../filebuf.virtuals/pbackfail.pass.cpp | 56 - .../filebuf.virtuals/seekoff.pass.cpp | 66 - .../fstreams/filebuf.virtuals/underflow.dat | 1 - .../filebuf.virtuals/underflow.pass.cpp | 121 - .../filebuf.virtuals/underflow_utf8.dat | 1 - .../fstreams/filebuf/types.pass.cpp | 34 - .../fstream.assign/member_swap.pass.cpp | 71 - .../fstream.assign/move_assign.pass.cpp | 50 - .../fstream.assign/nonmember_swap.pass.cpp | 72 - .../fstreams/fstream.cons/default.pass.cpp | 28 - .../fstreams/fstream.cons/move.pass.cpp | 48 - .../fstreams/fstream.cons/pointer.pass.cpp | 44 - .../fstreams/fstream.cons/string.pass.cpp | 46 - .../fstreams/fstream.members/close.pass.cpp | 42 - .../fstream.members/open_pointer.pass.cpp | 50 - .../fstream.members/open_string.pass.cpp | 50 - .../fstreams/fstream.members/rdbuf.pass.cpp | 30 - .../fstreams/fstream/types.pass.cpp | 34 - .../ifstream.assign/member_swap.pass.cpp | 42 - .../ifstream.assign/move_assign.pass.cpp | 40 - .../ifstream.assign/nonmember_swap.pass.cpp | 43 - .../fstreams/ifstream.assign/test.dat | 1 - .../fstreams/ifstream.assign/test2.dat | 1 - .../fstreams/ifstream.cons/default.pass.cpp | 28 - .../fstreams/ifstream.cons/move.pass.cpp | 38 - .../fstreams/ifstream.cons/pointer.pass.cpp | 46 - .../fstreams/ifstream.cons/string.pass.cpp | 46 - .../fstreams/ifstream.cons/test.dat | 1 - .../fstreams/ifstream.members/close.pass.cpp | 38 - .../ifstream.members/open_pointer.pass.cpp | 46 - .../ifstream.members/open_string.pass.cpp | 46 - .../fstreams/ifstream.members/rdbuf.pass.cpp | 32 - .../fstreams/ifstream.members/test.dat | 1 - .../fstreams/ifstream/types.pass.cpp | 34 - .../file.streams/fstreams/lit.local.cfg | 2 - .../ofstream.assign/member_swap.pass.cpp | 79 - .../ofstream.assign/move_assign.pass.cpp | 52 - .../ofstream.assign/nonmember_swap.pass.cpp | 80 - .../fstreams/ofstream.cons/default.pass.cpp | 28 - .../fstreams/ofstream.cons/move.pass.cpp | 50 - .../fstreams/ofstream.cons/pointer.pass.cpp | 46 - .../fstreams/ofstream.cons/string.pass.cpp | 46 - .../fstreams/ofstream.members/close.pass.cpp | 42 - .../ofstream.members/open_pointer.pass.cpp | 58 - .../ofstream.members/open_string.pass.cpp | 58 - .../fstreams/ofstream.members/rdbuf.pass.cpp | 36 - .../fstreams/ofstream/types.pass.cpp | 34 - .../file.streams/fstreams/version.pass.cpp | 20 - .../file.streams/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../ext.manip/get_money.pass.cpp | 75 - .../ext.manip/get_time.pass.cpp | 73 - .../ext.manip/put_money.pass.cpp | 91 - .../ext.manip/put_time.pass.cpp | 84 - .../iostream.assign/member_swap.pass.cpp | 85 - .../iostream.assign/move_assign.pass.cpp | 92 - .../iostreamclass/iostream.cons/move.pass.cpp | 78 - .../iostream.cons/streambuf.pass.cpp | 55 - .../iostream.dest/nothing_to_do.pass.cpp | 12 - .../iostreamclass/types.pass.cpp | 37 - .../bool.pass.cpp | 79 - .../double.pass.cpp | 79 - .../float.pass.cpp | 79 - .../istream.formatted.arithmetic/int.pass.cpp | 79 - .../long.pass.cpp | 79 - .../long_double.pass.cpp | 79 - .../long_long.pass.cpp | 79 - .../pointer.pass.cpp | 97 - .../short.pass.cpp | 79 - .../unsigned_int.pass.cpp | 79 - .../unsigned_long.pass.cpp | 79 - .../unsigned_long_long.pass.cpp | 79 - .../unsigned_short.pass.cpp | 79 - .../tested_elsewhere.pass.cpp | 12 - .../istream_extractors/basic_ios.pass.cpp | 38 - .../istream_extractors/chart.pass.cpp | 87 - .../istream_extractors/ios_base.pass.cpp | 36 - .../istream_extractors/istream.pass.cpp | 38 - .../istream_extractors/signed_char.pass.cpp | 70 - .../signed_char_pointer.pass.cpp | 85 - .../istream_extractors/streambuf.pass.cpp | 69 - .../istream_extractors/unsigned_char.pass.cpp | 70 - .../unsigned_char_pointer.pass.cpp | 85 - .../wchar_t_pointer.pass.cpp | 85 - .../istream.formatted/nothing_to_do.pass.cpp | 12 - .../input.streams/istream.manip/ws.pass.cpp | 79 - .../istream.rvalue/rvalue.pass.cpp | 63 - .../istream.unformatted/get.pass.cpp | 100 - .../istream.unformatted/get_chart.pass.cpp | 103 - .../get_pointer_size.pass.cpp | 99 - .../get_pointer_size_chart.pass.cpp | 99 - .../get_streambuf.pass.cpp | 88 - .../get_streambuf_chart.pass.cpp | 89 - .../getline_pointer_size.pass.cpp | 83 - .../getline_pointer_size_chart.pass.cpp | 83 - .../istream.unformatted/ignore.pass.cpp | 76 - .../istream.unformatted/ignore_0xff.pass.cpp | 34 - .../istream.unformatted/peek.pass.cpp | 69 - .../istream.unformatted/putback.pass.cpp | 89 - .../istream.unformatted/read.pass.cpp | 81 - .../istream.unformatted/readsome.pass.cpp | 85 - .../istream.unformatted/seekg.pass.cpp | 66 - .../istream.unformatted/seekg_off.pass.cpp | 74 - .../istream.unformatted/sync.pass.cpp | 64 - .../istream.unformatted/tellg.pass.cpp | 63 - .../istream.unformatted/unget.pass.cpp | 81 - .../istream.assign/member_swap.pass.cpp | 85 - .../istream.assign/move_assign.pass.cpp | 92 - .../istream/istream.cons/move.pass.cpp | 78 - .../istream/istream.cons/streambuf.pass.cpp | 55 - .../istream/istream_sentry/ctor.pass.cpp | 128 - .../input.streams/istream/types.pass.cpp | 35 - .../input.streams/version.pass.cpp | 20 - .../iostream.format/nothing_to_do.pass.cpp | 12 - .../ostream.assign/member_swap.pass.cpp | 85 - .../ostream.assign/move_assign.pass.cpp | 92 - .../output.streams/ostream.cons/move.pass.cpp | 74 - .../ostream.cons/streambuf.pass.cpp | 53 - .../ostream.formatted/nothing_to_do.pass.cpp | 12 - .../tested_elsewhere.pass.cpp | 12 - .../bool.pass.cpp | 91 - .../double.pass.cpp | 83 - .../float.pass.cpp | 83 - .../ostream.inserters.arithmetic/int.pass.cpp | 83 - .../long.pass.cpp | 83 - .../long_double.pass.cpp | 83 - .../long_long.pass.cpp | 83 - .../ostream.inserters.arithmetic/minus1.pass | 84 - .../pointer.pass.cpp | 91 - .../short.pass.cpp | 83 - .../unsigned_int.pass.cpp | 83 - .../unsigned_long.pass.cpp | 83 - .../unsigned_long_long.pass.cpp | 83 - .../unsigned_short.pass.cpp | 83 - .../CharT.pass.cpp | 88 - .../CharT_pointer.pass.cpp | 88 - .../ostream.inserters.character/char.pass.cpp | 88 - .../char_pointer.pass.cpp | 88 - .../char_to_wide.pass.cpp | 88 - .../char_to_wide_pointer.pass.cpp | 88 - .../signed_char.pass.cpp | 88 - .../signed_char_pointer.pass.cpp | 88 - .../unsigned_char.pass.cpp | 88 - .../unsigned_char_pointer.pass.cpp | 88 - .../ostream.inserters/basic_ios.pass.cpp | 70 - .../ostream.inserters/ios_base.pass.cpp | 61 - .../ostream.inserters/ostream.pass.cpp | 69 - .../ostream.inserters/streambuf.pass.cpp | 69 - .../ostream.manip/endl.pass.cpp | 80 - .../ostream.manip/ends.pass.cpp | 71 - .../ostream.manip/flush.pass.cpp | 58 - .../ostream.rvalue/CharT_pointer.pass.cpp | 72 - .../ostream.seeks/seekp.pass.cpp | 57 - .../ostream.seeks/seekp2.pass.cpp | 59 - .../ostream.seeks/tellp.pass.cpp | 54 - .../ostream.unformatted/flush.pass.cpp | 54 - .../ostream.unformatted/put.pass.cpp | 76 - .../ostream.unformatted/write.pass.cpp | 76 - .../output.streams/ostream/types.pass.cpp | 35 - .../ostream_sentry/construct.pass.cpp | 61 - .../ostream_sentry/destruct.pass.cpp | 75 - .../output.streams/version.pass.cpp | 20 - .../quoted.manip/quoted.pass.cpp | 219 - .../quoted.manip/quoted_char.fail.cpp | 36 - .../quoted.manip/quoted_traits.fail.cpp | 42 - .../std.manip/resetiosflags.pass.cpp | 54 - .../std.manip/setbase.pass.cpp | 74 - .../std.manip/setfill.pass.cpp | 38 - .../std.manip/setiosflags.pass.cpp | 54 - .../std.manip/setprecision.pass.cpp | 50 - .../iostream.format/std.manip/setw.pass.cpp | 50 - .../std.manip/version.pass.cpp | 20 - .../iostream.forward/iosfwd.pass.cpp | 142 - .../iostream.forward/version.pass.cpp | 20 - .../narrow.stream.objects/cerr.pass.cpp | 29 - .../narrow.stream.objects/cin.pass.cpp | 34 - .../narrow.stream.objects/clog.pass.cpp | 23 - .../narrow.stream.objects/cout.pass.cpp | 29 - .../iostream.objects/version.pass.cpp | 20 - .../wide.stream.objects/wcerr.pass.cpp | 29 - .../wide.stream.objects/wcin.pass.cpp | 34 - .../wide.stream.objects/wclog.pass.cpp | 23 - .../wide.stream.objects/wcout.pass.cpp | 25 - .../fpos/fpos.members/state.pass.cpp | 24 - .../fpos/fpos.operations/addition.pass.cpp | 28 - .../fpos/fpos.operations/ctor_int.pass.cpp | 24 - .../fpos/fpos.operations/difference.pass.cpp | 26 - .../fpos/fpos.operations/eq_int.pass.cpp | 26 - .../fpos/fpos.operations/offset.pass.cpp | 25 - .../fpos/fpos.operations/streamsize.pass.cpp | 24 - .../fpos/fpos.operations/subtraction.pass.cpp | 28 - .../fpos/nothing_to_do.pass.cpp | 12 - .../ios.base/fmtflags.state/flags.pass.cpp | 33 - .../fmtflags.state/flags_fmtflags.pass.cpp | 36 - .../fmtflags.state/precision.pass.cpp | 33 - .../precision_streamsize.pass.cpp | 36 - .../fmtflags.state/setf_fmtflags.pass.cpp | 36 - .../setf_fmtflags_mask.pass.cpp | 36 - .../fmtflags.state/unsetf_mask.pass.cpp | 35 - .../ios.base/fmtflags.state/width.pass.cpp | 33 - .../fmtflags.state/width_streamsize.pass.cpp | 36 - .../register_callback.pass.cpp | 54 - .../ios.base/ios.base.cons/dtor.pass.cpp | 86 - .../ios.base/ios.base.locales/getloc.pass.cpp | 34 - .../ios.base/ios.base.locales/imbue.pass.cpp | 89 - .../ios.base/ios.base.storage/iword.pass.cpp | 42 - .../ios.base/ios.base.storage/pword.pass.cpp | 43 - .../ios.base/ios.base.storage/xalloc.pass.cpp | 26 - .../sync_with_stdio.pass.cpp | 27 - .../ios_Init/tested_elsewhere.pass.cpp | 12 - .../ctor_char_pointer_error_code.pass.cpp | 39 - .../ctor_string_error_code.pass.cpp | 39 - .../ios.types/ios_fmtflags/fmtflags.pass.cpp | 81 - .../ios.types/ios_iostate/iostate.pass.cpp | 36 - .../ios.types/ios_openmode/openmode.pass.cpp | 42 - .../ios.types/ios_seekdir/seekdir.pass.cpp | 26 - .../ios.base/ios.types/nothing_to_do.pass.cpp | 12 - .../ios.base/nothing_to_do.pass.cpp | 16 - .../basic.ios.cons/ctor_streambuf.pass.cpp | 48 - .../ios/basic.ios.members/copyfmt.pass.cpp | 190 - .../ios/basic.ios.members/fill.pass.cpp | 23 - .../basic.ios.members/fill_char_type.pass.cpp | 26 - .../ios/basic.ios.members/imbue.pass.cpp | 101 - .../ios/basic.ios.members/move.pass.cpp | 140 - .../ios/basic.ios.members/narow.pass.cpp | 24 - .../ios/basic.ios.members/rdbuf.pass.cpp | 31 - .../rdbuf_streambuf.pass.cpp | 34 - .../ios/basic.ios.members/set_rdbuf.pass.cpp | 57 - .../ios/basic.ios.members/swap.pass.cpp | 168 - .../ios/basic.ios.members/tie.pass.cpp | 23 - .../basic.ios.members/tie_ostream.pass.cpp | 26 - .../ios/basic.ios.members/widen.pass.cpp | 23 - .../ios/iostate.flags/bad.pass.cpp | 41 - .../ios/iostate.flags/bool.pass.cpp | 25 - .../ios/iostate.flags/clear.pass.cpp | 65 - .../ios/iostate.flags/eof.pass.cpp | 37 - .../ios/iostate.flags/exceptions.pass.cpp | 33 - .../iostate.flags/exceptions_iostate.pass.cpp | 48 - .../ios/iostate.flags/fail.pass.cpp | 41 - .../ios/iostate.flags/good.pass.cpp | 35 - .../ios/iostate.flags/not.pass.cpp | 25 - .../ios/iostate.flags/rdstate.pass.cpp | 25 - .../ios/iostate.flags/setstate.pass.cpp | 64 - .../iostreams.base/ios/types.pass.cpp | 33 - .../adjustfield.manip/internal.pass.cpp | 29 - .../adjustfield.manip/left.pass.cpp | 29 - .../adjustfield.manip/right.pass.cpp | 29 - .../basefield.manip/dec.pass.cpp | 29 - .../basefield.manip/hex.pass.cpp | 29 - .../basefield.manip/oct.pass.cpp | 29 - .../iostream_category.pass.cpp | 23 - .../error.reporting/make_error_code.pass.cpp | 24 - .../make_error_condition.pass.cpp | 24 - .../floatfield.manip/defaultfloat.pass.cpp | 30 - .../floatfield.manip/fixed.pass.cpp | 29 - .../floatfield.manip/hexfloat.pass.cpp | 30 - .../floatfield.manip/scientific.pass.cpp | 29 - .../fmtflags.manip/boolalpha.pass.cpp | 29 - .../fmtflags.manip/noboolalpha.pass.cpp | 30 - .../fmtflags.manip/noshowbase.pass.cpp | 30 - .../fmtflags.manip/noshowpoint.pass.cpp | 30 - .../fmtflags.manip/noshowpos.pass.cpp | 30 - .../fmtflags.manip/noskipws.pass.cpp | 30 - .../fmtflags.manip/nounitbuf.pass.cpp | 30 - .../fmtflags.manip/nouppercase.pass.cpp | 30 - .../fmtflags.manip/showbase.pass.cpp | 29 - .../fmtflags.manip/showpoint.pass.cpp | 29 - .../fmtflags.manip/showpos.pass.cpp | 29 - .../fmtflags.manip/skipws.pass.cpp | 29 - .../fmtflags.manip/unitbuf.pass.cpp | 29 - .../fmtflags.manip/uppercase.pass.cpp | 29 - .../std.ios.manip/nothing_to_do.pass.cpp | 12 - .../stream.types/streamoff.pass.cpp | 21 - .../stream.types/streamsize.pass.cpp | 21 - .../iostreams.base/version.pass.cpp | 20 - .../tested_elsewhere.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../std/input.output/nothing_to_do.pass.cpp | 12 - .../streambuf.reqts/tested_elsewhere.pass.cpp | 12 - .../streambuf/streambuf.cons/copy.fail.cpp | 25 - .../streambuf/streambuf.cons/copy.pass.cpp | 84 - .../streambuf/streambuf.cons/default.fail.cpp | 22 - .../streambuf/streambuf.cons/default.pass.cpp | 56 - .../streambuf.members/nothing_to_do.pass.cpp | 12 - .../streambuf.buffer/pubseekoff.pass.cpp | 35 - .../streambuf.buffer/pubseekpos.pass.cpp | 34 - .../streambuf.buffer/pubsetbuf.pass.cpp | 33 - .../streambuf.buffer/pubsync.pass.cpp | 33 - .../streambuf.locales/locales.pass.cpp | 52 - .../streambuf.pub.get/in_avail.pass.cpp | 52 - .../streambuf.pub.get/sbumpc.pass.cpp | 56 - .../streambuf.pub.get/sgetc.pass.cpp | 56 - .../streambuf.pub.get/sgetn.pass.cpp | 41 - .../streambuf.pub.get/snextc.pass.cpp | 56 - .../streambuf.pub.pback/sputbackc.pass.cpp | 56 - .../streambuf.pub.pback/sungetc.pass.cpp | 56 - .../streambuf.pub.put/sputc.pass.cpp | 63 - .../streambuf.pub.put/sputn.pass.cpp | 41 - .../nothing_to_do.pass.cpp | 12 - .../streambuf.assign/assign.pass.cpp | 91 - .../streambuf.assign/swap.pass.cpp | 101 - .../streambuf.get.area/gbump.pass.cpp | 59 - .../streambuf.get.area/setg.pass.cpp | 49 - .../streambuf.put.area/pbump.pass.cpp | 61 - .../streambuf.put.area/setp.pass.cpp | 49 - .../streambuf.virtuals/nothing_to_do.pass.cpp | 12 - .../tested_elsewhere.pass.cpp | 12 - .../streambuf.virt.get/showmanyc.pass.cpp | 33 - .../streambuf.virt.get/uflow.pass.cpp | 33 - .../streambuf.virt.get/underflow.pass.cpp | 30 - .../streambuf.virt.get/xsgetn.pass.cpp | 41 - .../nothing_to_do.pass.cpp | 12 - .../streambuf.virt.pback/pbackfail.pass.cpp | 32 - .../streambuf.virt.put/overflow.pass.cpp | 30 - .../streambuf.virt.put/xsputn.pass.cpp | 44 - .../stream.buffers/streambuf/types.pass.cpp | 39 - .../stream.buffers/version.pass.cpp | 20 - .../istringstream.assign/member_swap.pass.cpp | 56 - .../istringstream.assign/move.pass.cpp | 86 - .../nonmember_swap.pass.cpp | 59 - .../istringstream.cons/default.pass.cpp | 46 - .../istringstream.cons/move.pass.cpp | 48 - .../istringstream.cons/string.pass.cpp | 67 - .../istringstream.members/str.pass.cpp | 56 - .../istringstream/types.pass.cpp | 36 - .../ostringstream.assign/member_swap.pass.cpp | 48 - .../ostringstream.assign/move.pass.cpp | 46 - .../nonmember_swap.pass.cpp | 48 - .../ostringstream.cons/default.pass.cpp | 46 - .../ostringstream.cons/move.pass.cpp | 44 - .../ostringstream.cons/string.pass.cpp | 59 - .../ostringstream.members/str.pass.cpp | 52 - .../ostringstream/types.pass.cpp | 36 - .../stringbuf.assign/member_swap.pass.cpp | 64 - .../stringbuf/stringbuf.assign/move.pass.cpp | 58 - .../stringbuf.assign/nonmember_swap.pass.cpp | 66 - .../stringbuf/stringbuf.cons/default.pass.cpp | 30 - .../stringbuf/stringbuf.cons/move.pass.cpp | 52 - .../stringbuf/stringbuf.cons/string.pass.cpp | 47 - .../stringbuf/stringbuf.members/str.pass.cpp | 34 - .../stringbuf.virtuals/overflow.pass.cpp | 97 - .../stringbuf.virtuals/pbackfail.pass.cpp | 92 - .../stringbuf.virtuals/seekoff.pass.cpp | 143 - .../stringbuf.virtuals/seekpos.pass.cpp | 77 - .../stringbuf.virtuals/setbuf.pass.cpp | 32 - .../stringbuf.virtuals/underflow.pass.cpp | 70 - .../string.streams/stringbuf/types.pass.cpp | 36 - .../stringstream.cons/default.pass.cpp | 46 - .../stringstream.cons/move.pass.cpp | 52 - .../stringstream.cons/move2.pass.cpp | 37 - .../stringstream.cons/string.pass.cpp | 49 - .../stringstream.assign/member_swap.pass.cpp | 56 - .../stringstream.assign/move.pass.cpp | 54 - .../nonmember_swap.pass.cpp | 59 - .../stringstream.members/str.pass.cpp | 62 - .../stringstream/types.pass.cpp | 36 - .../string.streams/version.pass.cpp | 20 - .../iterator.container/data.pass.cpp | 74 - .../iterator.container/empty.pass.cpp | 77 - .../iterator.container/size.pass.cpp | 76 - .../iterator.basic/iterator.pass.cpp | 82 - .../iterator.operations/advance.pass.cpp | 45 - .../iterator.operations/distance.pass.cpp | 40 - .../iterator.operations/next.pass.cpp | 46 - .../iterator.operations/prev.pass.cpp | 44 - .../iterator.traits/const_pointer.pass.cpp | 35 - .../iterator.traits/empty.pass.cpp | 38 - .../iterator.traits/iterator.pass.cpp | 43 - .../iterator.traits/pointer.pass.cpp | 35 - .../nothing_to_do.pass.cpp | 12 - .../bidirectional_iterator_tag.pass.cpp | 24 - .../forward_iterator_tag.pass.cpp | 24 - .../input_iterator_tag.pass.cpp | 22 - .../output_iterator_tag.pass.cpp | 22 - .../random_access_iterator_tag.pass.cpp | 24 - .../iterator.range/begin-end.pass.cpp | 146 - .../nothing_to_do.pass.cpp | 12 - .../forward.iterators/nothing_to_do.pass.cpp | 12 - .../input.iterators/nothing_to_do.pass.cpp | 12 - .../iterator.iterators/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../output.iterators/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../iterator.synopsis/nothing_to_do.pass.cpp | 12 - .../iterators.general/gcc_workaround.pass.cpp | 20 - .../iterators.general/nothing_to_do.pass.cpp | 12 - .../back.insert.iter.cons/container.fail.cpp | 24 - .../back.insert.iter.cons/container.pass.cpp | 31 - .../back.insert.iter.op++/post.pass.cpp | 36 - .../back.insert.iter.op++/pre.pass.cpp | 34 - .../back.insert.iter.op=/lv_value.pass.cpp | 46 - .../back.insert.iter.op=/rv_value.pass.cpp | 42 - .../back.insert.iter.op_astrk/test.pass.cpp | 34 - .../back.inserter/test.pass.cpp | 35 - .../nothing_to_do.pass.cpp | 12 - .../back.insert.iterator/types.pass.cpp | 59 - .../front.insert.iter.cons/container.fail.cpp | 24 - .../front.insert.iter.cons/container.pass.cpp | 31 - .../front.insert.iter.op++/post.pass.cpp | 36 - .../front.insert.iter.op++/pre.pass.cpp | 34 - .../front.insert.iter.op=/lv_value.pass.cpp | 47 - .../front.insert.iter.op=/rv_value.pass.cpp | 41 - .../front.insert.iter.op_astrk/test.pass.cpp | 34 - .../front.inserter/test.pass.cpp | 35 - .../nothing_to_do.pass.cpp | 12 - .../front.insert.iterator/types.pass.cpp | 60 - .../insert.iter.cons/test.pass.cpp | 31 - .../insert.iter.op++/post.pass.cpp | 36 - .../insert.iter.op++/pre.pass.cpp | 34 - .../insert.iter.op=/lv_value.pass.cpp | 85 - .../insert.iter.op=/rv_value.pass.cpp | 98 - .../insert.iter.op_astrk/test.pass.cpp | 34 - .../insert.iter.ops/inserter/test.pass.cpp | 35 - .../insert.iter.ops/nothing_to_do.pass.cpp | 12 - .../insert.iterator/types.pass.cpp | 64 - .../insert.iterators/nothing_to_do.pass.cpp | 12 - .../make_move_iterator.pass.cpp | 46 - .../move.iter.nonmember/minus.pass.cpp | 39 - .../move.iter.nonmember/plus.pass.cpp | 37 - .../move.iter.op.+/difference_type.pass.cpp | 36 - .../move.iter.op.+=/difference_type.pass.cpp | 37 - .../move.iter.op.-/difference_type.pass.cpp | 36 - .../move.iter.op.-=/difference_type.pass.cpp | 37 - .../move.iter.op.comp/op_eq.pass.cpp | 46 - .../move.iter.op.comp/op_gt.pass.cpp | 42 - .../move.iter.op.comp/op_gte.pass.cpp | 42 - .../move.iter.op.comp/op_lt.pass.cpp | 42 - .../move.iter.op.comp/op_lte.pass.cpp | 42 - .../move.iter.op.comp/op_neq.pass.cpp | 46 - .../move.iter.op.const/convert.fail.cpp | 38 - .../move.iter.op.const/convert.pass.cpp | 44 - .../move.iter.op.const/default.pass.cpp | 34 - .../move.iter.op.const/iter.fail.cpp | 31 - .../move.iter.op.const/iter.pass.cpp | 37 - .../tested_elsewhere.pass.cpp | 12 - .../move.iter.op.decr/post.pass.cpp | 37 - .../move.iter.op.decr/pre.pass.cpp | 37 - .../move.iter.op.incr/post.pass.cpp | 39 - .../move.iter.op.incr/pre.pass.cpp | 39 - .../difference_type.pass.cpp | 58 - .../move.iter.op.ref/op_arrow.pass.cpp | 31 - .../move.iter.op.star/op_star.pass.cpp | 61 - .../move.iter.op=/move_iterator.fail.cpp | 39 - .../move.iter.op=/move_iterator.pass.cpp | 47 - .../move.iter.ops/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../move.iterator/types.pass.cpp | 56 - .../move.iterators/nothing_to_do.pass.cpp | 12 - .../predef.iterators/nothing_to_do.pass.cpp | 12 - .../reverse.iterators/nothing_to_do.pass.cpp | 12 - .../reverse.iter.ops/nothing_to_do.pass.cpp | 12 - .../reverse.iter.cons/default.pass.cpp | 33 - .../reverse.iter.cons/iter.fail.cpp | 31 - .../reverse.iter.cons/iter.pass.cpp | 35 - .../reverse_iterator.fail.cpp | 38 - .../reverse_iterator.pass.cpp | 42 - .../tested_elsewhere.pass.cpp | 12 - .../make_reverse_iterator.pass.cpp | 42 - .../reverse.iter.op!=/test.pass.cpp | 42 - .../reverse.iter.op++/post.pass.cpp | 37 - .../reverse.iter.op++/pre.pass.cpp | 37 - .../reverse.iter.op+/difference_type.pass.cpp | 36 - .../difference_type.pass.cpp | 37 - .../reverse.iter.op--/post.pass.cpp | 37 - .../reverse.iter.op--/pre.pass.cpp | 37 - .../reverse.iter.op-/difference_type.pass.cpp | 36 - .../difference_type.pass.cpp | 37 - .../reverse.iter.op.star/op_star.pass.cpp | 47 - .../reverse_iterator.fail.cpp | 39 - .../reverse_iterator.pass.cpp | 45 - .../reverse.iter.op==/test.pass.cpp | 42 - .../reverse.iter.opdiff/test.pass.cpp | 43 - .../reverse.iter.opgt/test.pass.cpp | 42 - .../reverse.iter.opgt=/test.pass.cpp | 42 - .../difference_type.pass.cpp | 38 - .../reverse.iter.oplt/test.pass.cpp | 42 - .../reverse.iter.oplt=/test.pass.cpp | 42 - .../reverse.iter.opref/op_arrow.pass.cpp | 89 - .../difference_type.pass.cpp | 37 - .../nothing_to_do.pass.cpp | 12 - .../reverse.iterator/types.pass.cpp | 61 - .../istream.iterator.cons/copy.pass.cpp | 36 - .../istream.iterator.cons/default.pass.cpp | 23 - .../istream.iterator.cons/istream.pass.cpp | 30 - .../istream.iterator.ops/arrow.pass.cpp | 37 - .../istream.iterator.ops/dereference.pass.cpp | 34 - .../istream.iterator.ops/equal.pass.cpp | 52 - .../post_increment.pass.cpp | 32 - .../pre_increment.pass.cpp | 29 - .../istream.iterator/types.pass.cpp | 42 - .../istreambuf.iterator.cons/default.pass.cpp | 30 - .../istreambuf.iterator.cons/istream.pass.cpp | 42 - .../istreambuf.iterator.cons/proxy.pass.cpp | 36 - .../streambuf.pass.cpp | 50 - .../istreambuf.iterator_equal/equal.pass.cpp | 78 - .../not_equal.pass.cpp | 80 - .../dereference.pass.cpp | 40 - .../istreambuf.iterator_op==/equal.pass.cpp | 80 - .../arrow.pass.cpp | 28 - .../post_increment.pass.cpp | 38 - .../pre_increment.pass.cpp | 39 - .../istreambuf.iterator_proxy/proxy.pass.cpp | 44 - .../istreambuf.iterator/types.pass.cpp | 51 - .../iterator.range/begin_array.pass.cpp | 24 - .../iterator.range/begin_const.pass.cpp | 23 - .../iterator.range/begin_non_const.pass.cpp | 25 - .../iterator.range/end_array.pass.cpp | 24 - .../iterator.range/end_const.pass.cpp | 23 - .../iterator.range/end_non_const.pass.cpp | 23 - .../stream.iterators/nothing_to_do.pass.cpp | 12 - .../ostream.iterator.cons.des/copy.pass.cpp | 26 - .../ostream.pass.cpp | 25 - .../ostream_delem.pass.cpp | 32 - .../ostream.iterator.ops/assign_t.pass.cpp | 46 - .../ostream.iterator.ops/dereference.pass.cpp | 26 - .../ostream.iterator.ops/increment.pass.cpp | 29 - .../ostream.iterator/types.pass.cpp | 40 - .../ostreambuf.iter.cons/ostream.pass.cpp | 32 - .../ostreambuf.iter.cons/streambuf.pass.cpp | 32 - .../ostreambuf.iter.ops/assign_c.pass.cpp | 39 - .../ostreambuf.iter.ops/deref.pass.cpp | 34 - .../ostreambuf.iter.ops/failed.pass.cpp | 30 - .../ostreambuf.iter.ops/increment.pass.cpp | 39 - .../ostreambuf.iterator/types.pass.cpp | 44 - libcxx/test/std/iterators/version.pass.cpp | 20 - .../cstdint/cstdint.syn/cstdint.pass.cpp | 292 - .../language.support/cstdint/version.pass.cpp | 20 - .../language.support/nothing_to_do.pass.cpp | 12 - .../alloc.errors/bad.alloc/bad_alloc.pass.cpp | 27 - .../new.badlength/bad_array_length.pass.cpp | 29 - .../bad_array_new_length.pass.cpp | 27 - .../new.handler/new_handler.pass.cpp | 19 - .../alloc.errors/nothing_to_do.pass.cpp | 12 - .../set.new.handler/get_new_handler.pass.cpp | 25 - .../set.new.handler/set_new_handler.pass.cpp | 22 - .../new.delete.array/new_array.pass.cpp | 57 - .../new_array_nothrow.pass.cpp | 54 - .../new_array_nothrow_replace.pass.cpp | 51 - .../new_array_replace.pass.cpp | 51 - .../sized_delete_array.pass.cpp | 76 - .../sized_delete_array_nothrow.pass.cpp | 80 - ...ized_delete_array_nothrow_replace.pass.cpp | 109 - .../sized_delete_array_replace.pass.cpp | 102 - .../not_testable.pass.cpp | 12 - .../new.delete.placement/new.pass.cpp | 30 - .../new.delete.placement/new_array.pass.cpp | 30 - .../new.delete/new.delete.single/new.pass.cpp | 57 - .../new.delete.single/new_nothrow.pass.cpp | 54 - .../new_nothrow_replace.pass.cpp | 51 - .../new.delete.single/new_replace.pass.cpp | 51 - .../new.delete.single/sized_delete.pass.cpp | 76 - .../sized_delete_nothrow.pass.cpp | 80 - .../sized_delete_nothrow_replace.pass.cpp | 109 - .../sized_delete_replace.pass.cpp | 102 - .../new.delete/nothing_to_do.pass.cpp | 12 - .../support.dynamic/version.pass.cpp | 20 - .../bad.exception/bad_exception.pass.cpp | 27 - .../except.nested/assign.pass.cpp | 59 - .../except.nested/ctor_copy.pass.cpp | 57 - .../except.nested/ctor_default.pass.cpp | 55 - .../except.nested/rethrow_if_nested.pass.cpp | 89 - .../except.nested/rethrow_nested.pass.cpp | 70 - .../except.nested/throw_with_nested.pass.cpp | 119 - .../nothing_to_do.pass.cpp | 12 - .../set.terminate/get_terminate.pass.cpp | 25 - .../set.terminate/set_terminate.pass.cpp | 23 - .../terminate_handler.pass.cpp | 19 - .../terminate/terminate.pass.cpp | 26 - .../exception/exception.pass.cpp | 25 - .../propagation/current_exception.pass.cpp | 269 - .../propagation/exception_ptr.pass.cpp | 34 - .../propagation/make_exception_ptr.pass.cpp | 49 - .../propagation/rethrow_exception.pass.cpp | 57 - .../uncaught/uncaught_exception.pass.cpp | 45 - .../support.exception/version.pass.cpp | 20 - .../support.general/nothing_to_do.pass.cpp | 12 - .../support.initlist.access/access.pass.cpp | 62 - .../support.initlist.cons/default.pass.cpp | 29 - .../support.initlist.range/begin_end.pass.cpp | 59 - .../support.initlist/types.pass.cpp | 37 - .../support.initlist/version.pass.cpp | 20 - .../support.limits/c.limits/cfloat.pass.cpp | 140 - .../support.limits/c.limits/climits.pass.cpp | 92 - .../c.limits/version_cfloat.pass.cpp | 20 - .../c.limits/version_climits.pass.cpp | 20 - .../limits/denorm.style/check_values.pass.cpp | 38 - .../limits/is_specialized.pass.cpp | 71 - .../const_data_members.pass.cpp | 199 - .../denorm_min.pass.cpp | 53 - .../numeric.limits.members/digits.pass.cpp | 53 - .../numeric.limits.members/digits10.pass.cpp | 57 - .../numeric.limits.members/epsilon.pass.cpp | 54 - .../has_denorm.pass.cpp | 52 - .../has_denorm_loss.pass.cpp | 52 - .../has_infinity.pass.cpp | 52 - .../has_quiet_NaN.pass.cpp | 52 - .../has_signaling_NaN.pass.cpp | 52 - .../numeric.limits.members/infinity.pass.cpp | 58 - .../is_bounded.pass.cpp | 52 - .../numeric.limits.members/is_exact.pass.cpp | 52 - .../numeric.limits.members/is_iec559.pass.cpp | 56 - .../is_integer.pass.cpp | 52 - .../numeric.limits.members/is_modulo.pass.cpp | 52 - .../numeric.limits.members/is_signed.pass.cpp | 52 - .../numeric.limits.members/lowest.pass.cpp | 60 - .../numeric.limits.members/max.pass.cpp | 60 - .../max_digits10.pass.cpp | 53 - .../max_exponent.pass.cpp | 53 - .../max_exponent10.pass.cpp | 53 - .../numeric.limits.members/min.pass.cpp | 60 - .../min_exponent.pass.cpp | 53 - .../min_exponent10.pass.cpp | 53 - .../numeric.limits.members/quiet_NaN.pass.cpp | 73 - .../numeric.limits.members/radix.pass.cpp | 53 - .../round_error.pass.cpp | 54 - .../round_style.pass.cpp | 52 - .../signaling_NaN.pass.cpp | 73 - .../tinyness_before.pass.cpp | 52 - .../numeric.limits.members/traps.pass.cpp | 58 - .../limits/numeric.limits/default.pass.cpp | 83 - .../numeric.special/nothing_to_do.pass.cpp | 12 - .../limits/round.style/check_values.pass.cpp | 34 - .../support.limits/limits/version.pass.cpp | 20 - .../support.limits/nothing_to_do.pass.cpp | 12 - .../support.rtti/bad.cast/bad_cast.pass.cpp | 27 - .../bad.typeid/bad_typeid.pass.cpp | 27 - .../support.rtti/type.info/type_info.pass.cpp | 26 - .../type.info/type_info_hash.pass.cpp | 23 - .../support.rtti/version.pass.cpp | 20 - .../support.runtime/csetjmp.pass.cpp | 24 - .../support.runtime/csignal.pass.cpp | 57 - .../support.runtime/cstdarg.pass.cpp | 35 - .../support.runtime/cstdbool.pass.cpp | 32 - .../support.runtime/cstdlib.pass.cpp | 86 - .../support.runtime/ctime.pass.cpp | 40 - .../support.runtime/version_csetjmp.pass.cpp | 20 - .../support.runtime/version_csignal.pass.cpp | 20 - .../support.runtime/version_cstdarg.pass.cpp | 20 - .../support.runtime/version_cstdbool.pass.cpp | 20 - .../support.runtime/version_cstdlib.pass.cpp | 20 - .../support.runtime/version_ctime.pass.cpp | 20 - .../support.start.term/quick_exit.pass.cpp | 23 - .../quick_exit_check1.fail.cpp | 25 - .../quick_exit_check2.fail.cpp | 25 - .../support.types/max_align_t.pass.cpp | 34 - .../support.types/null.pass.cpp | 18 - .../support.types/nullptr_t.pass.cpp | 79 - .../nullptr_t_integral_cast.fail.cpp | 17 - .../nullptr_t_integral_cast.pass.cpp | 24 - .../support.types/offsetof.pass.cpp | 26 - .../support.types/ptrdiff_t.pass.cpp | 27 - .../support.types/size_t.pass.cpp | 27 - .../support.types/version.pass.cpp | 20 - .../localization/c.locales/clocale.pass.cpp | 48 - .../localization/c.locales/version.pass.cpp | 20 - .../locale.categories/__scan_keyword.pass.cpp | 118 - .../locale.collate.byname/compare.pass.cpp | 87 - .../locale.collate.byname/hash.pass.cpp | 41 - .../locale.collate.byname/transform.pass.cpp | 69 - .../locale.collate.byname/types.pass.cpp | 45 - .../locale.collate/ctor.pass.cpp | 67 - .../locale.collate.members/compare.pass.cpp | 49 - .../locale.collate.members/hash.pass.cpp | 39 - .../locale.collate.members/transform.pass.cpp | 33 - .../tested_elsewhere.pass.cpp | 12 - .../locale.collate/types.pass.cpp | 49 - .../category.collate/nothing_to_do.pass.cpp | 12 - .../category.ctype/ctype_base.pass.cpp | 78 - .../facet.ctype.char.dtor/dtor.pass.cpp | 40 - .../facet.ctype.char.members/ctor.pass.cpp | 50 - .../facet.ctype.char.members/is_1.pass.cpp | 59 - .../facet.ctype.char.members/is_many.pass.cpp | 118 - .../narrow_1.pass.cpp | 33 - .../narrow_many.pass.cpp | 38 - .../facet.ctype.char.members/scan_is.pass.cpp | 44 - .../scan_not.pass.cpp | 44 - .../facet.ctype.char.members/table.pass.cpp | 33 - .../tolower_1.pass.cpp | 33 - .../tolower_many.pass.cpp | 36 - .../toupper_1.pass.cpp | 33 - .../toupper_many.pass.cpp | 36 - .../facet.ctype.char.members/widen_1.pass.cpp | 33 - .../widen_many.pass.cpp | 38 - .../classic_table.pass.cpp | 59 - .../tested_elsewhere.pass.cpp | 12 - .../facet.ctype.special/types.pass.cpp | 38 - .../locale.codecvt.byname/ctor_char.pass.cpp | 70 - .../ctor_char16_t.pass.cpp | 70 - .../ctor_char32_t.pass.cpp | 70 - .../ctor_wchar_t.pass.cpp | 72 - .../locale.codecvt/codecvt_base.pass.cpp | 27 - .../locale.codecvt/ctor_char.pass.cpp | 52 - .../locale.codecvt/ctor_char16_t.pass.cpp | 58 - .../locale.codecvt/ctor_char32_t.pass.cpp | 58 - .../locale.codecvt/ctor_wchar_t.pass.cpp | 52 - .../char16_t_always_noconv.pass.cpp | 26 - .../char16_t_encoding.pass.cpp | 26 - .../char16_t_in.pass.cpp | 40 - .../char16_t_length.pass.cpp | 32 - .../char16_t_max_length.pass.cpp | 26 - .../char16_t_out.pass.cpp | 45 - .../char16_t_unshift.pass.cpp | 33 - .../char32_t_always_noconv.pass.cpp | 26 - .../char32_t_encoding.pass.cpp | 26 - .../char32_t_in.pass.cpp | 40 - .../char32_t_length.pass.cpp | 32 - .../char32_t_max_length.pass.cpp | 26 - .../char32_t_out.pass.cpp | 45 - .../char32_t_unshift.pass.cpp | 33 - .../char_always_noconv.pass.cpp | 26 - .../char_encoding.pass.cpp | 26 - .../locale.codecvt.members/char_in.pass.cpp | 38 - .../char_length.pass.cpp | 32 - .../char_max_length.pass.cpp | 26 - .../locale.codecvt.members/char_out.pass.cpp | 38 - .../char_unshift.pass.cpp | 33 - .../utf_sanity_check.pass.cpp | 127 - .../wchar_t_always_noconv.pass.cpp | 26 - .../wchar_t_encoding.pass.cpp | 26 - .../wchar_t_in.pass.cpp | 42 - .../wchar_t_length.pass.cpp | 32 - .../wchar_t_max_length.pass.cpp | 26 - .../wchar_t_out.pass.cpp | 69 - .../wchar_t_unshift.pass.cpp | 35 - .../tested_elsewhere.pass.cpp | 12 - .../locale.codecvt/types_char.pass.cpp | 40 - .../locale.codecvt/types_char16_t.pass.cpp | 42 - .../locale.codecvt/types_char32_t.pass.cpp | 42 - .../locale.codecvt/types_wchar_t.pass.cpp | 40 - .../locale.ctype.byname/is_1.pass.cpp | 112 - .../locale.ctype.byname/is_many.pass.cpp | 247 - .../locale.ctype.byname/mask.pass.cpp | 53 - .../locale.ctype.byname/narrow_1.pass.cpp | 56 - .../locale.ctype.byname/narrow_many.pass.cpp | 64 - .../locale.ctype.byname/scan_is.pass.cpp | 71 - .../locale.ctype.byname/scan_not.pass.cpp | 71 - .../locale.ctype.byname/tolower_1.pass.cpp | 91 - .../locale.ctype.byname/tolower_many.pass.cpp | 96 - .../locale.ctype.byname/toupper_1.pass.cpp | 91 - .../locale.ctype.byname/toupper_many.pass.cpp | 96 - .../locale.ctype.byname/types.pass.cpp | 71 - .../locale.ctype.byname/widen_1.pass.cpp | 58 - .../locale.ctype.byname/widen_many.pass.cpp | 65 - .../category.ctype/locale.ctype/ctor.pass.cpp | 51 - .../locale.ctype.members/is_1.pass.cpp | 59 - .../locale.ctype.members/is_many.pass.cpp | 118 - .../locale.ctype.members/narrow_1.pass.cpp | 33 - .../locale.ctype.members/narrow_many.pass.cpp | 38 - .../locale.ctype.members/scan_is.pass.cpp | 44 - .../locale.ctype.members/scan_not.pass.cpp | 44 - .../locale.ctype.members/tolower_1.pass.cpp | 33 - .../tolower_many.pass.cpp | 36 - .../locale.ctype.members/toupper_1.pass.cpp | 33 - .../toupper_many.pass.cpp | 36 - .../locale.ctype.members/widen_1.pass.cpp | 33 - .../locale.ctype.members/widen_many.pass.cpp | 38 - .../tested_elsewhere.pass.cpp | 12 - .../locale.ctype/types.pass.cpp | 38 - .../nothing_to_do.pass.cpp | 12 - .../locale.messages/ctor.pass.cpp | 52 - .../not_testable.pass.cpp | 34 - .../tested_elsewhere.pass.cpp | 12 - .../locale.messages/messages_base.pass.cpp | 24 - .../locale.messages/types.pass.cpp | 34 - .../category.messages/nothing_to_do.pass.cpp | 12 - .../locale.money.get/ctor.pass.cpp | 52 - .../get_long_double_en_US.pass.cpp | 723 - .../get_long_double_fr_FR.pass.cpp | 726 - .../get_long_double_ru_RU.pass.cpp | 735 - .../get_long_double_zh_CN.pass.cpp | 726 - .../get_string_en_US.pass.cpp | 731 - .../tested_elsewhere.pass.cpp | 12 - .../locale.money.get/types.pass.cpp | 34 - .../locale.money.put/ctor.pass.cpp | 52 - .../put_long_double_en_US.pass.cpp | 494 - .../put_long_double_fr_FR.pass.cpp | 495 - .../put_long_double_ru_RU.pass.cpp | 501 - .../put_long_double_zh_CN.pass.cpp | 496 - .../put_string_en_US.pass.cpp | 494 - .../tested_elsewhere.pass.cpp | 12 - .../locale.money.put/types.pass.cpp | 34 - .../curr_symbol.pass.cpp | 147 - .../decimal_point.pass.cpp | 148 - .../frac_digits.pass.cpp | 145 - .../grouping.pass.cpp | 150 - .../neg_format.pass.cpp | 227 - .../negative_sign.pass.cpp | 145 - .../pos_format.pass.cpp | 227 - .../positive_sign.pass.cpp | 145 - .../thousands_sep.pass.cpp | 151 - .../locale.moneypunct/ctor.pass.cpp | 52 - .../curr_symbol.pass.cpp | 75 - .../decimal_point.pass.cpp | 75 - .../frac_digits.pass.cpp | 75 - .../grouping.pass.cpp | 75 - .../neg_format.pass.cpp | 88 - .../negative_sign.pass.cpp | 76 - .../pos_format.pass.cpp | 88 - .../positive_sign.pass.cpp | 75 - .../thousands_sep.pass.cpp | 75 - .../tested_elsewhere.pass.cpp | 12 - .../locale.moneypunct/money_base.pass.cpp | 33 - .../locale.moneypunct/types.pass.cpp | 48 - .../category.monetary/nothing_to_do.pass.cpp | 12 - .../locale.nm.put/ctor.pass.cpp | 52 - .../facet.num.put.members/put_bool.pass.cpp | 100 - .../facet.num.put.members/put_double.pass.cpp | 17887 ---------- .../facet.num.put.members/put_long.pass.cpp | 371 - .../put_long_double.pass.cpp | 26248 -------------- .../put_long_long.pass.cpp | 344 - .../put_pointer.pass.cpp | 43 - .../put_unsigned_long.pass.cpp | 374 - .../put_unsigned_long_long.pass.cpp | 344 - .../tested_elsewhere.pass.cpp | 12 - .../locale.nm.put/types.pass.cpp | 32 - .../locale.num.get/ctor.pass.cpp | 52 - .../facet.num.get.members/get_bool.pass.cpp | 230 - .../facet.num.get.members/get_double.pass.cpp | 256 - .../facet.num.get.members/get_float.pass.cpp | 171 - .../facet.num.get.members/get_long.pass.cpp | 519 - .../get_long_double.pass.cpp | 231 - .../get_long_long.pass.cpp | 105 - .../get_pointer.pass.cpp | 61 - .../get_unsigned_int.pass.cpp | 83 - .../get_unsigned_long.pass.cpp | 83 - .../get_unsigned_long_long.pass.cpp | 83 - .../get_unsigned_short.pass.cpp | 83 - .../test_min_max.pass.cpp | 62 - .../tested_elsewhere.pass.cpp | 12 - .../locale.num.get/types.pass.cpp | 32 - .../category.numeric/nothing_to_do.pass.cpp | 12 - .../date_order.pass.cpp | 55 - .../date_order_wide.pass.cpp | 55 - .../locale.time.get.byname/get_date.pass.cpp | 99 - .../get_date_wide.pass.cpp | 98 - .../get_monthname.pass.cpp | 92 - .../get_monthname_wide.pass.cpp | 101 - .../locale.time.get.byname/get_one.pass.cpp | 168 - .../get_one_wide.pass.cpp | 170 - .../locale.time.get.byname/get_time.pass.cpp | 94 - .../get_time_wide.pass.cpp | 94 - .../get_weekday.pass.cpp | 91 - .../get_weekday_wide.pass.cpp | 89 - .../locale.time.get.byname/get_year.pass.cpp | 85 - .../get_year_wide.pass.cpp | 85 - .../locale.time.get/ctor.pass.cpp | 52 - .../date_order.pass.cpp | 34 - .../locale.time.get.members/get_date.pass.cpp | 51 - .../get_date_wide.pass.cpp | 51 - .../locale.time.get.members/get_many.pass.cpp | 68 - .../get_monthname.pass.cpp | 265 - .../get_monthname_wide.pass.cpp | 265 - .../locale.time.get.members/get_one.pass.cpp | 305 - .../locale.time.get.members/get_time.pass.cpp | 117 - .../get_time_wide.pass.cpp | 117 - .../get_weekday.pass.cpp | 220 - .../get_weekday_wide.pass.cpp | 220 - .../locale.time.get.members/get_year.pass.cpp | 138 - .../tested_elsewhere.pass.cpp | 12 - .../locale.time.get/time_base.pass.cpp | 29 - .../locale.time.get/types.pass.cpp | 41 - .../locale.time.put.byname/put1.pass.cpp | 78 - .../locale.time.put/ctor.pass.cpp | 52 - .../locale.time.put.members/put1.pass.cpp | 61 - .../locale.time.put.members/put2.pass.cpp | 332 - .../tested_elsewhere.pass.cpp | 12 - .../locale.time.put/types.pass.cpp | 32 - .../category.time/nothing_to_do.pass.cpp | 12 - .../decimal_point.pass.cpp | 65 - .../locale.numpunct.byname/grouping.pass.cpp | 68 - .../thousands_sep.pass.cpp | 68 - .../locale.numpunct/ctor.pass.cpp | 66 - .../decimal_point.pass.cpp | 32 - .../facet.numpunct.members/falsename.pass.cpp | 32 - .../facet.numpunct.members/grouping.pass.cpp | 32 - .../thousands_sep.pass.cpp | 32 - .../facet.numpunct.members/truename.pass.cpp | 32 - .../tested_elsewhere.pass.cpp | 12 - .../locale.numpunct/types.pass.cpp | 48 - .../facet.numpunct/nothing_to_do.pass.cpp | 12 - .../facets.examples/nothing_to_do.pass.cpp | 12 - .../locale.stdcvt/codecvt_mode.pass.cpp | 29 - .../locale.stdcvt/codecvt_utf16.pass.cpp | 42 - .../codecvt_utf16_always_noconv.pass.cpp | 45 - .../codecvt_utf16_encoding.pass.cpp | 45 - .../locale.stdcvt/codecvt_utf16_in.pass.cpp | 739 - .../codecvt_utf16_length.pass.cpp | 449 - .../codecvt_utf16_max_length.pass.cpp | 63 - .../locale.stdcvt/codecvt_utf16_out.pass.cpp | 331 - .../codecvt_utf16_unshift.pass.cpp | 56 - .../locale.stdcvt/codecvt_utf8.pass.cpp | 42 - .../codecvt_utf8_always_noconv.pass.cpp | 45 - .../codecvt_utf8_encoding.pass.cpp | 45 - .../locale.stdcvt/codecvt_utf8_in.pass.cpp | 360 - .../codecvt_utf8_length.pass.cpp | 244 - .../codecvt_utf8_max_length.pass.cpp | 63 - .../locale.stdcvt/codecvt_utf8_out.pass.cpp | 456 - .../codecvt_utf8_unshift.pass.cpp | 56 - .../codecvt_utf8_utf16_always_noconv.pass.cpp | 45 - .../codecvt_utf8_utf16_encoding.pass.cpp | 45 - .../codecvt_utf8_utf16_in.pass.cpp | 372 - .../codecvt_utf8_utf16_length.pass.cpp | 235 - .../codecvt_utf8_utf16_max_length.pass.cpp | 63 - .../codecvt_utf8_utf16_out.pass.cpp | 415 - .../codecvt_utf8_utf16_unshift.pass.cpp | 56 - .../locale.stdcvt/version.pass.cpp | 20 - .../locale.syn/nothing_to_do.pass.cpp | 12 - .../classification/isalnum.pass.cpp | 31 - .../classification/isalpha.pass.cpp | 31 - .../classification/iscntrl.pass.cpp | 31 - .../classification/isdigit.pass.cpp | 31 - .../classification/isgraph.pass.cpp | 31 - .../classification/islower.pass.cpp | 31 - .../classification/isprint.pass.cpp | 31 - .../classification/ispunct.pass.cpp | 31 - .../classification/isspace.pass.cpp | 31 - .../classification/isupper.pass.cpp | 31 - .../classification/isxdigit.pass.cpp | 31 - .../conversions.buffer/ctor.pass.cpp | 58 - .../conversions.buffer/lit.local.cfg | 2 - .../conversions.buffer/overflow.pass.cpp | 100 - .../conversions.buffer/pbackfail.pass.cpp | 59 - .../conversions.buffer/rdbuf.pass.cpp | 31 - .../conversions.buffer/seekoff.pass.cpp | 58 - .../conversions.buffer/state.pass.cpp | 28 - .../conversions.buffer/test.pass.cpp | 36 - .../conversions.buffer/underflow.dat | 1 - .../conversions.buffer/underflow.pass.cpp | 84 - .../conversions.buffer/underflow_utf8.dat | 1 - .../conversions.character/tolower.pass.cpp | 31 - .../conversions.character/toupper.pass.cpp | 31 - .../conversions.string/converted.pass.cpp | 32 - .../conversions.string/ctor_codecvt.pass.cpp | 38 - .../ctor_codecvt_state.pass.cpp | 28 - .../ctor_err_string.pass.cpp | 68 - .../conversions.string/from_bytes.pass.cpp | 39 - .../conversions.string/state.pass.cpp | 25 - .../conversions.string/to_bytes.pass.cpp | 39 - .../conversions.string/types.pass.cpp | 35 - .../conversions/nothing_to_do.pass.cpp | 12 - .../locale.convenience/nothing_to_do.pass.cpp | 12 - .../has_facet.pass.cpp | 32 - .../use_facet.pass.cpp | 52 - .../locale/locale.cons/assign.pass.cpp | 83 - .../locale/locale.cons/char_pointer.pass.cpp | 104 - .../locales/locale/locale.cons/copy.pass.cpp | 82 - .../locale/locale.cons/default.pass.cpp | 75 - .../locale_char_pointer_cat.pass.cpp | 82 - .../locale.cons/locale_facetptr.pass.cpp | 106 - .../locale.cons/locale_locale_cat.pass.cpp | 82 - .../locale.cons/locale_string_cat.pass.cpp | 81 - .../locale/locale.cons/string.pass.cpp | 87 - .../locale/locale.members/combine.pass.cpp | 94 - .../locale/locale.members/name.pass.cpp | 29 - .../locale/locale.operators/compare.pass.cpp | 34 - .../locale/locale.operators/eq.pass.cpp | 84 - .../locale/locale.statics/classic.pass.cpp | 59 - .../locale/locale.statics/global.pass.cpp | 63 - .../locale.category/category.pass.cpp | 59 - .../locale.types/locale.facet/facet.pass.cpp | 53 - .../locale/locale.types/locale.id/id.pass.cpp | 50 - .../locale.types/nothing_to_do.pass.cpp | 12 - .../locales/locale/nothing_to_do.pass.cpp | 12 - .../locales/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - libcxx/test/std/localization/version.pass.cpp | 20 - libcxx/test/std/nothing_to_do.pass.cpp | 13 - .../test/std/numerics/c.math/cmath.pass.cpp | 1485 - .../std/numerics/c.math/cmath_isinf.pass.cpp | 30 - .../std/numerics/c.math/cmath_isnan.pass.cpp | 30 - .../test/std/numerics/c.math/ctgmath.pass.cpp | 22 - .../std/numerics/c.math/tgmath_h.pass.cpp | 20 - .../numerics/c.math/version_cmath.pass.cpp | 20 - .../numerics/cfenv/cfenv.syn/cfenv.pass.cpp | 76 - .../test/std/numerics/cfenv/version.pass.cpp | 22 - .../test/std/numerics/complex.number/cases.h | 230 - .../complex.number/ccmplx/ccomplex.pass.cpp | 21 - .../complex.number/cmplx.over/arg.pass.cpp | 55 - .../complex.number/cmplx.over/conj.pass.cpp | 66 - .../complex.number/cmplx.over/imag.pass.cpp | 67 - .../complex.number/cmplx.over/norm.pass.cpp | 55 - .../complex.number/cmplx.over/pow.pass.cpp | 104 - .../complex.number/cmplx.over/proj.pass.cpp | 66 - .../complex.number/cmplx.over/real.pass.cpp | 67 - .../complex.literals/literals.pass.cpp | 51 - .../complex.literals/literals1.fail.cpp | 20 - .../complex.literals/literals1.pass.cpp | 43 - .../complex.literals/literals2.pass.cpp | 43 - .../assignment_complex.pass.cpp | 48 - .../assignment_scalar.pass.cpp | 37 - .../divide_equal_complex.pass.cpp | 53 - .../divide_equal_scalar.pass.cpp | 44 - .../minus_equal_complex.pass.cpp | 52 - .../minus_equal_scalar.pass.cpp | 40 - .../plus_equal_complex.pass.cpp | 52 - .../plus_equal_scalar.pass.cpp | 40 - .../times_equal_complex.pass.cpp | 52 - .../times_equal_scalar.pass.cpp | 44 - .../complex.members/construct.pass.cpp | 70 - .../complex.members/real_imag.pass.cpp | 64 - .../complex_divide_complex.pass.cpp | 159 - .../complex_divide_scalar.pass.cpp | 41 - .../complex_equals_complex.pass.cpp | 60 - .../complex_equals_scalar.pass.cpp | 81 - .../complex_minus_complex.pass.cpp | 49 - .../complex.ops/complex_minus_scalar.pass.cpp | 49 - .../complex_not_equals_complex.pass.cpp | 62 - .../complex_not_equals_scalar.pass.cpp | 81 - .../complex.ops/complex_plus_complex.pass.cpp | 49 - .../complex.ops/complex_plus_scalar.pass.cpp | 49 - .../complex_times_complex.pass.cpp | 161 - .../complex.ops/complex_times_scalar.pass.cpp | 41 - .../scalar_divide_complex.pass.cpp | 41 - .../scalar_equals_complex.pass.cpp | 81 - .../complex.ops/scalar_minus_complex.pass.cpp | 49 - .../scalar_not_equals_complex.pass.cpp | 81 - .../complex.ops/scalar_plus_complex.pass.cpp | 49 - .../complex.ops/scalar_times_complex.pass.cpp | 41 - .../complex.ops/stream_input.pass.cpp | 99 - .../complex.ops/stream_output.pass.cpp | 26 - .../complex.ops/unary_minus.pass.cpp | 36 - .../complex.ops/unary_plus.pass.cpp | 36 - .../double_float_explicit.pass.cpp | 37 - .../double_float_implicit.pass.cpp | 37 - .../double_long_double_explicit.pass.cpp | 37 - .../double_long_double_implicit.fail.cpp | 27 - .../float_double_explicit.pass.cpp | 37 - .../float_double_implicit.fail.cpp | 27 - .../float_long_double_explicit.pass.cpp | 37 - .../float_long_double_implicit.fail.cpp | 27 - .../long_double_double_explicit.pass.cpp | 37 - .../long_double_double_implicit.pass.cpp | 37 - .../long_double_float_explicit.pass.cpp | 37 - .../long_double_float_implicit.pass.cpp | 37 - .../complex.synopsis/nothing_to_do.pass.cpp | 12 - .../complex.transcendentals/acos.pass.cpp | 140 - .../complex.transcendentals/acosh.pass.cpp | 142 - .../complex.transcendentals/asin.pass.cpp | 120 - .../complex.transcendentals/asinh.pass.cpp | 119 - .../complex.transcendentals/atan.pass.cpp | 68 - .../complex.transcendentals/atanh.pass.cpp | 132 - .../complex.transcendentals/cos.pass.cpp | 68 - .../complex.transcendentals/cosh.pass.cpp | 118 - .../complex.transcendentals/exp.pass.cpp | 114 - .../complex.transcendentals/log.pass.cpp | 131 - .../complex.transcendentals/log10.pass.cpp | 66 - .../pow_complex_complex.pass.cpp | 71 - .../pow_complex_scalar.pass.cpp | 69 - .../pow_scalar_complex.pass.cpp | 69 - .../complex.transcendentals/sin.pass.cpp | 69 - .../complex.transcendentals/sinh.pass.cpp | 119 - .../complex.transcendentals/sqrt.pass.cpp | 109 - .../complex.transcendentals/tan.pass.cpp | 70 - .../complex.transcendentals/tanh.pass.cpp | 101 - .../complex.value.ops/abs.pass.cpp | 63 - .../complex.value.ops/arg.pass.cpp | 135 - .../complex.value.ops/conj.pass.cpp | 41 - .../complex.value.ops/imag.pass.cpp | 32 - .../complex.value.ops/norm.pass.cpp | 63 - .../complex.value.ops/polar.pass.cpp | 112 - .../complex.value.ops/proj.pass.cpp | 71 - .../complex.value.ops/real.pass.cpp | 32 - .../complex.number/complex/types.pass.cpp | 36 - .../numerics/complex.number/layout.pass.cpp | 36 - .../numerics/complex.number/version.pass.cpp | 20 - .../test/std/numerics/nothing_to_do.pass.cpp | 12 - .../gslice.access/tested_elsewhere.pass.cpp | 12 - .../class.gslice/gslice.cons/default.pass.cpp | 25 - .../gslice.cons/start_size_stride.pass.cpp | 38 - .../class.gslice/nothing_to_do.pass.cpp | 12 - .../class.slice/cons.slice/default.pass.cpp | 25 - .../cons.slice/start_size_stride.pass.cpp | 25 - .../class.slice/nothing_to_do.pass.cpp | 12 - .../slice.access/tested_elsewhere.pass.cpp | 12 - .../template.gslice.array/default.fail.cpp | 22 - .../gslice.array.assign/gslice_array.pass.cpp | 81 - .../gslice.array.assign/valarray.pass.cpp | 77 - .../addition.pass.cpp | 77 - .../gslice.array.comp.assign/and.pass.cpp | 77 - .../gslice.array.comp.assign/divide.pass.cpp | 77 - .../gslice.array.comp.assign/modulo.pass.cpp | 77 - .../multiply.pass.cpp | 77 - .../gslice.array.comp.assign/or.pass.cpp | 77 - .../shift_left.pass.cpp | 77 - .../shift_right.pass.cpp | 77 - .../subtraction.pass.cpp | 77 - .../gslice.array.comp.assign/xor.pass.cpp | 77 - .../gslice.array.fill/assign_value.pass.cpp | 74 - .../template.gslice.array/types.pass.cpp | 24 - .../template.indirect.array/default.fail.cpp | 22 - .../indirect_array.pass.cpp | 80 - .../indirect.array.assign/valarray.pass.cpp | 77 - .../addition.pass.cpp | 77 - .../indirect.array.comp.assign/and.pass.cpp | 77 - .../divide.pass.cpp | 77 - .../modulo.pass.cpp | 77 - .../multiply.pass.cpp | 77 - .../indirect.array.comp.assign/or.pass.cpp | 77 - .../shift_left.pass.cpp | 77 - .../shift_right.pass.cpp | 77 - .../subtraction.pass.cpp | 77 - .../indirect.array.comp.assign/xor.pass.cpp | 77 - .../indirect.array.fill/assign_value.pass.cpp | 74 - .../template.indirect.array/types.pass.cpp | 24 - .../template.mask.array/default.fail.cpp | 22 - .../mask.array.assign/mask_array.pass.cpp | 66 - .../mask.array.assign/valarray.pass.cpp | 49 - .../mask.array.comp.assign/addition.pass.cpp | 49 - .../mask.array.comp.assign/and.pass.cpp | 49 - .../mask.array.comp.assign/divide.pass.cpp | 49 - .../mask.array.comp.assign/modulo.pass.cpp | 49 - .../mask.array.comp.assign/multiply.pass.cpp | 49 - .../mask.array.comp.assign/or.pass.cpp | 49 - .../shift_left.pass.cpp | 49 - .../shift_right.pass.cpp | 49 - .../subtraction.pass.cpp | 49 - .../mask.array.comp.assign/xor.pass.cpp | 49 - .../mask.array.fill/assign_value.pass.cpp | 45 - .../template.mask.array/types.pass.cpp | 24 - .../template.slice.array/default.fail.cpp | 22 - .../slice.arr.assign/slice_array.pass.cpp | 55 - .../slice.arr.assign/valarray.pass.cpp | 43 - .../slice.arr.comp.assign/addition.pass.cpp | 43 - .../slice.arr.comp.assign/and.pass.cpp | 43 - .../slice.arr.comp.assign/divide.pass.cpp | 43 - .../slice.arr.comp.assign/modulo.pass.cpp | 43 - .../slice.arr.comp.assign/multiply.pass.cpp | 43 - .../slice.arr.comp.assign/or.pass.cpp | 43 - .../slice.arr.comp.assign/shift_left.pass.cpp | 43 - .../shift_right.pass.cpp | 43 - .../subtraction.pass.cpp | 43 - .../slice.arr.comp.assign/xor.pass.cpp | 43 - .../slice.arr.fill/assign_value.pass.cpp | 41 - .../template.slice.array/types.pass.cpp | 24 - .../numarray/template.valarray/types.pass.cpp | 26 - .../valarray.access/access.pass.cpp | 33 - .../valarray.access/const_access.pass.cpp | 31 - .../valarray.assign/copy_assign.pass.cpp | 58 - .../gslice_array_assign.pass.cpp | 58 - .../indirect_array_assign.pass.cpp | 58 - .../initializer_list_assign.pass.cpp | 57 - .../mask_array_assign.pass.cpp | 35 - .../valarray.assign/move_assign.pass.cpp | 63 - .../slice_array_assign.pass.cpp | 31 - .../valarray.assign/value_assign.pass.cpp | 31 - .../valarray.cassign/and_valarray.pass.cpp | 36 - .../valarray.cassign/and_value.pass.cpp | 33 - .../valarray.cassign/divide_valarray.pass.cpp | 36 - .../valarray.cassign/divide_value.pass.cpp | 33 - .../valarray.cassign/minus_valarray.pass.cpp | 36 - .../valarray.cassign/minus_value.pass.cpp | 33 - .../valarray.cassign/modulo_valarray.pass.cpp | 36 - .../valarray.cassign/modulo_value.pass.cpp | 33 - .../valarray.cassign/or_valarray.pass.cpp | 36 - .../valarray.cassign/or_value.pass.cpp | 33 - .../valarray.cassign/plus_valarray.pass.cpp | 36 - .../valarray.cassign/plus_value.pass.cpp | 33 - .../shift_left_valarray.pass.cpp | 36 - .../shift_left_value.pass.cpp | 33 - .../shift_right_valarray.pass.cpp | 36 - .../shift_right_value.pass.cpp | 33 - .../valarray.cassign/times_valarray.pass.cpp | 36 - .../valarray.cassign/times_value.pass.cpp | 33 - .../valarray.cassign/xor_valarray.pass.cpp | 36 - .../valarray.cassign/xor_value.pass.cpp | 33 - .../valarray.cons/copy.pass.cpp | 55 - .../valarray.cons/default.pass.cpp | 37 - .../valarray.cons/gslice_array.pass.cpp | 57 - .../valarray.cons/indirect_array.pass.cpp | 57 - .../valarray.cons/initializer_list.pass.cpp | 41 - .../valarray.cons/mask_array.pass.cpp | 34 - .../valarray.cons/move.pass.cpp | 61 - .../valarray.cons/pointer_size.pass.cpp | 52 - .../valarray.cons/size.pass.cpp | 39 - .../valarray.cons/slice_array.pass.cpp | 30 - .../valarray.cons/value_size.pass.cpp | 39 - .../valarray.members/apply_cref.pass.cpp | 51 - .../valarray.members/apply_value.pass.cpp | 51 - .../valarray.members/cshift.pass.cpp | 127 - .../valarray.members/max.pass.cpp | 40 - .../valarray.members/min.pass.cpp | 40 - .../valarray.members/resize.pass.cpp | 41 - .../valarray.members/shift.pass.cpp | 127 - .../valarray.members/size.pass.cpp | 41 - .../valarray.members/sum.pass.cpp | 28 - .../valarray.members/swap.pass.cpp | 89 - .../valarray.sub/gslice_const.pass.cpp | 77 - .../valarray.sub/gslice_non_const.pass.cpp | 57 - .../indirect_array_const.pass.cpp | 57 - .../indirect_array_non_const.pass.cpp | 58 - .../valarray.sub/slice_const.pass.cpp | 30 - .../valarray.sub/slice_non_const.pass.cpp | 43 - .../valarray.sub/valarray_bool_const.pass.cpp | 34 - .../valarray_bool_non_const.pass.cpp | 35 - .../valarray.unary/bit_not.pass.cpp | 55 - .../valarray.unary/negate.pass.cpp | 65 - .../valarray.unary/not.pass.cpp | 41 - .../valarray.unary/plus.pass.cpp | 65 - .../nothing_to_do.pass.cpp | 12 - .../and_valarray_valarray.pass.cpp | 35 - .../and_valarray_value.pass.cpp | 32 - .../and_value_valarray.pass.cpp | 32 - .../divide_valarray_valarray.pass.cpp | 35 - .../divide_valarray_value.pass.cpp | 32 - .../divide_value_valarray.pass.cpp | 32 - .../minus_valarray_valarray.pass.cpp | 35 - .../minus_valarray_value.pass.cpp | 32 - .../minus_value_valarray.pass.cpp | 32 - .../modulo_valarray_valarray.pass.cpp | 35 - .../modulo_valarray_value.pass.cpp | 32 - .../modulo_value_valarray.pass.cpp | 32 - .../or_valarray_valarray.pass.cpp | 35 - .../or_valarray_value.pass.cpp | 32 - .../or_value_valarray.pass.cpp | 32 - .../plus_valarray_valarray.pass.cpp | 35 - .../plus_valarray_value.pass.cpp | 32 - .../plus_value_valarray.pass.cpp | 32 - .../shift_left_valarray_valarray.pass.cpp | 35 - .../shift_left_valarray_value.pass.cpp | 32 - .../shift_left_value_valarray.pass.cpp | 32 - .../shift_right_valarray_valarray.pass.cpp | 35 - .../shift_right_valarray_value.pass.cpp | 32 - .../shift_right_value_valarray.pass.cpp | 32 - .../times_valarray_valarray.pass.cpp | 35 - .../times_valarray_value.pass.cpp | 32 - .../times_value_valarray.pass.cpp | 32 - .../xor_valarray_valarray.pass.cpp | 35 - .../xor_valarray_value.pass.cpp | 32 - .../xor_value_valarray.pass.cpp | 32 - .../and_valarray_valarray.pass.cpp | 37 - .../and_valarray_value.pass.cpp | 45 - .../and_value_valarray.pass.cpp | 45 - .../equal_valarray_valarray.pass.cpp | 37 - .../equal_valarray_value.pass.cpp | 34 - .../equal_value_valarray.pass.cpp | 34 - .../greater_equal_valarray_valarray.pass.cpp | 37 - .../greater_equal_valarray_value.pass.cpp | 34 - .../greater_equal_value_valarray.pass.cpp | 34 - .../greater_valarray_valarray.pass.cpp | 37 - .../greater_valarray_value.pass.cpp | 34 - .../greater_value_valarray.pass.cpp | 34 - .../less_equal_valarray_valarray.pass.cpp | 37 - .../less_equal_valarray_value.pass.cpp | 34 - .../less_equal_value_valarray.pass.cpp | 34 - .../less_valarray_valarray.pass.cpp | 37 - .../less_valarray_value.pass.cpp | 34 - .../less_value_valarray.pass.cpp | 34 - .../not_equal_valarray_valarray.pass.cpp | 37 - .../not_equal_valarray_value.pass.cpp | 34 - .../not_equal_value_valarray.pass.cpp | 34 - .../or_valarray_valarray.pass.cpp | 37 - .../or_valarray_value.pass.cpp | 45 - .../or_value_valarray.pass.cpp | 45 - .../valarray.special/swap.pass.cpp | 91 - .../valarray.transcend/abs_valarray.pass.cpp | 34 - .../valarray.transcend/acos_valarray.pass.cpp | 51 - .../valarray.transcend/asin_valarray.pass.cpp | 51 - .../atan2_valarray_valarray.pass.cpp | 53 - .../atan2_valarray_value.pass.cpp | 51 - .../atan2_value_valarray.pass.cpp | 51 - .../valarray.transcend/atan_valarray.pass.cpp | 51 - .../valarray.transcend/cos_valarray.pass.cpp | 51 - .../valarray.transcend/cosh_valarray.pass.cpp | 51 - .../valarray.transcend/exp_valarray.pass.cpp | 51 - .../log10_valarray.pass.cpp | 51 - .../valarray.transcend/log_valarray.pass.cpp | 51 - .../pow_valarray_valarray.pass.cpp | 53 - .../pow_valarray_value.pass.cpp | 51 - .../pow_value_valarray.pass.cpp | 51 - .../valarray.transcend/sin_valarray.pass.cpp | 51 - .../valarray.transcend/sinh_valarray.pass.cpp | 51 - .../valarray.transcend/sqrt_valarray.pass.cpp | 51 - .../valarray.transcend/tan_valarray.pass.cpp | 51 - .../valarray.transcend/tanh_valarray.pass.cpp | 51 - .../valarray.range/begin_const.pass.cpp | 30 - .../valarray.range/begin_non_const.pass.cpp | 31 - .../valarray.range/end_const.pass.cpp | 31 - .../valarray.range/end_non_const.pass.cpp | 32 - .../valarray.syn/nothing_to_do.pass.cpp | 12 - .../std/numerics/numarray/version.pass.cpp | 20 - .../accumulate/accumulate.pass.cpp | 53 - .../accumulate/accumulate_op.pass.cpp | 55 - .../adjacent_difference.pass.cpp | 115 - .../adjacent_difference_op.pass.cpp | 118 - .../inner.product/inner_product.pass.cpp | 82 - .../inner.product/inner_product_comp.pass.cpp | 85 - .../numeric.ops/numeric.iota/iota.pass.cpp | 38 - .../partial.sum/partial_sum.pass.cpp | 70 - .../partial.sum/partial_sum_op.pass.cpp | 72 - .../std/numerics/numeric.ops/version.pass.cpp | 20 - .../nothing_to_do.pass.cpp | 12 - .../numerics.general/nothing_to_do.pass.cpp | 12 - .../std/numerics/rand/nothing_to_do.pass.cpp | 12 - .../rand/rand.adapt/nothing_to_do.pass.cpp | 12 - .../rand.adapt.disc/assign.pass.cpp | 56 - .../rand.adapt/rand.adapt.disc/copy.pass.cpp | 54 - .../rand.adapt.disc/ctor_engine_copy.pass.cpp | 29 - .../rand.adapt.disc/ctor_engine_move.pass.cpp | 30 - .../rand.adapt.disc/ctor_result_type.pass.cpp | 51 - .../rand.adapt.disc/ctor_sseq.pass.cpp | 55 - .../rand.adapt.disc/default.pass.cpp | 42 - .../rand.adapt.disc/discard.pass.cpp | 52 - .../rand.adapt/rand.adapt.disc/eval.pass.cpp | 42 - .../rand.adapt/rand.adapt.disc/io.pass.cpp | 63 - .../rand.adapt.disc/result_type.pass.cpp | 42 - .../rand.adapt.disc/seed_result_type.pass.cpp | 50 - .../rand.adapt.disc/seed_sseq.pass.cpp | 48 - .../rand.adapt.disc/values.pass.cpp | 60 - .../rand.adapt.ibits/assign.pass.cpp | 56 - .../rand.adapt/rand.adapt.ibits/copy.pass.cpp | 54 - .../ctor_engine_copy.pass.cpp | 29 - .../ctor_engine_move.pass.cpp | 30 - .../ctor_result_type.pass.cpp | 51 - .../rand.adapt.ibits/ctor_sseq.pass.cpp | 55 - .../rand.adapt.ibits/default.pass.cpp | 42 - .../rand.adapt.ibits/discard.pass.cpp | 52 - .../rand.adapt/rand.adapt.ibits/eval.pass.cpp | 141 - .../rand.adapt/rand.adapt.ibits/io.pass.cpp | 63 - .../rand.adapt.ibits/result_type.pass.cpp | 83 - .../seed_result_type.pass.cpp | 50 - .../rand.adapt.ibits/seed_sseq.pass.cpp | 48 - .../rand.adapt.ibits/values.pass.cpp | 47 - .../rand.adapt.shuf/assign.pass.cpp | 39 - .../rand.adapt/rand.adapt.shuf/copy.pass.cpp | 38 - .../rand.adapt.shuf/ctor_engine_copy.pass.cpp | 31 - .../rand.adapt.shuf/ctor_engine_move.pass.cpp | 32 - .../rand.adapt.shuf/ctor_result_type.pass.cpp | 76 - .../rand.adapt.shuf/ctor_sseq.pass.cpp | 79 - .../rand.adapt.shuf/default.pass.cpp | 32 - .../rand.adapt.shuf/discard.pass.cpp | 37 - .../rand.adapt/rand.adapt.shuf/eval.pass.cpp | 93 - .../rand.adapt/rand.adapt.shuf/io.pass.cpp | 48 - .../rand.adapt.shuf/result_type.pass.cpp | 83 - .../rand.adapt.shuf/seed_result_type.pass.cpp | 36 - .../rand.adapt.shuf/seed_sseq.pass.cpp | 35 - .../rand.adapt.shuf/values.pass.cpp | 44 - .../numerics/rand/rand.device/ctor.pass.cpp | 83 - .../rand/rand.device/entropy.pass.cpp | 23 - .../numerics/rand/rand.device/eval.pass.cpp | 35 - .../rand/rand.dis/nothing_to_do.pass.cpp | 12 - .../rand.dist.bern/nothing_to_do.pass.cpp | 12 - .../rand.dist.bern.bernoulli/assign.pass.cpp | 33 - .../rand.dist.bern.bernoulli/copy.pass.cpp | 31 - .../ctor_double.pass.cpp | 36 - .../ctor_param.pass.cpp | 28 - .../rand.dist.bern.bernoulli/eq.pass.cpp | 36 - .../rand.dist.bern.bernoulli/eval.pass.cpp | 103 - .../eval_param.pass.cpp | 107 - .../get_param.pass.cpp | 28 - .../rand.dist.bern.bernoulli/io.pass.cpp | 40 - .../rand.dist.bern.bernoulli/max.pass.cpp | 26 - .../rand.dist.bern.bernoulli/min.pass.cpp | 26 - .../param_assign.pass.cpp | 30 - .../param_copy.pass.cpp | 29 - .../param_ctor.pass.cpp | 34 - .../param_eq.pass.cpp | 36 - .../param_types.pass.cpp | 27 - .../set_param.pass.cpp | 29 - .../rand.dist.bern.bernoulli/types.pass.cpp | 26 - .../rand.dist.bern.bin/assign.pass.cpp | 34 - .../rand.dist.bern.bin/copy.pass.cpp | 32 - .../ctor_int_double.pass.cpp | 40 - .../rand.dist.bern.bin/ctor_param.pass.cpp | 30 - .../rand.dist.bern.bin/eq.pass.cpp | 43 - .../rand.dist.bern.bin/eval.pass.cpp | 475 - .../rand.dist.bern.bin/eval_param.pass.cpp | 160 - .../rand.dist.bern.bin/get_param.pass.cpp | 29 - .../rand.dist.bern.bin/io.pass.cpp | 41 - .../rand.dist.bern.bin/max.pass.cpp | 27 - .../rand.dist.bern.bin/min.pass.cpp | 27 - .../rand.dist.bern.bin/param_assign.pass.cpp | 32 - .../rand.dist.bern.bin/param_copy.pass.cpp | 31 - .../rand.dist.bern.bin/param_ctor.pass.cpp | 44 - .../rand.dist.bern.bin/param_eq.pass.cpp | 37 - .../rand.dist.bern.bin/param_types.pass.cpp | 28 - .../rand.dist.bern.bin/set_param.pass.cpp | 30 - .../rand.dist.bern.bin/types.pass.cpp | 32 - .../rand.dist.bern.geo/assign.pass.cpp | 34 - .../rand.dist.bern.geo/copy.pass.cpp | 32 - .../rand.dist.bern.geo/ctor_double.pass.cpp | 32 - .../rand.dist.bern.geo/ctor_param.pass.cpp | 29 - .../rand.dist.bern.geo/eq.pass.cpp | 37 - .../rand.dist.bern.geo/eval.pass.cpp | 274 - .../rand.dist.bern.geo/eval_param.pass.cpp | 160 - .../rand.dist.bern.geo/get_param.pass.cpp | 29 - .../rand.dist.bern.geo/io.pass.cpp | 41 - .../rand.dist.bern.geo/max.pass.cpp | 27 - .../rand.dist.bern.geo/min.pass.cpp | 27 - .../rand.dist.bern.geo/param_assign.pass.cpp | 31 - .../rand.dist.bern.geo/param_copy.pass.cpp | 30 - .../rand.dist.bern.geo/param_ctor.pass.cpp | 35 - .../rand.dist.bern.geo/param_eq.pass.cpp | 37 - .../rand.dist.bern.geo/param_types.pass.cpp | 28 - .../rand.dist.bern.geo/set_param.pass.cpp | 30 - .../rand.dist.bern.geo/types.pass.cpp | 32 - .../rand.dist.bern.negbin/assign.pass.cpp | 34 - .../rand.dist.bern.negbin/copy.pass.cpp | 32 - .../ctor_int_double.pass.cpp | 40 - .../rand.dist.bern.negbin/ctor_param.pass.cpp | 30 - .../rand.dist.bern.negbin/eq.pass.cpp | 43 - .../rand.dist.bern.negbin/eval.pass.cpp | 272 - .../rand.dist.bern.negbin/eval_param.pass.cpp | 160 - .../rand.dist.bern.negbin/get_param.pass.cpp | 29 - .../rand.dist.bern.negbin/io.pass.cpp | 41 - .../rand.dist.bern.negbin/max.pass.cpp | 27 - .../rand.dist.bern.negbin/min.pass.cpp | 27 - .../param_assign.pass.cpp | 32 - .../rand.dist.bern.negbin/param_copy.pass.cpp | 31 - .../rand.dist.bern.negbin/param_ctor.pass.cpp | 44 - .../rand.dist.bern.negbin/param_eq.pass.cpp | 37 - .../param_types.pass.cpp | 28 - .../rand.dist.bern.negbin/set_param.pass.cpp | 30 - .../rand.dist.bern.negbin/types.pass.cpp | 32 - .../rand.dist.norm/nothing_to_do.pass.cpp | 12 - .../rand.dist.norm.cauchy/assign.pass.cpp | 34 - .../rand.dist.norm.cauchy/copy.pass.cpp | 32 - .../ctor_double_double.pass.cpp | 40 - .../rand.dist.norm.cauchy/ctor_param.pass.cpp | 30 - .../rand.dist.norm.cauchy/eq.pass.cpp | 37 - .../rand.dist.norm.cauchy/eval.pass.cpp | 80 - .../rand.dist.norm.cauchy/eval_param.pass.cpp | 83 - .../rand.dist.norm.cauchy/get_param.pass.cpp | 29 - .../rand.dist.norm.cauchy/io.pass.cpp | 41 - .../rand.dist.norm.cauchy/max.pass.cpp | 28 - .../rand.dist.norm.cauchy/min.pass.cpp | 27 - .../param_assign.pass.cpp | 32 - .../rand.dist.norm.cauchy/param_copy.pass.cpp | 31 - .../rand.dist.norm.cauchy/param_ctor.pass.cpp | 44 - .../rand.dist.norm.cauchy/param_eq.pass.cpp | 37 - .../param_types.pass.cpp | 28 - .../rand.dist.norm.cauchy/set_param.pass.cpp | 30 - .../rand.dist.norm.cauchy/types.pass.cpp | 34 - .../rand.dist.norm.chisq/assign.pass.cpp | 34 - .../rand.dist.norm.chisq/copy.pass.cpp | 32 - .../rand.dist.norm.chisq/ctor_double.pass.cpp | 32 - .../rand.dist.norm.chisq/ctor_param.pass.cpp | 29 - .../rand.dist.norm.chisq/eq.pass.cpp | 37 - .../rand.dist.norm.chisq/eval.pass.cpp | 154 - .../rand.dist.norm.chisq/eval_param.pass.cpp | 157 - .../rand.dist.norm.chisq/get_param.pass.cpp | 29 - .../rand.dist.norm.chisq/io.pass.cpp | 41 - .../rand.dist.norm.chisq/max.pass.cpp | 28 - .../rand.dist.norm.chisq/min.pass.cpp | 27 - .../param_assign.pass.cpp | 31 - .../rand.dist.norm.chisq/param_copy.pass.cpp | 30 - .../rand.dist.norm.chisq/param_ctor.pass.cpp | 35 - .../rand.dist.norm.chisq/param_eq.pass.cpp | 37 - .../rand.dist.norm.chisq/param_types.pass.cpp | 28 - .../rand.dist.norm.chisq/set_param.pass.cpp | 30 - .../rand.dist.norm.chisq/types.pass.cpp | 34 - .../rand.dist.norm.f/assign.pass.cpp | 34 - .../rand.dist.norm.f/copy.pass.cpp | 32 - .../ctor_double_double.pass.cpp | 40 - .../rand.dist.norm.f/ctor_param.pass.cpp | 30 - .../rand.dist.norm.f/eq.pass.cpp | 37 - .../rand.dist.norm.f/eval.pass.cpp | 106 - .../rand.dist.norm.f/eval_param.pass.cpp | 109 - .../rand.dist.norm.f/get_param.pass.cpp | 29 - .../rand.dist.norm.f/io.pass.cpp | 41 - .../rand.dist.norm.f/max.pass.cpp | 28 - .../rand.dist.norm.f/min.pass.cpp | 27 - .../rand.dist.norm.f/param_assign.pass.cpp | 32 - .../rand.dist.norm.f/param_copy.pass.cpp | 31 - .../rand.dist.norm.f/param_ctor.pass.cpp | 44 - .../rand.dist.norm.f/param_eq.pass.cpp | 37 - .../rand.dist.norm.f/param_types.pass.cpp | 28 - .../rand.dist.norm.f/set_param.pass.cpp | 30 - .../rand.dist.norm.f/types.pass.cpp | 34 - .../rand.dist.norm.lognormal/assign.pass.cpp | 34 - .../rand.dist.norm.lognormal/copy.pass.cpp | 32 - .../ctor_double_double.pass.cpp | 40 - .../ctor_param.pass.cpp | 30 - .../rand.dist.norm.lognormal/eq.pass.cpp | 37 - .../rand.dist.norm.lognormal/eval.pass.cpp | 244 - .../eval_param.pass.cpp | 250 - .../get_param.pass.cpp | 29 - .../rand.dist.norm.lognormal/io.pass.cpp | 41 - .../rand.dist.norm.lognormal/max.pass.cpp | 28 - .../rand.dist.norm.lognormal/min.pass.cpp | 27 - .../param_assign.pass.cpp | 32 - .../param_copy.pass.cpp | 31 - .../param_ctor.pass.cpp | 44 - .../param_eq.pass.cpp | 37 - .../param_types.pass.cpp | 28 - .../set_param.pass.cpp | 30 - .../rand.dist.norm.lognormal/types.pass.cpp | 34 - .../rand.dist.norm.normal/assign.pass.cpp | 34 - .../rand.dist.norm.normal/copy.pass.cpp | 32 - .../ctor_double_double.pass.cpp | 40 - .../rand.dist.norm.normal/ctor_param.pass.cpp | 30 - .../rand.dist.norm.normal/eq.pass.cpp | 37 - .../rand.dist.norm.normal/eval.pass.cpp | 70 - .../rand.dist.norm.normal/eval_param.pass.cpp | 71 - .../rand.dist.norm.normal/get_param.pass.cpp | 29 - .../rand.dist.norm.normal/io.pass.cpp | 41 - .../rand.dist.norm.normal/max.pass.cpp | 28 - .../rand.dist.norm.normal/min.pass.cpp | 27 - .../param_assign.pass.cpp | 32 - .../rand.dist.norm.normal/param_copy.pass.cpp | 31 - .../rand.dist.norm.normal/param_ctor.pass.cpp | 44 - .../rand.dist.norm.normal/param_eq.pass.cpp | 37 - .../param_types.pass.cpp | 28 - .../rand.dist.norm.normal/set_param.pass.cpp | 30 - .../rand.dist.norm.normal/types.pass.cpp | 34 - .../rand.dist.norm.t/assign.pass.cpp | 34 - .../rand.dist.norm.t/copy.pass.cpp | 32 - .../rand.dist.norm.t/ctor_double.pass.cpp | 32 - .../rand.dist.norm.t/ctor_param.pass.cpp | 29 - .../rand.dist.norm.t/eq.pass.cpp | 37 - .../rand.dist.norm.t/eval.pass.cpp | 142 - .../rand.dist.norm.t/eval_param.pass.cpp | 145 - .../rand.dist.norm.t/get_param.pass.cpp | 29 - .../rand.dist.norm.t/io.pass.cpp | 41 - .../rand.dist.norm.t/max.pass.cpp | 28 - .../rand.dist.norm.t/min.pass.cpp | 27 - .../rand.dist.norm.t/param_assign.pass.cpp | 31 - .../rand.dist.norm.t/param_copy.pass.cpp | 30 - .../rand.dist.norm.t/param_ctor.pass.cpp | 35 - .../rand.dist.norm.t/param_eq.pass.cpp | 37 - .../rand.dist.norm.t/param_types.pass.cpp | 28 - .../rand.dist.norm.t/set_param.pass.cpp | 30 - .../rand.dist.norm.t/types.pass.cpp | 34 - .../rand.dist.pois/nothing_to_do.pass.cpp | 12 - .../rand.dist.pois.exp/assign.pass.cpp | 34 - .../rand.dist.pois.exp/copy.pass.cpp | 32 - .../rand.dist.pois.exp/ctor_double.pass.cpp | 32 - .../rand.dist.pois.exp/ctor_param.pass.cpp | 29 - .../rand.dist.pois.exp/eq.pass.cpp | 37 - .../rand.dist.pois.exp/eval.pass.cpp | 154 - .../rand.dist.pois.exp/eval_param.pass.cpp | 75 - .../rand.dist.pois.exp/get_param.pass.cpp | 29 - .../rand.dist.pois.exp/io.pass.cpp | 41 - .../rand.dist.pois.exp/max.pass.cpp | 28 - .../rand.dist.pois.exp/min.pass.cpp | 27 - .../rand.dist.pois.exp/param_assign.pass.cpp | 31 - .../rand.dist.pois.exp/param_copy.pass.cpp | 30 - .../rand.dist.pois.exp/param_ctor.pass.cpp | 35 - .../rand.dist.pois.exp/param_eq.pass.cpp | 37 - .../rand.dist.pois.exp/param_types.pass.cpp | 28 - .../rand.dist.pois.exp/set_param.pass.cpp | 30 - .../rand.dist.pois.exp/types.pass.cpp | 34 - .../rand.dist.pois.extreme/assign.pass.cpp | 34 - .../rand.dist.pois.extreme/copy.pass.cpp | 32 - .../ctor_double_double.pass.cpp | 40 - .../ctor_param.pass.cpp | 30 - .../rand.dist.pois.extreme/eq.pass.cpp | 37 - .../rand.dist.pois.extreme/eval.pass.cpp | 190 - .../eval_param.pass.cpp | 194 - .../rand.dist.pois.extreme/get_param.pass.cpp | 29 - .../rand.dist.pois.extreme/io.pass.cpp | 41 - .../rand.dist.pois.extreme/max.pass.cpp | 28 - .../rand.dist.pois.extreme/min.pass.cpp | 27 - .../param_assign.pass.cpp | 32 - .../param_copy.pass.cpp | 31 - .../param_ctor.pass.cpp | 44 - .../rand.dist.pois.extreme/param_eq.pass.cpp | 37 - .../param_types.pass.cpp | 28 - .../rand.dist.pois.extreme/set_param.pass.cpp | 30 - .../rand.dist.pois.extreme/types.pass.cpp | 34 - .../rand.dist.pois.gamma/assign.pass.cpp | 34 - .../rand.dist.pois.gamma/copy.pass.cpp | 32 - .../ctor_double_double.pass.cpp | 40 - .../rand.dist.pois.gamma/ctor_param.pass.cpp | 30 - .../rand.dist.pois.gamma/eq.pass.cpp | 37 - .../rand.dist.pois.gamma/eval.pass.cpp | 154 - .../rand.dist.pois.gamma/eval_param.pass.cpp | 157 - .../rand.dist.pois.gamma/get_param.pass.cpp | 29 - .../rand.dist.pois.gamma/io.pass.cpp | 41 - .../rand.dist.pois.gamma/max.pass.cpp | 28 - .../rand.dist.pois.gamma/min.pass.cpp | 27 - .../param_assign.pass.cpp | 32 - .../rand.dist.pois.gamma/param_copy.pass.cpp | 31 - .../rand.dist.pois.gamma/param_ctor.pass.cpp | 44 - .../rand.dist.pois.gamma/param_eq.pass.cpp | 37 - .../rand.dist.pois.gamma/param_types.pass.cpp | 28 - .../rand.dist.pois.gamma/set_param.pass.cpp | 30 - .../rand.dist.pois.gamma/types.pass.cpp | 34 - .../rand.dist.pois.poisson/assign.pass.cpp | 34 - .../rand.dist.pois.poisson/copy.pass.cpp | 32 - .../ctor_double.pass.cpp | 32 - .../ctor_param.pass.cpp | 29 - .../rand.dist.pois.poisson/eq.pass.cpp | 37 - .../rand.dist.pois.poisson/eval.pass.cpp | 151 - .../eval_param.pass.cpp | 157 - .../rand.dist.pois.poisson/get_param.pass.cpp | 29 - .../rand.dist.pois.poisson/io.pass.cpp | 41 - .../rand.dist.pois.poisson/max.pass.cpp | 28 - .../rand.dist.pois.poisson/min.pass.cpp | 27 - .../param_assign.pass.cpp | 31 - .../param_copy.pass.cpp | 30 - .../param_ctor.pass.cpp | 35 - .../rand.dist.pois.poisson/param_eq.pass.cpp | 37 - .../param_types.pass.cpp | 28 - .../rand.dist.pois.poisson/set_param.pass.cpp | 30 - .../rand.dist.pois.poisson/types.pass.cpp | 34 - .../rand.dist.pois.weibull/assign.pass.cpp | 34 - .../rand.dist.pois.weibull/copy.pass.cpp | 32 - .../ctor_double_double.pass.cpp | 40 - .../ctor_param.pass.cpp | 30 - .../rand.dist.pois.weibull/eq.pass.cpp | 37 - .../rand.dist.pois.weibull/eval.pass.cpp | 166 - .../eval_param.pass.cpp | 169 - .../rand.dist.pois.weibull/get_param.pass.cpp | 29 - .../rand.dist.pois.weibull/io.pass.cpp | 41 - .../rand.dist.pois.weibull/max.pass.cpp | 28 - .../rand.dist.pois.weibull/min.pass.cpp | 27 - .../param_assign.pass.cpp | 32 - .../param_copy.pass.cpp | 31 - .../param_ctor.pass.cpp | 44 - .../rand.dist.pois.weibull/param_eq.pass.cpp | 37 - .../param_types.pass.cpp | 28 - .../rand.dist.pois.weibull/set_param.pass.cpp | 30 - .../rand.dist.pois.weibull/types.pass.cpp | 34 - .../rand.dist.samp/nothing_to_do.pass.cpp | 12 - .../rand.dist.samp.discrete/assign.pass.cpp | 35 - .../rand.dist.samp.discrete/copy.pass.cpp | 33 - .../ctor_default.pass.cpp | 29 - .../ctor_func.pass.cpp | 60 - .../ctor_init.pass.cpp | 81 - .../ctor_iterator.pass.cpp | 87 - .../ctor_param.pass.cpp | 33 - .../rand.dist.samp.discrete/eq.pass.cpp | 45 - .../rand.dist.samp.discrete/eval.pass.cpp | 279 - .../eval_param.pass.cpp | 45 - .../get_param.pass.cpp | 30 - .../rand.dist.samp.discrete/io.pass.cpp | 42 - .../rand.dist.samp.discrete/max.pass.cpp | 34 - .../rand.dist.samp.discrete/min.pass.cpp | 28 - .../param_assign.pass.cpp | 32 - .../param_copy.pass.cpp | 31 - .../param_ctor_default.pass.cpp | 32 - .../param_ctor_func.pass.cpp | 64 - .../param_ctor_init.pass.cpp | 88 - .../param_ctor_iterator.pass.cpp | 94 - .../rand.dist.samp.discrete/param_eq.pass.cpp | 39 - .../param_types.pass.cpp | 28 - .../set_param.pass.cpp | 31 - .../rand.dist.samp.discrete/types.pass.cpp | 32 - .../rand.dist.samp.pconst/assign.pass.cpp | 36 - .../rand.dist.samp.pconst/copy.pass.cpp | 34 - .../ctor_default.pass.cpp | 35 - .../rand.dist.samp.pconst/ctor_func.pass.cpp | 64 - .../ctor_init_func.pass.cpp | 78 - .../ctor_iterator.pass.cpp | 96 - .../rand.dist.samp.pconst/ctor_param.pass.cpp | 41 - .../rand.dist.samp.pconst/eq.pass.cpp | 47 - .../rand.dist.samp.pconst/eval.pass.cpp | 695 - .../rand.dist.samp.pconst/eval_param.pass.cpp | 97 - .../rand.dist.samp.pconst/get_param.pass.cpp | 32 - .../rand.dist.samp.pconst/io.pass.cpp | 44 - .../rand.dist.samp.pconst/max.pass.cpp | 30 - .../rand.dist.samp.pconst/min.pass.cpp | 30 - .../param_assign.pass.cpp | 34 - .../rand.dist.samp.pconst/param_copy.pass.cpp | 33 - .../param_ctor_default.pass.cpp | 34 - .../param_ctor_func.pass.cpp | 67 - .../param_ctor_init_func.pass.cpp | 79 - .../param_ctor_iterator.pass.cpp | 100 - .../rand.dist.samp.pconst/param_eq.pass.cpp | 41 - .../param_types.pass.cpp | 28 - .../rand.dist.samp.pconst/set_param.pass.cpp | 32 - .../rand.dist.samp.pconst/types.pass.cpp | 32 - .../rand.dist.samp.plinear/assign.pass.cpp | 36 - .../rand.dist.samp.plinear/copy.pass.cpp | 34 - .../ctor_default.pass.cpp | 36 - .../rand.dist.samp.plinear/ctor_func.pass.cpp | 69 - .../ctor_init_func.pass.cpp | 82 - .../ctor_iterator.pass.cpp | 101 - .../ctor_param.pass.cpp | 42 - .../rand.dist.samp.plinear/eq.pass.cpp | 47 - .../rand.dist.samp.plinear/eval.pass.cpp | 343 - .../eval_param.pass.cpp | 92 - .../rand.dist.samp.plinear/get_param.pass.cpp | 32 - .../rand.dist.samp.plinear/io.pass.cpp | 44 - .../rand.dist.samp.plinear/max.pass.cpp | 30 - .../rand.dist.samp.plinear/min.pass.cpp | 30 - .../param_assign.pass.cpp | 34 - .../param_copy.pass.cpp | 33 - .../param_ctor_default.pass.cpp | 35 - .../param_ctor_func.pass.cpp | 70 - .../param_ctor_init_func.pass.cpp | 83 - .../param_ctor_iterator.pass.cpp | 105 - .../rand.dist.samp.plinear/param_eq.pass.cpp | 41 - .../param_types.pass.cpp | 28 - .../rand.dist.samp.plinear/set_param.pass.cpp | 32 - .../rand.dist.samp.plinear/types.pass.cpp | 32 - .../rand.dist.uni/nothing_to_do.pass.cpp | 12 - .../rand.dist.uni.int/assign.pass.cpp | 34 - .../rand.dist.uni.int/copy.pass.cpp | 32 - .../rand.dist.uni.int/ctor_int_int.pass.cpp | 41 - .../rand.dist.uni.int/ctor_param.pass.cpp | 30 - .../rand.dist.uni.int/eq.pass.cpp | 37 - .../rand.dist.uni.int/eval.pass.cpp | 455 - .../rand.dist.uni.int/eval_param.pass.cpp | 75 - .../rand.dist.uni.int/get_param.pass.cpp | 29 - .../rand.dist.uni.int/io.pass.cpp | 41 - .../rand.dist.uni.int/max.pass.cpp | 27 - .../rand.dist.uni.int/min.pass.cpp | 27 - .../rand.dist.uni.int/param_assign.pass.cpp | 32 - .../rand.dist.uni.int/param_copy.pass.cpp | 31 - .../rand.dist.uni.int/param_ctor.pass.cpp | 44 - .../rand.dist.uni.int/param_eq.pass.cpp | 37 - .../rand.dist.uni.int/param_types.pass.cpp | 28 - .../rand.dist.uni.int/set_param.pass.cpp | 30 - .../rand.dist.uni.int/types.pass.cpp | 27 - .../rand.dist.uni.real/assign.pass.cpp | 34 - .../rand.dist.uni.real/copy.pass.cpp | 32 - .../rand.dist.uni.real/ctor_int_int.pass.cpp | 41 - .../rand.dist.uni.real/ctor_param.pass.cpp | 30 - .../rand.dist.uni.real/eq.pass.cpp | 37 - .../rand.dist.uni.real/eval.pass.cpp | 474 - .../rand.dist.uni.real/eval_param.pass.cpp | 74 - .../rand.dist.uni.real/get_param.pass.cpp | 29 - .../rand.dist.uni.real/io.pass.cpp | 41 - .../rand.dist.uni.real/max.pass.cpp | 27 - .../rand.dist.uni.real/min.pass.cpp | 27 - .../rand.dist.uni.real/param_assign.pass.cpp | 32 - .../rand.dist.uni.real/param_copy.pass.cpp | 31 - .../rand.dist.uni.real/param_ctor.pass.cpp | 44 - .../rand.dist.uni.real/param_eq.pass.cpp | 37 - .../rand.dist.uni.real/param_types.pass.cpp | 28 - .../rand.dist.uni.real/set_param.pass.cpp | 30 - .../rand.dist.uni.real/types.pass.cpp | 27 - .../rand/rand.eng/nothing_to_do.pass.cpp | 12 - .../rand.eng/rand.eng.lcong/assign.pass.cpp | 58 - .../rand.eng/rand.eng.lcong/copy.pass.cpp | 58 - .../rand.eng.lcong/ctor_result_type.pass.cpp | 154 - .../rand.eng.lcong/ctor_sseq.pass.cpp | 29 - .../rand.eng/rand.eng.lcong/default.pass.cpp | 57 - .../rand.eng/rand.eng.lcong/discard.pass.cpp | 73 - .../rand.eng/rand.eng.lcong/eval.pass.cpp | 87 - .../rand/rand.eng/rand.eng.lcong/io.pass.cpp | 44 - .../rand.eng.lcong/result_type.pass.cpp | 37 - .../rand.eng.lcong/seed_result_type.pass.cpp | 40 - .../rand.eng.lcong/seed_sseq.pass.cpp | 39 - .../rand.eng/rand.eng.lcong/values.pass.cpp | 74 - .../rand.eng/rand.eng.mers/assign.pass.cpp | 58 - .../rand/rand.eng/rand.eng.mers/copy.pass.cpp | 56 - .../rand.eng.mers/ctor_result_type.pass.cpp | 245 - .../rand.eng/rand.eng.mers/ctor_sseq.pass.cpp | 309 - .../rand.eng/rand.eng.mers/default.pass.cpp | 45 - .../rand.eng/rand.eng.mers/discard.pass.cpp | 55 - .../rand/rand.eng/rand.eng.mers/eval.pass.cpp | 45 - .../rand/rand.eng/rand.eng.mers/io.pass.cpp | 69 - .../rand.eng.mers/result_type.pass.cpp | 44 - .../rand.eng.mers/seed_result_type.pass.cpp | 52 - .../rand.eng/rand.eng.mers/seed_sseq.pass.cpp | 50 - .../rand.eng/rand.eng.mers/values.pass.cpp | 122 - .../rand.eng/rand.eng.sub/assign.pass.cpp | 56 - .../rand/rand.eng/rand.eng.sub/copy.pass.cpp | 54 - .../rand.eng.sub/ctor_result_type.pass.cpp | 51 - .../rand.eng/rand.eng.sub/ctor_sseq.pass.cpp | 55 - .../rand.eng/rand.eng.sub/default.pass.cpp | 42 - .../rand.eng/rand.eng.sub/discard.pass.cpp | 52 - .../rand/rand.eng/rand.eng.sub/eval.pass.cpp | 42 - .../rand/rand.eng/rand.eng.sub/io.pass.cpp | 63 - .../rand.eng.sub/result_type.pass.cpp | 42 - .../rand.eng.sub/seed_result_type.pass.cpp | 50 - .../rand.eng/rand.eng.sub/seed_sseq.pass.cpp | 48 - .../rand.eng/rand.eng.sub/values.pass.cpp | 70 - .../default_random_engine.pass.cpp | 22 - .../rand/rand.predef/knuth_b.pass.cpp | 22 - .../rand/rand.predef/minstd_rand.pass.cpp | 23 - .../rand/rand.predef/minstd_rand0.pass.cpp | 23 - .../rand/rand.predef/mt19937.pass.cpp | 27 - .../rand/rand.predef/mt19937_64.pass.cpp | 27 - .../rand/rand.predef/ranlux24.pass.cpp | 22 - .../rand/rand.predef/ranlux24_base.pass.cpp | 22 - .../rand/rand.predef/ranlux48.pass.cpp | 22 - .../rand/rand.predef/ranlux48_base.pass.cpp | 22 - .../rand/rand.req/nothing_to_do.pass.cpp | 12 - .../rand.req.adapt/nothing_to_do.pass.cpp | 12 - .../rand.req.dst/nothing_to_do.pass.cpp | 12 - .../rand.req.eng/nothing_to_do.pass.cpp | 12 - .../rand.req.genl/nothing_to_do.pass.cpp | 12 - .../rand.req.seedseq/nothing_to_do.pass.cpp | 12 - .../rand.req.urng/nothing_to_do.pass.cpp | 12 - .../rand/rand.synopsis/version.pass.cpp | 20 - .../rand/rand.util/nothing_to_do.pass.cpp | 12 - .../generate_canonical.pass.cpp | 100 - .../rand.util.seedseq/assign.fail.cpp | 23 - .../rand.util/rand.util.seedseq/copy.fail.cpp | 22 - .../rand.util.seedseq/default.pass.cpp | 23 - .../rand.util.seedseq/generate.pass.cpp | 805 - .../initializer_list.pass.cpp | 33 - .../rand.util.seedseq/iterator.pass.cpp | 32 - .../rand.util.seedseq/types.pass.cpp | 24 - libcxx/test/std/re/nothing_to_do.pass.cpp | 12 - .../test/std/re/re.alg/nothing_to_do.pass.cpp | 12 - .../std/re/re.alg/re.alg.match/awk.pass.cpp | 1390 - .../std/re/re.alg/re.alg.match/basic.fail.cpp | 36 - .../std/re/re.alg/re.alg.match/basic.pass.cpp | 1367 - .../std/re/re.alg/re.alg.match/ecma.pass.cpp | 1349 - .../std/re/re.alg/re.alg.match/egrep.pass.cpp | 81 - .../re/re.alg/re.alg.match/extended.pass.cpp | 1363 - .../std/re/re.alg/re.alg.match/grep.pass.cpp | 49 - .../re.alg.match/lookahead_capture.pass.cpp | 98 - .../parse_curly_brackets.pass.cpp | 72 - .../re/re.alg/re.alg.replace/test1.pass.cpp | 107 - .../re/re.alg/re.alg.replace/test2.pass.cpp | 107 - .../re/re.alg/re.alg.replace/test3.pass.cpp | 73 - .../re/re.alg/re.alg.replace/test4.pass.cpp | 72 - .../re/re.alg/re.alg.replace/test5.pass.cpp | 73 - .../re/re.alg/re.alg.replace/test6.pass.cpp | 73 - .../std/re/re.alg/re.alg.search/awk.pass.cpp | 1574 - .../re/re.alg/re.alg.search/backup.pass.cpp | 63 - .../re/re.alg/re.alg.search/basic.fail.cpp | 36 - .../re/re.alg/re.alg.search/basic.pass.cpp | 1547 - .../std/re/re.alg/re.alg.search/ecma.pass.cpp | 1589 - .../re/re.alg/re.alg.search/egrep.pass.cpp | 90 - .../re/re.alg/re.alg.search/extended.pass.cpp | 1543 - .../std/re/re.alg/re.alg.search/grep.pass.cpp | 58 - .../re.alg/re.alg.search/lookahead.pass.cpp | 28 - .../re.alg.search/no_update_pos.pass.cpp | 38 - .../re.alg/re.except/nothing_to_do.pass.cpp | 12 - .../std/re/re.badexp/regex_error.pass.cpp | 96 - .../std/re/re.const/nothing_to_do.pass.cpp | 13 - .../re/re.const/re.err/error_type.pass.cpp | 143 - .../re.matchflag/match_flag_type.pass.cpp | 128 - .../re.matchflag/match_not_bol.pass.cpp | 50 - .../re.matchflag/match_not_eol.pass.cpp | 50 - .../re.synopt/syntax_option_type.pass.cpp | 114 - .../nothing_to_do.pass.cpp | 13 - .../nothing_to_do.pass.cpp | 13 - .../nothing_to_do.pass.cpp | 13 - .../nothing_to_do.pass.cpp | 13 - .../nothing_to_do.pass.cpp | 13 - .../nothing_to_do.pass.cpp | 13 - .../nothing_to_do.pass.cpp | 13 - .../test/std/re/re.def/nothing_to_do.pass.cpp | 13 - .../std/re/re.general/nothing_to_do.pass.cpp | 13 - .../std/re/re.grammar/nothing_to_do.pass.cpp | 12 - .../std/re/re.iter/nothing_to_do.pass.cpp | 12 - .../re.regiter.cnstr/cnstr.fail.cpp | 36 - .../re.regiter.cnstr/cnstr.pass.cpp | 44 - .../re.regiter.cnstr/default.pass.cpp | 32 - .../re.regiter.comp/tested_elsewhere.pass.cpp | 19 - .../re.regiter.deref/deref.pass.cpp | 42 - .../re.regiter/re.regiter.incr/post.pass.cpp | 97 - .../std/re/re.iter/re.regiter/types.pass.cpp | 45 - .../re.tokiter.cnstr/array.fail.cpp | 39 - .../re.tokiter.cnstr/array.pass.cpp | 64 - .../re.tokiter.cnstr/default.pass.cpp | 32 - .../re.tokiter/re.tokiter.cnstr/init.fail.cpp | 36 - .../re.tokiter/re.tokiter.cnstr/init.pass.cpp | 64 - .../re.tokiter/re.tokiter.cnstr/int.fail.cpp | 35 - .../re.tokiter/re.tokiter.cnstr/int.pass.cpp | 75 - .../re.tokiter.cnstr/vector.fail.cpp | 40 - .../re.tokiter.cnstr/vector.pass.cpp | 128 - .../re.tokiter/re.tokiter.comp/equal.pass.cpp | 36 - .../re.tokiter.deref/deref.pass.cpp | 72 - .../re.tokiter/re.tokiter.incr/post.pass.cpp | 135 - .../std/re/re.iter/re.tokiter/types.pass.cpp | 45 - .../re.regex.assign/assign.il.pass.cpp | 33 - .../re.regex/re.regex.assign/assign.pass.cpp | 35 - .../assign_iter_iter_flag.pass.cpp | 46 - .../re.regex.assign/assign_ptr_flag.pass.cpp | 29 - .../assign_ptr_size_flag.pass.cpp | 25 - .../assign_string_flag.pass.cpp | 31 - .../re/re.regex/re.regex.assign/copy.pass.cpp | 26 - .../re/re.regex/re.regex.assign/il.pass.cpp | 27 - .../re/re.regex/re.regex.assign/ptr.pass.cpp | 25 - .../re.regex/re.regex.assign/string.pass.cpp | 26 - .../re.regex.const/constants.pass.cpp | 65 - .../re.regex.construct/awk_oct.pass.cpp | 28 - .../re.regex.construct/bad_escape.pass.cpp | 45 - .../re.regex/re.regex.construct/copy.pass.cpp | 25 - .../re.regex.construct/default.pass.cpp | 32 - .../re.regex.construct/il_flg.pass.cpp | 70 - .../re.regex.construct/iter_iter.pass.cpp | 43 - .../re.regex.construct/iter_iter_flg.pass.cpp | 69 - .../re.regex/re.regex.construct/ptr.pass.cpp | 34 - .../re.regex.construct/ptr_flg.pass.cpp | 59 - .../re.regex.construct/ptr_size_flg.pass.cpp | 60 - .../re.regex.construct/string.pass.cpp | 35 - .../re.regex.construct/string_flg.pass.cpp | 61 - .../re.regex/re.regex.locale/imbue.pass.cpp | 31 - .../re.regex.nonmemb/nothing_to_do.pass.cpp | 12 - .../re.regex.nmswap/swap.pass.cpp | 29 - .../tested_elsewhere.pass.cpp | 12 - .../re/re.regex/re.regex.swap/swap.pass.cpp | 28 - libcxx/test/std/re/re.regex/types.pass.cpp | 35 - .../test/std/re/re.req/nothing_to_do.pass.cpp | 13 - .../re.results.acc/begin_end.pass.cpp | 38 - .../re.results.acc/cbegin_cend.pass.cpp | 38 - .../re.results/re.results.acc/index.pass.cpp | 53 - .../re.results/re.results.acc/length.pass.cpp | 36 - .../re.results.acc/position.pass.cpp | 36 - .../re.results/re.results.acc/prefix.pass.cpp | 34 - .../re/re.results/re.results.acc/str.pass.cpp | 36 - .../re.results/re.results.acc/suffix.pass.cpp | 34 - .../re.results.all/get_allocator.pass.cpp | 35 - .../re.results.const/allocator.pass.cpp | 35 - .../re.results.const/default.pass.cpp | 33 - .../re.results/re.results.form/form1.pass.cpp | 103 - .../re.results/re.results.form/form2.pass.cpp | 102 - .../re.results/re.results.form/form3.pass.cpp | 85 - .../re.results/re.results.form/form4.pass.cpp | 80 - .../re.results.nonmember/equal.pass.cpp | 46 - .../re.results/re.results.size/empty.pass.cpp | 36 - .../re.results.size/max_size.pass.cpp | 31 - .../re.results.state/ready.pass.cpp | 43 - .../re.results.swap/member_swap.pass.cpp | 39 - .../re.results.swap/non_member_swap.pass.cpp | 41 - libcxx/test/std/re/re.results/types.pass.cpp | 51 - .../compare_string_type.pass.cpp | 49 - .../compare_sub_match.pass.cpp | 53 - .../compare_value_type_ptr.pass.cpp | 47 - .../re.submatch.members/default.pass.cpp | 33 - .../re.submatch.members/length.pass.cpp | 43 - .../operator_string.pass.cpp | 47 - .../re.submatch.members/str.pass.cpp | 47 - .../re.submatch.op/compare.pass.cpp | 287 - .../re.submatch.op/stream.pass.cpp | 42 - libcxx/test/std/re/re.submatch/types.pass.cpp | 64 - libcxx/test/std/re/re.syn/cmatch.pass.cpp | 20 - .../std/re/re.syn/cregex_iterator.pass.cpp | 20 - .../re/re.syn/cregex_token_iterator.pass.cpp | 20 - libcxx/test/std/re/re.syn/csub_match.pass.cpp | 20 - libcxx/test/std/re/re.syn/regex.pass.cpp | 20 - libcxx/test/std/re/re.syn/smatch.pass.cpp | 20 - .../std/re/re.syn/sregex_iterator.pass.cpp | 20 - .../re/re.syn/sregex_token_iterator.pass.cpp | 20 - libcxx/test/std/re/re.syn/ssub_match.pass.cpp | 20 - libcxx/test/std/re/re.syn/wcmatch.pass.cpp | 20 - .../std/re/re.syn/wcregex_iterator.pass.cpp | 20 - .../re/re.syn/wcregex_token_iterator.pass.cpp | 20 - .../test/std/re/re.syn/wcsub_match.pass.cpp | 20 - libcxx/test/std/re/re.syn/wregex.pass.cpp | 20 - libcxx/test/std/re/re.syn/wsmatch.pass.cpp | 20 - .../std/re/re.syn/wsregex_iterator.pass.cpp | 20 - .../re/re.syn/wsregex_token_iterator.pass.cpp | 20 - .../test/std/re/re.syn/wssub_match.pass.cpp | 20 - libcxx/test/std/re/re.traits/default.pass.cpp | 37 - libcxx/test/std/re/re.traits/getloc.pass.cpp | 36 - libcxx/test/std/re/re.traits/imbue.pass.cpp | 30 - libcxx/test/std/re/re.traits/isctype.pass.cpp | 279 - libcxx/test/std/re/re.traits/length.pass.cpp | 31 - .../re/re.traits/lookup_classname.pass.cpp | 211 - .../re/re.traits/lookup_collatename.pass.cpp | 192 - .../test/std/re/re.traits/transform.pass.cpp | 46 - .../re/re.traits/transform_primary.pass.cpp | 51 - .../test/std/re/re.traits/translate.pass.cpp | 34 - .../re/re.traits/translate_nocase.pass.cpp | 72 - libcxx/test/std/re/re.traits/types.pass.cpp | 32 - libcxx/test/std/re/re.traits/value.pass.cpp | 125 - .../basic.string.hash/strings.pass.cpp | 48 - .../basic.string.literals/literal.pass.cpp | 47 - .../basic.string.literals/literal1.fail.cpp | 22 - .../basic.string.literals/literal1.pass.cpp | 20 - .../basic.string.literals/literal2.fail.cpp | 20 - .../basic.string.literals/literal2.pass.cpp | 20 - .../basic.string.literals/literal3.pass.cpp | 20 - .../std/strings/basic.string/input_iterator.h | 41 - .../basic.string/string.access/at.pass.cpp | 58 - .../basic.string/string.access/back.pass.cpp | 56 - .../string.access/db_back.pass.cpp | 54 - .../string.access/db_cback.pass.cpp | 50 - .../string.access/db_cfront.pass.cpp | 50 - .../string.access/db_cindex.pass.cpp | 52 - .../string.access/db_front.pass.cpp | 54 - .../string.access/db_index.pass.cpp | 52 - .../basic.string/string.access/front.pass.cpp | 56 - .../basic.string/string.access/index.pass.cpp | 63 - .../string.capacity/capacity.pass.cpp | 58 - .../string.capacity/clear.pass.cpp | 57 - .../string.capacity/empty.pass.cpp | 42 - .../string.capacity/length.pass.cpp | 42 - .../string.capacity/max_size.pass.cpp | 73 - .../string.capacity/over_max_size.pass.cpp | 47 - .../string.capacity/reserve.pass.cpp | 117 - .../string.capacity/resize_size.pass.cpp | 79 - .../string.capacity/resize_size_char.pass.cpp | 79 - .../string.capacity/shrink_to_fit.pass.cpp | 62 - .../string.capacity/size.pass.cpp | 42 - .../basic.string/string.cons/alloc.pass.cpp | 74 - .../string.cons/char_assignment.pass.cpp | 49 - .../basic.string/string.cons/copy.pass.cpp | 49 - .../string.cons/copy_alloc.pass.cpp | 49 - .../string.cons/copy_assignment.pass.cpp | 70 - .../string.cons/default_noexcept.pass.cpp | 45 - .../string.cons/dtor_noexcept.pass.cpp | 47 - .../string.cons/initializer_list.pass.cpp | 46 - .../initializer_list_assignment.pass.cpp | 36 - .../string.cons/iter_alloc.pass.cpp | 119 - .../basic.string/string.cons/move.pass.cpp | 57 - .../string.cons/move_alloc.pass.cpp | 68 - .../string.cons/move_assign_noexcept.pass.cpp | 47 - .../string.cons/move_assignment.pass.cpp | 79 - .../string.cons/move_noexcept.pass.cpp | 45 - .../string.cons/pointer_alloc.pass.cpp | 89 - .../string.cons/pointer_assignment.pass.cpp | 72 - .../string.cons/pointer_size_alloc.pass.cpp | 87 - .../string.cons/size_char_alloc.pass.cpp | 128 - .../basic.string/string.cons/substr.pass.cpp | 173 - .../string.iterators/begin.pass.cpp | 48 - .../string.iterators/cbegin.pass.cpp | 45 - .../string.iterators/cend.pass.cpp | 41 - .../string.iterators/crbegin.pass.cpp | 45 - .../string.iterators/crend.pass.cpp | 41 - .../string.iterators/db_iterators_2.pass.cpp | 52 - .../string.iterators/db_iterators_3.pass.cpp | 52 - .../string.iterators/db_iterators_4.pass.cpp | 54 - .../string.iterators/db_iterators_5.pass.cpp | 58 - .../string.iterators/db_iterators_6.pass.cpp | 56 - .../string.iterators/db_iterators_7.pass.cpp | 56 - .../string.iterators/db_iterators_8.pass.cpp | 52 - .../string.iterators/end.pass.cpp | 50 - .../string.iterators/iterators.pass.cpp | 73 - .../string.iterators/rbegin.pass.cpp | 48 - .../string.iterators/rend.pass.cpp | 50 - .../string.modifiers/nothing_to_do.pass.cpp | 12 - .../string_append/initializer_list.pass.cpp | 36 - .../string_append/iterator.pass.cpp | 150 - .../string_append/pointer.pass.cpp | 63 - .../string_append/pointer_size.pass.cpp | 72 - .../string_append/push_back.pass.cpp | 44 - .../string_append/size_char.pass.cpp | 63 - .../string_append/string.pass.cpp | 79 - .../string_append/string_size_size.pass.cpp | 118 - .../string_assign/initializer_list.pass.cpp | 36 - .../string_assign/iterator.pass.cpp | 150 - .../string_assign/pointer.pass.cpp | 63 - .../string_assign/pointer_size.pass.cpp | 72 - .../string_assign/rv_string.pass.cpp | 80 - .../string_assign/size_char.pass.cpp | 63 - .../string_assign/string.pass.cpp | 79 - .../string_assign/string_size_size.pass.cpp | 118 - .../string_copy/copy.pass.cpp | 170 - .../string_erase/erase_iter_db1.pass.cpp | 50 - .../string_erase/erase_iter_db2.pass.cpp | 52 - .../string_erase/erase_iter_iter_db1.pass.cpp | 50 - .../string_erase/erase_iter_iter_db2.pass.cpp | 50 - .../string_erase/erase_iter_iter_db3.pass.cpp | 50 - .../string_erase/erase_iter_iter_db4.pass.cpp | 48 - .../string_erase/iter.pass.cpp | 64 - .../string_erase/iter_iter.pass.cpp | 149 - .../string_erase/pop_back.pass.cpp | 55 - .../string_erase/size_size.pass.cpp | 280 - .../string_insert/iter_char.pass.cpp | 88 - .../iter_initializer_list.pass.cpp | 50 - .../string_insert/iter_iter_iter.pass.cpp | 140 - .../string_insert/iter_size_char.pass.cpp | 181 - .../string_insert/size_pointer.pass.cpp | 211 - .../string_insert/size_pointer_size.pass.cpp | 692 - .../string_insert/size_size_char.pass.cpp | 212 - .../string_insert/size_string.pass.cpp | 211 - .../size_string_size_size.pass.cpp | 1784 - .../string_op_plus_equal/char.pass.cpp | 46 - .../initializer_list.pass.cpp | 36 - .../string_op_plus_equal/pointer.pass.cpp | 78 - .../string_op_plus_equal/string.pass.cpp | 79 - .../iter_iter_initializer_list.pass.cpp | 36 - .../iter_iter_iter_iter.pass.cpp | 976 - .../string_replace/iter_iter_pointer.pass.cpp | 285 - .../iter_iter_pointer_size.pass.cpp | 976 - .../iter_iter_size_char.pass.cpp | 286 - .../string_replace/iter_iter_string.pass.cpp | 285 - .../string_replace/size_size_pointer.pass.cpp | 375 - .../size_size_pointer_size.pass.cpp | 1327 - .../size_size_size_char.pass.cpp | 374 - .../string_replace/size_size_string.pass.cpp | 372 - .../size_size_string_size_size.pass.cpp | 5966 ---- .../string_swap/swap.pass.cpp | 76 - .../string.nonmembers/nothing_to_do.pass.cpp | 12 - .../string.io/get_line.pass.cpp | 81 - .../string.io/get_line_delim.pass.cpp | 93 - .../string.io/get_line_delim_rv.pass.cpp | 51 - .../string.io/get_line_rv.pass.cpp | 51 - .../string.io/stream_extract.pass.cpp | 117 - .../string.io/stream_insert.pass.cpp | 91 - .../string.special/swap.pass.cpp | 78 - .../string.special/swap_noexcept.pass.cpp | 54 - .../string_op!=/pointer_string.pass.cpp | 69 - .../string_op!=/string_pointer.pass.cpp | 69 - .../string_op!=/string_string.pass.cpp | 70 - .../string_op+/char_string.pass.cpp | 80 - .../string_op+/pointer_string.pass.cpp | 128 - .../string_op+/string_char.pass.cpp | 80 - .../string_op+/string_pointer.pass.cpp | 128 - .../string_op+/string_string.pass.cpp | 222 - .../string_operator==/pointer_string.pass.cpp | 69 - .../string_operator==/string_pointer.pass.cpp | 69 - .../string_operator==/string_string.pass.cpp | 70 - .../string_opgt/pointer_string.pass.cpp | 69 - .../string_opgt/string_pointer.pass.cpp | 69 - .../string_opgt/string_string.pass.cpp | 70 - .../string_opgt=/pointer_string.pass.cpp | 69 - .../string_opgt=/string_pointer.pass.cpp | 69 - .../string_opgt=/string_string.pass.cpp | 70 - .../string_oplt/pointer_string.pass.cpp | 69 - .../string_oplt/string_pointer.pass.cpp | 69 - .../string_oplt/string_string.pass.cpp | 70 - .../string_oplt=/pointer_string.pass.cpp | 69 - .../string_oplt=/string_pointer.pass.cpp | 69 - .../string_oplt=/string_string.pass.cpp | 70 - .../string.ops/nothing_to_do.pass.cpp | 12 - .../string.accessors/c_str.pass.cpp | 52 - .../string.ops/string.accessors/data.pass.cpp | 52 - .../string.accessors/get_allocator.pass.cpp | 47 - .../string_compare/pointer.pass.cpp | 77 - .../string_compare/size_size_pointer.pass.cpp | 372 - .../size_size_pointer_size.pass.cpp | 1323 - .../string_compare/size_size_string.pass.cpp | 372 - .../size_size_string_size_size.pass.cpp | 5948 ---- .../string.ops/string_compare/string.pass.cpp | 77 - .../char_size.pass.cpp | 102 - .../pointer_size.pass.cpp | 158 - .../pointer_size_size.pass.cpp | 387 - .../string_size.pass.cpp | 157 - .../string_find.first.of/char_size.pass.cpp | 98 - .../pointer_size.pass.cpp | 158 - .../pointer_size_size.pass.cpp | 387 - .../string_find.first.of/string_size.pass.cpp | 157 - .../char_size.pass.cpp | 98 - .../pointer_size.pass.cpp | 158 - .../pointer_size_size.pass.cpp | 387 - .../string_size.pass.cpp | 157 - .../string_find.last.of/char_size.pass.cpp | 98 - .../string_find.last.of/pointer_size.pass.cpp | 158 - .../pointer_size_size.pass.cpp | 387 - .../string_find.last.of/string_size.pass.cpp | 157 - .../string.ops/string_find/char_size.pass.cpp | 98 - .../string_find/pointer_size.pass.cpp | 164 - .../string_find/pointer_size_size.pass.cpp | 387 - .../string_find/string_size.pass.cpp | 157 - .../string_rfind/char_size.pass.cpp | 98 - .../string_rfind/pointer_size.pass.cpp | 165 - .../string_rfind/pointer_size_size.pass.cpp | 387 - .../string_rfind/string_size.pass.cpp | 157 - .../string.ops/string_substr/substr.pass.cpp | 166 - .../string.require/nothing_to_do.pass.cpp | 12 - .../std/strings/basic.string/test_traits.h | 19 - .../std/strings/basic.string/types.pass.cpp | 85 - .../std/strings/c.strings/cctype.pass.cpp | 103 - .../std/strings/c.strings/cstring.pass.cpp | 53 - .../std/strings/c.strings/cuchar.pass.cpp | 18 - .../std/strings/c.strings/cwchar.pass.cpp | 115 - .../std/strings/c.strings/cwctype.pass.cpp | 114 - .../strings/c.strings/version_cctype.pass.cpp | 20 - .../c.strings/version_cstring.pass.cpp | 20 - .../strings/c.strings/version_cuchar.pass.cpp | 22 - .../strings/c.strings/version_cwchar.pass.cpp | 20 - .../c.strings/version_cwctype.pass.cpp | 20 - .../nothing_to_do.pass.cpp | 12 - .../assign2.pass.cpp | 24 - .../assign3.pass.cpp | 28 - .../compare.pass.cpp | 41 - .../copy.pass.cpp | 29 - .../eof.pass.cpp | 22 - .../eq.pass.cpp | 24 - .../eq_int_type.pass.cpp | 26 - .../find.pass.cpp | 28 - .../length.pass.cpp | 26 - .../lt.pass.cpp | 28 - .../move.pass.cpp | 33 - .../not_eof.pass.cpp | 26 - .../to_char_type.pass.cpp | 24 - .../to_int_type.pass.cpp | 24 - .../types.pass.cpp | 30 - .../assign2.pass.cpp | 28 - .../assign3.pass.cpp | 30 - .../compare.pass.cpp | 45 - .../copy.pass.cpp | 31 - .../eof.pass.cpp | 24 - .../eq.pass.cpp | 28 - .../eq_int_type.pass.cpp | 30 - .../find.pass.cpp | 30 - .../length.pass.cpp | 30 - .../lt.pass.cpp | 28 - .../move.pass.cpp | 35 - .../not_eof.pass.cpp | 30 - .../to_char_type.pass.cpp | 28 - .../to_int_type.pass.cpp | 28 - .../types.pass.cpp | 33 - .../assign2.pass.cpp | 28 - .../assign3.pass.cpp | 30 - .../compare.pass.cpp | 45 - .../copy.pass.cpp | 31 - .../eof.pass.cpp | 24 - .../eq.pass.cpp | 28 - .../eq_int_type.pass.cpp | 30 - .../find.pass.cpp | 30 - .../length.pass.cpp | 30 - .../lt.pass.cpp | 28 - .../move.pass.cpp | 35 - .../not_eof.pass.cpp | 30 - .../to_char_type.pass.cpp | 28 - .../to_int_type.pass.cpp | 28 - .../types.pass.cpp | 33 - .../assign2.pass.cpp | 24 - .../assign3.pass.cpp | 28 - .../compare.pass.cpp | 41 - .../copy.pass.cpp | 29 - .../eof.pass.cpp | 22 - .../eq.pass.cpp | 24 - .../eq_int_type.pass.cpp | 26 - .../find.pass.cpp | 28 - .../length.pass.cpp | 26 - .../lt.pass.cpp | 24 - .../move.pass.cpp | 33 - .../not_eof.pass.cpp | 26 - .../to_char_type.pass.cpp | 24 - .../to_int_type.pass.cpp | 24 - .../types.pass.cpp | 30 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../char.traits/nothing_to_do.pass.cpp | 12 - .../strings/string.classes/typedefs.pass.cpp | 30 - .../strings/string.conversions/stod.pass.cpp | 166 - .../strings/string.conversions/stof.pass.cpp | 170 - .../strings/string.conversions/stoi.pass.cpp | 108 - .../strings/string.conversions/stol.pass.cpp | 111 - .../strings/string.conversions/stold.pass.cpp | 168 - .../strings/string.conversions/stoll.pass.cpp | 110 - .../strings/string.conversions/stoul.pass.cpp | 109 - .../string.conversions/stoull.pass.cpp | 110 - .../string.conversions/to_string.pass.cpp | 126 - .../string.conversions/to_wstring.pass.cpp | 126 - .../strings.general/nothing_to_do.pass.cpp | 13 - libcxx/test/std/strings/version.pass.cpp | 20 - .../futures/futures.async/async.pass.cpp | 198 - .../default_error_condition.pass.cpp | 27 - .../equivalent_error_code_int.pass.cpp | 26 - .../equivalent_int_error_condition.pass.cpp | 27 - .../futures.errors/future_category.pass.cpp | 24 - .../futures.errors/make_error_code.pass.cpp | 28 - .../make_error_condition.pass.cpp | 30 - .../futures.future_error/code.pass.cpp | 43 - .../futures.future_error/types.pass.cpp | 23 - .../futures.future_error/what.pass.cpp | 50 - .../futures.overview/future_errc.pass.cpp | 30 - .../futures.overview/future_status.pass.cpp | 28 - .../is_error_code_enum_future_errc.pass.cpp | 21 - .../futures/futures.overview/launch.pass.cpp | 45 - .../futures.promise/alloc_ctor.pass.cpp | 84 - .../futures.promise/copy_assign.fail.cpp | 87 - .../futures.promise/copy_ctor.fail.cpp | 81 - .../futures/futures.promise/default.pass.cpp | 38 - .../futures/futures.promise/dtor.pass.cpp | 116 - .../futures.promise/get_future.pass.cpp | 55 - .../futures.promise/move_assign.pass.cpp | 91 - .../futures.promise/move_ctor.pass.cpp | 85 - .../futures.promise/set_exception.pass.cpp | 47 - .../set_exception_at_thread_exit.pass.cpp | 44 - .../futures.promise/set_lvalue.pass.cpp | 43 - .../set_lvalue_at_thread_exit.pass.cpp | 38 - .../futures.promise/set_rvalue.pass.cpp | 69 - .../set_rvalue_at_thread_exit.pass.cpp | 41 - .../set_value_at_thread_exit_const.pass.cpp | 35 - .../set_value_at_thread_exit_void.pass.cpp | 39 - .../futures.promise/set_value_const.pass.cpp | 63 - .../futures.promise/set_value_void.pass.cpp | 39 - .../futures/futures.promise/swap.pass.cpp | 84 - .../futures.promise/uses_allocator.pass.cpp | 28 - .../copy_assign.pass.cpp | 76 - .../futures.shared_future/copy_ctor.pass.cpp | 68 - .../ctor_future.pass.cpp | 68 - .../futures.shared_future/default.pass.cpp | 35 - .../futures.shared_future/dtor.pass.cpp | 68 - .../futures.shared_future/get.pass.cpp | 145 - .../move_assign.pass.cpp | 76 - .../futures.shared_future/move_ctor.pass.cpp | 68 - .../futures.shared_future/wait.pass.cpp | 88 - .../futures.shared_future/wait_for.pass.cpp | 97 - .../futures.shared_future/wait_until.pass.cpp | 129 - .../futures.state/nothing_to_do.pass.cpp | 13 - .../futures.task.members/assign_copy.fail.cpp | 48 - .../futures.task.members/assign_move.pass.cpp | 50 - .../futures.task.members/ctor1.fail.cpp | 29 - .../futures.task.members/ctor2.fail.cpp | 30 - .../futures.task.members/ctor_copy.fail.cpp | 46 - .../ctor_default.pass.cpp | 27 - .../futures.task.members/ctor_func.pass.cpp | 79 - .../ctor_func_alloc.pass.cpp | 124 - .../futures.task.members/ctor_move.pass.cpp | 48 - .../futures.task.members/dtor.pass.cpp | 62 - .../futures.task.members/get_future.pass.cpp | 64 - .../make_ready_at_thread_exit.pass.cpp | 106 - .../futures.task.members/operator.pass.cpp | 107 - .../futures.task.members/reset.pass.cpp | 60 - .../futures.task.members/swap.pass.cpp | 50 - .../futures.task.nonmembers/swap.pass.cpp | 52 - .../uses_allocator.pass.cpp | 26 - .../thread/futures/futures.tas/types.pass.cpp | 28 - .../copy_assign.fail.cpp | 74 - .../futures.unique_future/copy_ctor.fail.cpp | 66 - .../futures.unique_future/default.pass.cpp | 35 - .../futures.unique_future/dtor.pass.cpp | 68 - .../futures.unique_future/get.pass.cpp | 145 - .../move_assign.pass.cpp | 76 - .../futures.unique_future/move_ctor.pass.cpp | 70 - .../futures.unique_future/share.pass.cpp | 68 - .../futures.unique_future/wait.pass.cpp | 88 - .../futures.unique_future/wait_for.pass.cpp | 97 - .../futures.unique_future/wait_until.pass.cpp | 129 - .../test/std/thread/futures/test_allocator.h | 158 - .../test/std/thread/futures/version.pass.cpp | 22 - libcxx/test/std/thread/macro.pass.cpp | 23 - .../thread.condition/cv_status.pass.cpp | 23 - .../notify_all_at_thread_exit.pass.cpp | 44 - .../thread.condition.condvar/assign.fail.cpp | 24 - .../thread.condition.condvar/copy.fail.cpp | 23 - .../thread.condition.condvar/default.pass.cpp | 24 - .../destructor.pass.cpp | 58 - .../native_handle.pass.cpp | 29 - .../notify_all.pass.cpp | 69 - .../notify_one.pass.cpp | 94 - .../thread.condition.condvar/wait.pass.cpp | 52 - .../wait_for.pass.cpp | 87 - .../wait_for_pred.pass.cpp | 95 - .../wait_pred.pass.cpp | 62 - .../wait_until.pass.cpp | 102 - .../wait_until_pred.pass.cpp | 113 - .../assign.fail.cpp | 24 - .../thread.condition.condvarany/copy.fail.cpp | 23 - .../default.pass.cpp | 24 - .../destructor.pass.cpp | 59 - .../notify_all.pass.cpp | 73 - .../notify_one.pass.cpp | 98 - .../wait.exception.pass.cpp | 63 - .../thread.condition.condvarany/wait.pass.cpp | 57 - .../wait_for.exception.pass.cpp | 63 - .../wait_for.pass.cpp | 90 - .../wait_for_pred.pass.cpp | 98 - .../wait_pred.pass.cpp | 66 - .../wait_until.pass.cpp | 105 - .../wait_until_pred.pass.cpp | 117 - .../thread/thread.condition/version.pass.cpp | 22 - .../thread.general/nothing_to_do.pass.cpp | 12 - .../thread.lock.algorithm/lock.pass.cpp | 507 - .../thread.lock.algorithm/try_lock.pass.cpp | 516 - .../thread.lock.guard/adopt_lock.pass.cpp | 51 - .../thread.lock.guard/assign.fail.cpp | 25 - .../thread.lock.guard/copy.fail.cpp | 23 - .../thread.lock.guard/mutex.fail.cpp | 48 - .../thread.lock.guard/mutex.pass.cpp | 50 - .../thread.lock.guard/types.pass.cpp | 29 - .../copy_assign.fail.cpp | 34 - .../copy_ctor.fail.cpp | 30 - .../thread.lock.shared.cons/default.pass.cpp | 28 - .../move_assign.pass.cpp | 39 - .../move_ctor.pass.cpp | 35 - .../thread.lock.shared.cons/mutex.pass.cpp | 81 - .../mutex_adopt_lock.pass.cpp | 30 - .../mutex_defer_lock.pass.cpp | 29 - .../mutex_duration.pass.cpp | 81 - .../mutex_time_point.pass.cpp | 81 - .../mutex_try_to_lock.pass.cpp | 74 - .../thread.lock.shared.locking/lock.pass.cpp | 79 - .../try_lock.pass.cpp | 70 - .../try_lock_for.pass.cpp | 75 - .../try_lock_until.pass.cpp | 75 - .../unlock.pass.cpp | 62 - .../member_swap.pass.cpp | 45 - .../nonmember_swap.pass.cpp | 46 - .../thread.lock.shared.mod/release.pass.cpp | 53 - .../thread.lock.shared.obs/mutex.pass.cpp | 38 - .../thread.lock.shared.obs/op_bool.pass.cpp | 38 - .../thread.lock.shared.obs/owns_lock.pass.cpp | 38 - .../thread.lock.shared/types.pass.cpp | 31 - .../copy_assign.fail.cpp | 31 - .../copy_ctor.fail.cpp | 29 - .../thread.lock.unique.cons/default.pass.cpp | 26 - .../move_assign.pass.cpp | 35 - .../move_ctor.pass.cpp | 33 - .../thread.lock.unique.cons/mutex.pass.cpp | 50 - .../mutex_adopt_lock.pass.cpp | 28 - .../mutex_defer_lock.pass.cpp | 27 - .../mutex_duration.pass.cpp | 68 - .../mutex_time_point.pass.cpp | 68 - .../mutex_try_to_lock.pass.cpp | 64 - .../thread.lock.unique.locking/lock.pass.cpp | 69 - .../try_lock.pass.cpp | 64 - .../try_lock_for.pass.cpp | 69 - .../try_lock_until.pass.cpp | 69 - .../unlock.pass.cpp | 56 - .../member_swap.pass.cpp | 38 - .../nonmember_swap.pass.cpp | 39 - .../thread.lock.unique.mod/release.pass.cpp | 46 - .../thread.lock.unique.obs/mutex.pass.cpp | 31 - .../thread.lock.unique.obs/op_bool.pass.cpp | 31 - .../thread.lock.unique.obs/owns_lock.pass.cpp | 31 - .../thread.lock.unique/types.pass.cpp | 29 - .../thread.mutex/thread.lock/types.pass.cpp | 34 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../thread.mutex.class/assign.fail.cpp | 23 - .../thread.mutex.class/copy.fail.cpp | 22 - .../thread.mutex.class/default.pass.cpp | 23 - .../thread.mutex.class/lock.pass.cpp | 50 - .../thread.mutex.class/native_handle.pass.cpp | 27 - .../thread.mutex.class/try_lock.pass.cpp | 52 - .../thread.mutex.recursive/assign.fail.cpp | 23 - .../thread.mutex.recursive/copy.fail.cpp | 22 - .../thread.mutex.recursive/default.pass.cpp | 23 - .../thread.mutex.recursive/lock.pass.cpp | 52 - .../native_handle.pass.cpp | 27 - .../thread.mutex.recursive/try_lock.pass.cpp | 54 - .../nothing_to_do.pass.cpp | 12 - .../assign.fail.cpp | 27 - .../copy.fail.cpp | 26 - .../default.pass.cpp | 25 - .../lock.pass.cpp | 54 - .../lock_shared.pass.cpp | 77 - .../try_lock.pass.cpp | 58 - .../try_lock_for.pass.cpp | 73 - .../try_lock_shared.pass.cpp | 62 - .../try_lock_shared_for.pass.cpp | 80 - .../try_lock_shared_until.pass.cpp | 80 - .../try_lock_until.pass.cpp | 73 - .../try_lock_until_deadlock_bug.pass.cpp | 70 - .../nothing_to_do.pass.cpp | 12 - .../thread.timedmutex.class/assign.fail.cpp | 23 - .../thread.timedmutex.class/copy.fail.cpp | 22 - .../thread.timedmutex.class/default.pass.cpp | 23 - .../thread.timedmutex.class/lock.pass.cpp | 50 - .../thread.timedmutex.class/try_lock.pass.cpp | 52 - .../try_lock_for.pass.cpp | 67 - .../try_lock_until.pass.cpp | 67 - .../assign.fail.cpp | 23 - .../thread.timedmutex.recursive/copy.fail.cpp | 22 - .../default.pass.cpp | 23 - .../thread.timedmutex.recursive/lock.pass.cpp | 52 - .../try_lock.pass.cpp | 54 - .../try_lock_for.pass.cpp | 69 - .../try_lock_until.pass.cpp | 69 - .../thread.once/nothing_to_do.pass.cpp | 12 - .../thread.once.callonce/call_once.pass.cpp | 208 - .../thread.once.onceflag/assign.fail.cpp | 23 - .../thread.once.onceflag/copy.fail.cpp | 22 - .../thread.once.onceflag/default.pass.cpp | 28 - .../std/thread/thread.mutex/version.pass.cpp | 20 - .../thread/thread.req/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../thread.req.native/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../thread.req.timing/nothing_to_do.pass.cpp | 12 - .../thread.thread.algorithm/swap.pass.cpp | 58 - .../thread.thread.assign/copy.fail.cpp | 51 - .../thread.thread.assign/move.pass.cpp | 65 - .../thread.thread.assign/move2.pass.cpp | 77 - .../thread.thread.constr/F.pass.cpp | 154 - .../thread.thread.constr/constr.fail.cpp | 26 - .../thread.thread.constr/copy.fail.cpp | 66 - .../thread.thread.constr/default.pass.cpp | 25 - .../thread.thread.constr/move.pass.cpp | 72 - .../thread.thread.destr/dtor.pass.cpp | 66 - .../thread.thread.id/assign.pass.cpp | 29 - .../thread.thread.id/copy.pass.cpp | 26 - .../thread.thread.id/default.pass.cpp | 25 - .../thread.thread.id/eq.pass.cpp | 32 - .../thread.thread.id/lt.pass.cpp | 43 - .../thread.thread.id/stream.pass.cpp | 29 - .../thread.thread.id/thread_id.pass.cpp | 35 - .../thread.thread.member/detach.pass.cpp | 56 - .../thread.thread.member/get_id.pass.cpp | 57 - .../thread.thread.member/join.pass.cpp | 54 - .../thread.thread.member/joinable.pass.cpp | 54 - .../native_handle.pass.cpp | 54 - .../thread.thread.member/swap.pass.cpp | 58 - .../hardware_concurrency.pass.cpp | 24 - .../thread.thread.class/types.pass.cpp | 27 - .../thread.thread.this/get_id.pass.cpp | 23 - .../thread.thread.this/sleep_for.pass.cpp | 54 - .../thread.thread.this/sleep_until.pass.cpp | 34 - .../thread.thread.this/yield.pass.cpp | 22 - .../thread/thread.threads/version.pass.cpp | 22 - .../allocator.adaptor.cnstr/allocs.pass.cpp | 112 - .../converting_copy.pass.cpp | 69 - .../converting_move.pass.cpp | 75 - .../allocator.adaptor.cnstr/copy.pass.cpp | 70 - .../allocator.adaptor.cnstr/default.pass.cpp | 58 - .../allocate_size.pass.cpp | 49 - .../allocate_size_hint.pass.cpp | 70 - .../construct.pass.cpp | 193 - .../deallocate.pass.cpp | 46 - .../destroy.pass.cpp | 70 - .../inner_allocator.pass.cpp | 45 - .../max_size.pass.cpp | 43 - .../outer_allocator.pass.cpp | 44 - ...ct_on_container_copy_construction.pass.cpp | 55 - .../allocator_pointers.pass.cpp | 117 - .../inner_allocator_type.pass.cpp | 39 - ...gate_on_container_copy_assignment.pass.cpp | 39 - ...gate_on_container_move_assignment.pass.cpp | 39 - .../propagate_on_container_swap.pass.cpp | 39 - .../scoped.adaptor.operators/eq.pass.cpp | 64 - .../allocator.adaptor/types.pass.cpp | 102 - .../date.time/tested_elsewhere.pass.cpp | 38 - .../arithmetic.operations/divides.pass.cpp | 39 - .../arithmetic.operations/minus.pass.cpp | 39 - .../arithmetic.operations/modulus.pass.cpp | 39 - .../arithmetic.operations/multiplies.pass.cpp | 39 - .../arithmetic.operations/negate.pass.cpp | 38 - .../arithmetic.operations/plus.pass.cpp | 39 - .../transparent.pass.cpp | 61 - .../func.bind/func.bind.bind/copy.pass.cpp | 35 - .../invoke_function_object.pass.cpp | 49 - .../func.bind.bind/invoke_int_0.pass.cpp | 53 - .../func.bind.bind/invoke_lvalue.pass.cpp | 287 - .../func.bind.bind/invoke_rvalue.pass.cpp | 266 - .../func.bind.bind/invoke_void_0.pass.cpp | 59 - .../func.bind/func.bind.bind/nested.pass.cpp | 51 - .../is_bind_expression.pass.cpp | 32 - .../func.bind.isbind/is_placeholder.pass.cpp | 41 - .../func.bind.place/placeholders.pass.cpp | 43 - .../bind/func.bind/nothing_to_do.pass.cpp | 12 - .../bind/nothing_to_do.pass.cpp | 12 - .../bitwise.operations/bit_and.pass.cpp | 59 - .../bitwise.operations/bit_not.pass.cpp | 47 - .../bitwise.operations/bit_or.pass.cpp | 59 - .../bitwise.operations/bit_xor.pass.cpp | 63 - .../bitwise.operations/transparent.pass.cpp | 51 - .../comparisons/equal_to.pass.cpp | 41 - .../comparisons/greater.pass.cpp | 45 - .../comparisons/greater_equal.pass.cpp | 45 - .../comparisons/less.pass.cpp | 45 - .../comparisons/less_equal.pass.cpp | 45 - .../comparisons/not_equal_to.pass.cpp | 43 - .../comparisons/transparent.pass.cpp | 61 - .../func.def/nothing_to_do.pass.cpp | 12 - .../func.memfn/member_data.fail.cpp | 42 - .../func.memfn/member_data.pass.cpp | 43 - .../func.memfn/member_function.pass.cpp | 72 - .../func.memfn/member_function_const.pass.cpp | 78 - .../member_function_const_volatile.pass.cpp | 78 - .../member_function_volatile.pass.cpp | 78 - .../func.require/binary_function.pass.cpp | 23 - .../func.require/invoke.pass.cpp | 50 - .../func.require/unary_function.pass.cpp | 22 - .../bad_function_call.pass.cpp | 26 - .../bad_function_call_ctor.pass.cpp | 20 - .../func.wrap.func.alg/swap.pass.cpp | 123 - .../func.wrap.func.cap/operator_bool.pass.cpp | 29 - .../func.wrap.func.con/F.pass.cpp | 90 - .../func.wrap.func.con/F_assign.pass.cpp | 98 - .../func.wrap.func.con/F_incomplete.pass.cpp | 29 - .../func.wrap.func.con/alloc.pass.cpp | 27 - .../func.wrap.func.con/alloc_F.pass.cpp | 100 - .../alloc_function.pass.cpp | 100 - .../func.wrap.func.con/alloc_nullptr.pass.cpp | 25 - .../alloc_rfunction.pass.cpp | 68 - .../func.wrap.func.con/copy.pass.cpp | 118 - .../func.wrap.func.con/copy_assign.pass.cpp | 109 - .../func.wrap.func.con/default.pass.cpp | 23 - .../func.wrap.func.con/no-variadics.pass.cpp | 24 - .../func.wrap.func.con/nullptr_t.pass.cpp | 23 - .../nullptr_t_assign.pass.cpp | 72 - .../func.wrap.func.inv/invoke.fail.cpp | 46 - .../func.wrap.func.inv/invoke.pass.cpp | 335 - .../func.wrap.func.inv/invoke_int_0.pass.cpp | 58 - .../invoke_no_variadics.pass.cpp | 60 - .../func.wrap.func.inv/invoke_void_0.pass.cpp | 67 - .../assign_F_alloc.pass.cpp | 60 - .../func.wrap.func.mod/swap.pass.cpp | 120 - .../operator_==.pass.cpp | 41 - .../func.wrap.func.targ/target.pass.cpp | 89 - .../func.wrap.func.targ/target_type.pass.cpp | 61 - .../func.wrap/func.wrap.func/types.pass.cpp | 108 - .../func.wrap/nothing_to_do.pass.cpp | 12 - .../logical.operations/logical_and.pass.cpp | 50 - .../logical.operations/logical_not.pass.cpp | 40 - .../logical.operations/logical_or.pass.cpp | 49 - .../logical.operations/transparent.pass.cpp | 46 - .../negators/binary_negate.pass.cpp | 29 - .../function.objects/negators/not1.pass.cpp | 22 - .../function.objects/negators/not2.pass.cpp | 24 - .../negators/unary_negate.pass.cpp | 26 - .../function.objects/refwrap/binary.pass.cpp | 80 - .../refwrap.access/conversion.pass.cpp | 46 - .../refwrap.assign/copy_assign.pass.cpp | 58 - .../refwrap/refwrap.const/copy_ctor.pass.cpp | 46 - .../refwrap/refwrap.const/type_ctor.fail.cpp | 22 - .../refwrap/refwrap.const/type_ctor.pass.cpp | 45 - .../refwrap/refwrap.helpers/cref_1.pass.cpp | 24 - .../refwrap/refwrap.helpers/cref_2.pass.cpp | 25 - .../refwrap/refwrap.helpers/ref_1.fail.cpp | 27 - .../refwrap/refwrap.helpers/ref_1.pass.cpp | 24 - .../refwrap/refwrap.helpers/ref_2.pass.cpp | 43 - .../refwrap/refwrap.invoke/invoke.fail.cpp | 52 - .../refwrap/refwrap.invoke/invoke.pass.cpp | 329 - .../refwrap.invoke/invoke_int_0.pass.cpp | 76 - .../refwrap.invoke/invoke_void_0.pass.cpp | 68 - .../function.objects/refwrap/type.pass.cpp | 37 - .../refwrap/type_properties.pass.cpp | 58 - .../function.objects/refwrap/unary.pass.cpp | 78 - .../refwrap/weak_result.pass.cpp | 82 - .../function.objects/unord.hash/enum.fail.cpp | 24 - .../function.objects/unord.hash/enum.pass.cpp | 62 - .../unord.hash/floating.pass.cpp | 70 - .../unord.hash/integral.pass.cpp | 60 - .../unord.hash/pointer.pass.cpp | 44 - .../function.objects/version.pass.cpp | 20 - .../intseq.general/integer_seq.pass.cpp | 86 - .../intseq/intseq.intseq/integer_seq.fail.cpp | 38 - .../intseq/intseq.intseq/integer_seq.pass.cpp | 48 - .../intseq.make/make_integer_seq.fail.cpp | 30 - .../intseq.make/make_integer_seq.pass.cpp | 34 - .../utilities/intseq/nothing_to_do.pass.cpp | 12 - .../allocator.tag/allocator_arg.pass.cpp | 22 - .../allocate.pass.cpp | 38 - .../allocate_hint.pass.cpp | 60 - .../construct.pass.cpp | 143 - .../deallocate.pass.cpp | 42 - .../allocator.traits.members/destroy.pass.cpp | 80 - .../max_size.pass.cpp | 70 - ...ct_on_container_copy_construction.pass.cpp | 68 - .../const_pointer.pass.cpp | 55 - .../const_void_pointer.pass.cpp | 55 - .../difference_type.pass.cpp | 62 - .../allocator.traits.types/pointer.pass.cpp | 42 - ...gate_on_container_copy_assignment.pass.cpp | 40 - ...gate_on_container_move_assignment.pass.cpp | 40 - .../propagate_on_container_swap.pass.cpp | 40 - .../rebind_alloc.pass.cpp | 79 - .../allocator.traits.types/size_type.pass.cpp | 63 - .../void_pointer.pass.cpp | 55 - .../allocator.traits/allocator_type.pass.cpp | 31 - .../allocator.traits/rebind_traits.pass.cpp | 79 - .../allocator.traits/value_type.pass.cpp | 31 - .../tested_elsewhere.pass.cpp | 12 - .../uses_allocator.pass.cpp | 33 - .../allocator.uses/nothing_to_do.pass.cpp | 12 - .../memory/c.malloc/nothing_to_do.pass.cpp | 14 - .../allocator.globals/eq.pass.cpp | 31 - .../allocator.members/address.pass.cpp | 39 - .../allocator.members/allocate.pass.cpp | 52 - .../allocator.members/construct.pass.cpp | 142 - .../allocator.members/max_size.pass.cpp | 27 - .../allocator_pointers.pass.cpp | 116 - .../allocator_types.pass.cpp | 50 - .../default.allocator/allocator_void.pass.cpp | 36 - .../pointer.traits/difference_type.pass.cpp | 25 - .../pointer.traits/element_type.pass.cpp | 25 - .../memory/pointer.traits/pointer.pass.cpp | 32 - .../pointer_to.pass.cpp | 48 - .../difference_type.pass.cpp | 48 - .../element_type.pass.cpp | 49 - .../pointer.traits.types/rebind.pass.cpp | 69 - .../memory/pointer.traits/pointer_to.pass.cpp | 32 - .../memory/pointer.traits/rebind.pass.cpp | 29 - .../utilities/memory/ptr.align/align.pass.cpp | 84 - .../nothing_to_do.pass.cpp | 12 - .../specialized.addressof/addressof.pass.cpp | 51 - .../uninitialized_copy.pass.cpp | 51 - .../uninitialized_copy_n.pass.cpp | 51 - .../uninitialized_fill_n.pass.cpp | 50 - .../uninitialized_fill.pass.cpp | 50 - .../raw_storag_iterator.pass.cpp | 44 - .../temporary_buffer.pass.cpp | 29 - .../std/utilities/memory/unique.ptr/deleter.h | 182 - .../memory/unique.ptr/nothing_to_do.pass.cpp | 12 - .../make_unique.array.pass.cpp | 45 - .../make_unique.array1.fail.cpp | 17 - .../make_unique.array2.fail.cpp | 17 - .../make_unique.array3.fail.cpp | 17 - .../make_unique.array4.fail.cpp | 17 - .../make_unique.single.pass.cpp | 33 - .../unique.ptr.dltr/nothing_to_do.pass.cpp | 12 - .../convert_ctor.pass.cpp | 48 - .../unique.ptr.dltr.dflt/default.pass.cpp | 34 - .../unique.ptr.dltr.dflt/incomplete.fail.cpp | 26 - .../unique.ptr.dltr.dflt/void.fail.cpp | 24 - .../convert_ctor.fail.cpp | 32 - .../unique.ptr.dltr.dflt1/default.pass.cpp | 36 - .../unique.ptr.dltr.dflt1/incomplete.fail.cpp | 26 - .../nothing_to_do.pass.cpp | 12 - .../unique.ptr.runtime/move01.fail.cpp | 39 - .../unique.ptr.runtime/move01.pass.cpp | 79 - .../unique.ptr.runtime/move02.fail.cpp | 39 - .../unique.ptr.runtime/move03.fail.cpp | 57 - .../unique.ptr.runtime/move04.fail.cpp | 57 - .../move_convert01.fail.cpp | 57 - .../move_convert02.fail.cpp | 61 - .../move_convert03.fail.cpp | 62 - .../move_convert04.fail.cpp | 57 - .../move_convert05.fail.cpp | 61 - .../move_convert06.fail.cpp | 62 - .../move_convert07.fail.cpp | 56 - .../move_convert08.fail.cpp | 60 - .../move_convert09.fail.cpp | 62 - .../unique.ptr.runtime/null_asgn.pass.cpp | 41 - .../unique.ptr.runtime/null_ctor.pass.cpp | 44 - .../unique.ptr.runtime/nullptr_asgn.pass.cpp | 41 - .../unique.ptr.runtime/pointer_type.pass.cpp | 34 - .../default01.fail.cpp | 39 - .../default01.pass.cpp | 47 - .../default02.fail.cpp | 30 - .../default02.pass.cpp | 87 - .../default03.fail.cpp | 23 - .../unique.ptr.runtime.ctor/move01.fail.cpp | 42 - .../unique.ptr.runtime.ctor/move01.pass.cpp | 86 - .../unique.ptr.runtime.ctor/move02.fail.cpp | 42 - .../unique.ptr.runtime.ctor/move02.pass.cpp | 87 - .../unique.ptr.runtime.ctor/move03.fail.cpp | 55 - .../unique.ptr.runtime.ctor/move04.fail.cpp | 55 - .../move_convert01.fail.cpp | 57 - .../move_convert02.fail.cpp | 61 - .../move_convert03.fail.cpp | 78 - .../move_convert04.fail.cpp | 57 - .../move_convert05.fail.cpp | 61 - .../move_convert06.fail.cpp | 78 - .../move_convert07.fail.cpp | 57 - .../move_convert08.fail.cpp | 61 - .../move_convert09.fail.cpp | 78 - .../move_convert10.fail.cpp | 57 - .../move_convert11.fail.cpp | 61 - .../move_convert12.fail.cpp | 78 - .../move_convert13.fail.cpp | 57 - .../move_convert14.fail.cpp | 61 - .../move_convert15.fail.cpp | 78 - .../move_convert16.fail.cpp | 57 - .../move_convert17.fail.cpp | 61 - .../move_convert18.fail.cpp | 78 - .../unique.ptr.runtime.ctor/nullptr.pass.cpp | 46 - .../pointer01.fail.cpp | 36 - .../pointer01.pass.cpp | 63 - .../pointer02.fail.cpp | 29 - .../pointer02.pass.cpp | 95 - .../pointer03.fail.cpp | 23 - .../pointer04.fail.cpp | 67 - .../pointer_deleter01.pass.cpp | 43 - .../pointer_deleter02.pass.cpp | 58 - .../pointer_deleter03.pass.cpp | 60 - .../pointer_deleter04.fail.cpp | 55 - .../pointer_deleter04.pass.cpp | 58 - .../pointer_deleter05.fail.cpp | 58 - .../release.pass.cpp | 27 - .../reset1.pass.cpp | 50 - .../reset2.fail.cpp | 64 - .../swap.pass.cpp | 56 - .../dereference.fail.cpp | 23 - .../explicit_bool.pass.cpp | 39 - .../unique.ptr.runtime.observers/get.pass.cpp | 24 - .../get_deleter.pass.cpp | 37 - .../index.pass.cpp | 47 - .../op_arrow.fail.cpp | 30 - .../unique.ptr.single/pointer_type.pass.cpp | 34 - .../unique.ptr.single.asgn/move01.fail.cpp | 38 - .../unique.ptr.single.asgn/move01.pass.cpp | 75 - .../unique.ptr.single.asgn/move02.fail.cpp | 38 - .../unique.ptr.single.asgn/move03.fail.cpp | 56 - .../unique.ptr.single.asgn/move04.fail.cpp | 56 - .../move_convert01.fail.cpp | 57 - .../move_convert01.pass.cpp | 56 - .../move_convert02.fail.cpp | 61 - .../move_convert02.pass.cpp | 60 - .../move_convert03.fail.cpp | 62 - .../move_convert03.pass.cpp | 63 - .../move_convert04.fail.cpp | 57 - .../move_convert05.fail.cpp | 61 - .../move_convert06.fail.cpp | 62 - .../move_convert13.fail.cpp | 36 - .../unique.ptr.single.asgn/null.pass.cpp | 41 - .../unique.ptr.single.asgn/nullptr.pass.cpp | 41 - .../auto_pointer.pass.cpp | 68 - .../auto_pointer01.fail.cpp | 67 - .../auto_pointer02.fail.cpp | 61 - .../unique.ptr.single.ctor/default01.fail.cpp | 35 - .../unique.ptr.single.ctor/default01.pass.cpp | 46 - .../unique.ptr.single.ctor/default02.fail.cpp | 29 - .../unique.ptr.single.ctor/default02.pass.cpp | 84 - .../unique.ptr.single.ctor/default03.fail.cpp | 23 - .../unique.ptr.single.ctor/move01.fail.cpp | 42 - .../unique.ptr.single.ctor/move01.pass.cpp | 142 - .../unique.ptr.single.ctor/move02.fail.cpp | 42 - .../unique.ptr.single.ctor/move02.pass.cpp | 143 - .../unique.ptr.single.ctor/move03.fail.cpp | 55 - .../unique.ptr.single.ctor/move04.fail.cpp | 55 - .../move_convert01.fail.cpp | 56 - .../move_convert01.pass.cpp | 58 - .../move_convert02.fail.cpp | 62 - .../move_convert02.pass.cpp | 62 - .../move_convert03.fail.cpp | 79 - .../move_convert03.pass.cpp | 79 - .../move_convert04.fail.cpp | 58 - .../move_convert04.pass.cpp | 58 - .../move_convert05.fail.cpp | 51 - .../move_convert05.pass.cpp | 62 - .../move_convert06.fail.cpp | 79 - .../move_convert06.pass.cpp | 79 - .../move_convert07.fail.cpp | 58 - .../move_convert07.pass.cpp | 63 - .../move_convert08.fail.cpp | 118 - .../move_convert09.fail.cpp | 79 - .../move_convert10.fail.cpp | 58 - .../move_convert11.fail.cpp | 118 - .../move_convert12.fail.cpp | 79 - .../move_convert13.fail.cpp | 35 - .../unique.ptr.single.ctor/nullptr.pass.cpp | 46 - .../unique.ptr.single.ctor/pointer01.fail.cpp | 35 - .../unique.ptr.single.ctor/pointer01.pass.cpp | 63 - .../unique.ptr.single.ctor/pointer02.fail.cpp | 29 - .../unique.ptr.single.ctor/pointer02.pass.cpp | 95 - .../unique.ptr.single.ctor/pointer03.fail.cpp | 23 - .../unique.ptr.single.ctor/pointer03.pass.cpp | 78 - .../pointer_deleter01.pass.cpp | 99 - .../pointer_deleter02.pass.cpp | 58 - .../pointer_deleter03.pass.cpp | 60 - .../pointer_deleter04.fail.cpp | 55 - .../pointer_deleter04.pass.cpp | 58 - .../pointer_deleter05.pass.cpp | 66 - .../pointer_deleter06.pass.cpp | 39 - .../unique.ptr.single.dtor/null.pass.cpp | 44 - .../release.pass.cpp | 27 - .../reset1.pass.cpp | 50 - .../reset2.pass.cpp | 66 - .../reset_self.pass.cpp | 29 - .../unique.ptr.single.modifiers/swap.pass.cpp | 59 - .../dereference.pass.cpp | 23 - .../explicit_bool.pass.cpp | 39 - .../unique.ptr.single.observers/get.pass.cpp | 24 - .../get_deleter.pass.cpp | 37 - .../index.fail.cpp | 47 - .../op_arrow.pass.cpp | 30 - .../unique.ptr.special/cmp_nullptr.pass.cpp | 69 - .../unique.ptr/unique.ptr.special/eq.pass.cpp | 86 - .../unique.ptr.special/rel.pass.cpp | 100 - .../unique.ptr.special/swap.pass.cpp | 77 - .../declare_no_pointers.pass.cpp | 23 - .../declare_reachable.pass.cpp | 24 - .../get_pointer_safety.pass.cpp | 23 - .../util.smartptr/nothing_to_do.pass.cpp | 12 - .../enable_shared_from_this.pass.cpp | 49 - .../hash_shared_ptr.pass.cpp | 30 - .../hash_unique_ptr.pass.cpp | 30 - .../atomic_compare_exchange_strong.pass.cpp | 53 - ..._compare_exchange_strong_explicit.pass.cpp | 58 - .../atomic_compare_exchange_weak.pass.cpp | 53 - ...ic_compare_exchange_weak_explicit.pass.cpp | 58 - .../atomic_exchange.pass.cpp | 39 - .../atomic_exchange_explicit.pass.cpp | 39 - .../atomic_is_lock_free.pass.cpp | 31 - .../atomic_load.pass.cpp | 37 - .../atomic_load_explicit.pass.cpp | 37 - .../atomic_store.pass.cpp | 38 - .../atomic_store_explicit.pass.cpp | 38 - .../util.smartptr.shared/test_deleter.h | 68 - .../util.smartptr.shared/types.pass.cpp | 26 - .../get_deleter.pass.cpp | 67 - .../auto_ptr_Y.pass.cpp | 113 - .../shared_ptr.pass.cpp | 121 - .../shared_ptr_Y.pass.cpp | 121 - .../shared_ptr_Y_rv.pass.cpp | 123 - .../shared_ptr_rv.pass.cpp | 123 - .../unique_ptr_Y.pass.cpp | 113 - .../const_pointer_cast.pass.cpp | 57 - .../dynamic_pointer_cast.pass.cpp | 57 - .../static_pointer_cast.pass.cpp | 69 - .../cmp_nullptr.pass.cpp | 69 - .../util.smartptr.shared.cmp/eq.pass.cpp | 31 - .../util.smartptr.shared.cmp/lt.pass.cpp | 30 - .../auto_ptr.pass.cpp | 104 - .../default.pass.cpp | 22 - .../nullptr_t.pass.cpp | 22 - .../nullptr_t_deleter.pass.cpp | 47 - .../nullptr_t_deleter_allocator.pass.cpp | 85 - ...nullptr_t_deleter_allocator_throw.pass.cpp | 46 - .../nullptr_t_deleter_throw.pass.cpp | 63 - .../pointer.pass.cpp | 46 - .../pointer_deleter.pass.cpp | 48 - .../pointer_deleter_allocator.pass.cpp | 89 - .../pointer_deleter_allocator_throw.pass.cpp | 47 - .../pointer_deleter_throw.pass.cpp | 64 - .../pointer_throw.pass.cpp | 62 - .../shared_ptr.pass.cpp | 62 - .../shared_ptr_Y.pass.cpp | 97 - .../shared_ptr_Y_rv.pass.cpp | 109 - .../shared_ptr_pointer.pass.cpp | 61 - .../shared_ptr_rv.pass.cpp | 73 - .../unique_ptr.pass.cpp | 103 - .../weak_ptr.pass.cpp | 79 - .../allocate_shared.pass.cpp | 78 - .../allocate_shared_no_variadics.pass.cpp | 118 - .../make_shared.pass.cpp | 64 - .../tested_elsewhere.pass.cpp | 12 - .../util.smartptr.shared.io/io.pass.cpp | 29 - .../util.smartptr.shared.mod/reset.pass.cpp | 62 - .../reset_pointer.pass.cpp | 64 - .../reset_pointer_deleter.pass.cpp | 79 - .../reset_pointer_deleter_allocator.pass.cpp | 88 - .../util.smartptr.shared.mod/swap.pass.cpp | 104 - .../util.smartptr.shared.obs/arrow.pass.cpp | 29 - .../dereference.pass.cpp | 25 - .../util.smartptr.shared.obs/op_bool.pass.cpp | 29 - .../owner_before_shared_ptr.pass.cpp | 28 - .../owner_before_weak_ptr.pass.cpp | 31 - .../util.smartptr.shared.obs/unique.pass.cpp | 28 - .../util.smartptr.weak/types.pass.cpp | 26 - .../owner_less.pass.cpp | 82 - .../shared_ptr_Y.pass.cpp | 61 - .../weak_ptr.pass.cpp | 78 - .../weak_ptr_Y.pass.cpp | 78 - .../util.smartptr.weak.const/default.pass.cpp | 25 - .../shared_ptr_Y.pass.cpp | 95 - .../weak_ptr.pass.cpp | 114 - .../weak_ptr_Y.pass.cpp | 108 - .../tested_elsewhere.pass.cpp | 12 - .../util.smartptr.weak.mod/reset.pass.cpp | 41 - .../util.smartptr.weak.mod/swap.pass.cpp | 49 - .../util.smartptr.weak.obs/expired.pass.cpp | 46 - .../util.smartptr.weak.obs/lock.pass.cpp | 58 - .../not_less_than.fail.cpp | 27 - .../owner_before_shared_ptr.pass.cpp | 31 - .../owner_before_weak_ptr.pass.cpp | 31 - .../bad_weak_ptr.pass.cpp | 31 - .../std/utilities/memory/version.pass.cpp | 20 - .../meta/meta.hel/integral_constant.pass.cpp | 49 - .../meta/meta.rel/is_base_of.pass.cpp | 49 - .../meta/meta.rel/is_convertible.pass.cpp | 195 - .../meta.rel/is_convertible_fallback.pass.cpp | 18 - .../utilities/meta/meta.rel/is_same.pass.cpp | 59 - .../meta/meta.rqmts/nothing_to_do.pass.cpp | 12 - .../remove_all_extents.pass.cpp | 41 - .../meta.trans.arr/remove_extent.pass.cpp | 42 - .../meta.trans.cv/add_const.pass.cpp | 43 - .../meta.trans/meta.trans.cv/add_cv.pass.cpp | 43 - .../meta.trans.cv/add_volatile.pass.cpp | 43 - .../meta.trans.cv/remove_const.pass.cpp | 43 - .../meta.trans.cv/remove_cv.pass.cpp | 43 - .../meta.trans.cv/remove_volatile.pass.cpp | 43 - .../meta.trans.other/aligned_storage.pass.cpp | 194 - .../meta.trans.other/aligned_union.pass.cpp | 92 - .../meta.trans.other/common_type.pass.cpp | 52 - .../meta.trans.other/conditional.pass.cpp | 24 - .../meta.trans.other/decay.pass.cpp | 34 - .../meta.trans.other/enable_if.fail.cpp | 19 - .../meta.trans.other/enable_if.pass.cpp | 24 - .../meta.trans.other/enable_if2.fail.cpp | 23 - .../meta.trans.other/result_of.pass.cpp | 95 - .../meta.trans.other/underlying_type.pass.cpp | 41 - .../meta.trans.ptr/add_pointer.pass.cpp | 34 - .../meta.trans.ptr/remove_pointer.pass.cpp | 43 - .../meta.trans.ref/add_lvalue_ref.pass.cpp | 34 - .../meta.trans.ref/add_rvalue_ref.pass.cpp | 40 - .../meta.trans.ref/remove_ref.pass.cpp | 46 - .../meta.trans.sign/make_signed.pass.cpp | 64 - .../meta.trans.sign/make_unsigned.pass.cpp | 65 - .../meta/meta.trans/nothing_to_do.pass.cpp | 12 - .../meta.type.synop/nothing_to_do.pass.cpp | 12 - .../alignment_of.pass.cpp | 47 - .../meta.unary.prop.query/extent.pass.cpp | 60 - .../meta/meta.unary.prop.query/rank.pass.cpp | 46 - .../meta.unary.prop.query/void_t.pass.cpp | 69 - .../meta.unary/meta.unary.cat/array.pass.cpp | 55 - .../meta.unary/meta.unary.cat/class.pass.cpp | 53 - .../meta.unary/meta.unary.cat/enum.pass.cpp | 51 - .../meta.unary.cat/floating_point.pass.cpp | 51 - .../meta.unary.cat/function.pass.cpp | 88 - .../meta.unary.cat/integral.pass.cpp | 65 - .../meta.unary.cat/lvalue_ref.pass.cpp | 41 - .../member_function_pointer.pass.cpp | 102 - ...ber_function_pointer_no_variadics.pass.cpp | 76 - .../member_object_pointer.pass.cpp | 53 - .../meta.unary.cat/nullptr.pass.cpp | 52 - .../meta.unary.cat/pointer.pass.cpp | 52 - .../meta.unary.cat/rvalue_ref.pass.cpp | 43 - .../meta.unary/meta.unary.cat/union.pass.cpp | 55 - .../meta.unary/meta.unary.cat/void.pass.cpp | 49 - .../meta.unary/meta.unary.comp/array.pass.cpp | 46 - .../meta.unary/meta.unary.comp/class.pass.cpp | 44 - .../meta.unary/meta.unary.comp/enum.pass.cpp | 42 - .../meta.unary.comp/floating_point.pass.cpp | 42 - .../meta.unary.comp/function.pass.cpp | 43 - .../meta.unary.comp/integral.pass.cpp | 56 - .../meta.unary.comp/lvalue_ref.pass.cpp | 32 - .../member_function_pointer.pass.cpp | 46 - .../member_object_pointer.pass.cpp | 44 - .../meta.unary.comp/pointer.pass.cpp | 43 - .../meta.unary.comp/rvalue_ref.pass.cpp | 34 - .../meta.unary/meta.unary.comp/union.pass.cpp | 46 - .../meta.unary/meta.unary.comp/void.pass.cpp | 40 - .../__has_operator_addressof.pass.cpp | 71 - .../has_virtual_destructor.pass.cpp | 77 - .../meta.unary.prop/is_abstract.pass.cpp | 71 - .../meta.unary.prop/is_assignable.pass.cpp | 70 - .../meta.unary.prop/is_const.pass.cpp | 37 - .../meta.unary.prop/is_constructible.pass.cpp | 86 - .../is_copy_assignable.pass.cpp | 80 - .../is_copy_constructible.pass.cpp | 88 - .../is_default_constructible.pass.cpp | 93 - .../meta.unary.prop/is_destructible.pass.cpp | 121 - .../meta.unary.prop/is_empty.pass.cpp | 65 - .../meta.unary.prop/is_final.pass.cpp | 53 - .../meta.unary.prop/is_literal_type.pass.cpp | 46 - .../is_move_assignable.pass.cpp | 65 - .../is_move_constructible.pass.cpp | 81 - .../is_nothrow_assignable.pass.cpp | 55 - .../is_nothrow_constructible.pass.cpp | 103 - .../is_nothrow_copy_assignable.pass.cpp | 65 - .../is_nothrow_copy_constructible.pass.cpp | 61 - .../is_nothrow_default_constructible.pass.cpp | 64 - .../is_nothrow_destructible.pass.cpp | 91 - .../is_nothrow_move_assignable.pass.cpp | 63 - .../is_nothrow_move_constructible.pass.cpp | 61 - .../meta.unary.prop/is_pod.pass.cpp | 52 - .../meta.unary.prop/is_polymorphic.pass.cpp | 82 - .../meta.unary.prop/is_signed.pass.cpp | 59 - .../is_standard_layout.pass.cpp | 48 - .../meta.unary.prop/is_trivial.pass.cpp | 50 - .../is_trivially_assignable.pass.cpp | 53 - .../is_trivially_constructible.pass.cpp | 61 - .../is_trivially_copy_assignable.pass.cpp | 71 - .../is_trivially_copy_constructible.pass.cpp | 73 - .../is_trivially_copyable.pass.cpp | 63 - ...s_trivially_default_constructible.pass.cpp | 76 - .../is_trivially_destructible.pass.cpp | 83 - .../is_trivially_move_assignable.pass.cpp | 71 - .../is_trivially_move_constructible.pass.cpp | 89 - .../meta.unary.prop/is_unsigned.pass.cpp | 59 - .../meta.unary.prop/is_volatile.pass.cpp | 37 - .../meta/meta.unary/nothing_to_do.pass.cpp | 12 - .../test/std/utilities/meta/version.pass.cpp | 20 - .../test/std/utilities/nothing_to_do.pass.cpp | 12 - .../ratio/ratio.arithmetic/ratio_add.fail.cpp | 19 - .../ratio/ratio.arithmetic/ratio_add.pass.cpp | 76 - .../ratio.arithmetic/ratio_divide.fail.cpp | 19 - .../ratio.arithmetic/ratio_divide.pass.cpp | 58 - .../ratio.arithmetic/ratio_multiply.fail.cpp | 19 - .../ratio.arithmetic/ratio_multiply.pass.cpp | 58 - .../ratio.arithmetic/ratio_subtract.fail.cpp | 19 - .../ratio.arithmetic/ratio_subtract.pass.cpp | 76 - .../ratio.comparison/ratio_equal.pass.cpp | 56 - .../ratio.comparison/ratio_greater.pass.cpp | 56 - .../ratio_greater_equal.pass.cpp | 56 - .../ratio.comparison/ratio_less.pass.cpp | 86 - .../ratio_less_equal.pass.cpp | 56 - .../ratio.comparison/ratio_not_equal.pass.cpp | 56 - .../ratio/ratio.ratio/ratio.pass.cpp | 44 - .../ratio/ratio.ratio/ratio1.fail.cpp | 18 - .../ratio/ratio.ratio/ratio2.fail.cpp | 19 - .../ratio/ratio.ratio/ratio3.fail.cpp | 19 - .../ratio/ratio.si/nothing_to_do.pass.cpp | 12 - .../std/utilities/ratio/typedefs.pass.cpp | 32 - .../test/std/utilities/ratio/version.pass.cpp | 20 - .../bitset.cons/char_ptr_ctor.pass.cpp | 56 - .../bitset.cons/default.pass.cpp | 39 - .../bitset.cons/string_ctor.pass.cpp | 88 - .../bitset.cons/ull_ctor.pass.cpp | 42 - .../bitset.hash/bitset.pass.cpp | 44 - .../bitset.members/all.pass.cpp | 41 - .../bitset.members/any.pass.cpp | 44 - .../bitset.members/count.pass.cpp | 51 - .../bitset.members/flip_all.pass.cpp | 49 - .../bitset.members/flip_one.pass.cpp | 60 - .../bitset.members/index.pass.cpp | 67 - .../bitset.members/index_const.pass.cpp | 49 - .../bitset.members/left_shift.pass.cpp | 50 - .../bitset.members/left_shift_eq.pass.cpp | 55 - .../bitset.members/none.pass.cpp | 44 - .../bitset.members/not_all.pass.cpp | 48 - .../bitset.members/op_and_eq.pass.cpp | 50 - .../bitset.members/op_eq_eq.pass.cpp | 55 - .../bitset.members/op_or_eq.pass.cpp | 50 - .../bitset.members/op_xor_eq.pass.cpp | 50 - .../bitset.members/reset_all.pass.cpp | 38 - .../bitset.members/reset_one.pass.cpp | 50 - .../bitset.members/right_shift.pass.cpp | 50 - .../bitset.members/right_shift_eq.pass.cpp | 55 - .../bitset.members/set_all.pass.cpp | 37 - .../bitset.members/set_one.pass.cpp | 52 - .../bitset.members/size.pass.cpp | 33 - .../bitset.members/test.pass.cpp | 55 - .../bitset.members/to_string.pass.cpp | 162 - .../bitset.members/to_ullong.pass.cpp | 50 - .../bitset.members/to_ulong.pass.cpp | 51 - .../bitset.operators/op_and.pass.cpp | 48 - .../bitset.operators/op_not.pass.cpp | 48 - .../bitset.operators/op_or.pass.cpp | 48 - .../bitset.operators/stream_in.pass.cpp | 26 - .../bitset.operators/stream_out.pass.cpp | 26 - .../template.bitset/includes.pass.cpp | 32 - .../template.bitset/version.pass.cpp | 20 - libcxx/test/std/utilities/time/clock.h | 26 - libcxx/test/std/utilities/time/hours.pass.cpp | 27 - .../std/utilities/time/microseconds.pass.cpp | 27 - .../std/utilities/time/milliseconds.pass.cpp | 27 - .../test/std/utilities/time/minutes.pass.cpp | 27 - .../std/utilities/time/nanoseconds.pass.cpp | 27 - libcxx/test/std/utilities/time/rep.h | 27 - .../test/std/utilities/time/seconds.pass.cpp | 27 - .../time.clock.req/nothing_to_do.pass.cpp | 12 - .../time/time.clock/nothing_to_do.pass.cpp | 12 - .../time.clock.hires/consistency.pass.cpp | 34 - .../time.clock/time.clock.hires/now.pass.cpp | 26 - .../time.clock.steady/consistency.pass.cpp | 35 - .../time.clock/time.clock.steady/now.pass.cpp | 27 - .../time.clock.system/consistency.pass.cpp | 35 - .../time.clock.system/from_time_t.pass.cpp | 24 - .../time.clock/time.clock.system/now.pass.cpp | 26 - .../time.clock.system/rep_signed.pass.cpp | 23 - .../time.clock.system/to_time_t.pass.cpp | 24 - .../time/time.duration/default_ratio.pass.cpp | 26 - .../time/time.duration/duration.fail.cpp | 23 - .../time/time.duration/positive_num.fail.cpp | 22 - .../time/time.duration/ratio.fail.cpp | 30 - .../time.duration.arithmetic/op_++.pass.cpp | 25 - .../op_++int.pass.cpp | 25 - .../time.duration.arithmetic/op_+.pass.cpp | 33 - .../time.duration.arithmetic/op_+=.pass.cpp | 26 - .../time.duration.arithmetic/op_--.pass.cpp | 25 - .../op_--int.pass.cpp | 25 - .../time.duration.arithmetic/op_-.pass.cpp | 33 - .../time.duration.arithmetic/op_-=.pass.cpp | 26 - .../op_divide=.pass.cpp | 24 - .../op_mod=duration.pass.cpp | 27 - .../op_mod=rep.pass.cpp | 24 - .../op_times=.pass.cpp | 24 - .../time.duration.cast/duration_cast.pass.cpp | 52 - .../time.duration.cast/toduration.fail.cpp | 25 - .../op_equal.pass.cpp | 115 - .../op_less.pass.cpp | 153 - .../time.duration.cons/convert_exact.pass.cpp | 36 - .../convert_float_to_int.fail.cpp | 25 - .../convert_inexact.fail.cpp | 25 - .../convert_inexact.pass.cpp | 36 - .../convert_int_to_float.pass.cpp | 36 - .../convert_overflow.pass.cpp | 37 - .../time.duration.cons/default.pass.cpp | 38 - .../time.duration.cons/rep.pass.cpp | 40 - .../time.duration.cons/rep01.fail.cpp | 26 - .../time.duration.cons/rep02.fail.cpp | 26 - .../time.duration.cons/rep02.pass.cpp | 30 - .../time.duration.cons/rep03.fail.cpp | 24 - .../time.duration.literals/literals.pass.cpp | 59 - .../time.duration.literals/literals1.fail.cpp | 21 - .../time.duration.literals/literals1.pass.cpp | 48 - .../time.duration.literals/literals2.fail.cpp | 22 - .../time.duration.literals/literals2.pass.cpp | 51 - .../time.duration.nonmember/op_+.pass.cpp | 73 - .../time.duration.nonmember/op_-.pass.cpp | 74 - .../op_divide_duration.pass.cpp | 66 - .../op_divide_rep.fail.cpp | 26 - .../op_divide_rep.pass.cpp | 36 - .../op_mod_duration.pass.cpp | 62 - .../op_mod_rep.fail.cpp | 26 - .../op_mod_rep.pass.cpp | 36 - .../op_times_rep.pass.cpp | 45 - .../op_times_rep1.fail.cpp | 30 - .../op_times_rep2.fail.cpp | 30 - .../tested_elsewhere.pass.cpp | 12 - .../time.duration.special/max.pass.cpp | 43 - .../time.duration.special/min.pass.cpp | 43 - .../time.duration.special/zero.pass.cpp | 42 - .../time/time.duration/types.pass.cpp | 27 - .../time/time.point/default_duration.pass.cpp | 26 - .../time/time.point/duration.fail.cpp | 22 - .../time.point.arithmetic/op_+=.pass.cpp | 26 - .../time.point.arithmetic/op_-=.pass.cpp | 26 - .../time.point.cast/time_point_cast.pass.cpp | 80 - .../time.point.cast/toduration.fail.cpp | 28 - .../time.point.comparisons/op_equal.fail.cpp | 40 - .../time.point.comparisons/op_equal.pass.cpp | 84 - .../time.point.comparisons/op_less.fail.cpp | 48 - .../time.point.comparisons/op_less.pass.cpp | 108 - .../time.point.cons/convert.fail.cpp | 30 - .../time.point.cons/convert.pass.cpp | 37 - .../time.point.cons/default.pass.cpp | 35 - .../time.point.cons/duration.fail.cpp | 25 - .../time.point.cons/duration.pass.cpp | 41 - .../time.point.nonmember/op_+.pass.cpp | 46 - .../op_-duration.pass.cpp | 38 - .../op_-time_point.pass.cpp | 38 - .../tested_elsewhere.pass.cpp | 12 - .../time.point.special/max.pass.cpp | 25 - .../time.point.special/min.pass.cpp | 25 - .../time/time.traits/nothing_to_do.pass.cpp | 12 - .../time.traits.duration_values/max.pass.cpp | 36 - .../time.traits.duration_values/min.pass.cpp | 36 - .../time.traits.duration_values/zero.pass.cpp | 27 - .../treat_as_floating_point.pass.cpp | 37 - .../duration.pass.cpp | 42 - .../time_point.pass.cpp | 46 - .../test/std/utilities/time/version.pass.cpp | 20 - .../tuple.general/tuple.smartptr.pass.cpp | 38 - .../tuple/tuple.tuple/TupleFunction.pass.cpp | 35 - .../utilities/tuple/tuple.tuple/alloc_first.h | 58 - .../utilities/tuple/tuple.tuple/alloc_last.h | 58 - .../tuple/tuple.tuple/empty_member.pass.cpp | 46 - .../tuple.assign/const_pair.pass.cpp | 34 - .../tuple.assign/convert_copy.pass.cpp | 77 - .../tuple.assign/convert_move.pass.cpp | 91 - .../tuple.tuple/tuple.assign/copy.fail.cpp | 31 - .../tuple.tuple/tuple.assign/copy.pass.cpp | 54 - .../tuple.tuple/tuple.assign/move.pass.cpp | 56 - .../tuple.assign/move_pair.pass.cpp | 50 - .../tuple_array_template_depth.pass.cpp | 34 - .../tuple.tuple/tuple.cnstr/UTypes.fail.cpp | 51 - .../tuple.tuple/tuple.cnstr/UTypes.pass.cpp | 146 - .../tuple.tuple/tuple.cnstr/alloc.pass.cpp | 81 - .../tuple.cnstr/alloc_UTypes.pass.cpp | 141 - .../tuple.cnstr/alloc_const_Types.pass.cpp | 76 - .../tuple.cnstr/alloc_const_pair.pass.cpp | 59 - .../tuple.cnstr/alloc_convert_copy.pass.cpp | 69 - .../tuple.cnstr/alloc_convert_move.pass.cpp | 84 - .../tuple.cnstr/alloc_copy.pass.cpp | 78 - .../tuple.cnstr/alloc_move.pass.cpp | 77 - .../tuple.cnstr/alloc_move_pair.pass.cpp | 55 - .../tuple.cnstr/const_Types.fail.cpp | 27 - .../tuple.cnstr/const_Types.pass.cpp | 132 - .../tuple.cnstr/const_Types2.fail.cpp | 27 - .../tuple.cnstr/const_pair.pass.cpp | 44 - .../tuple.cnstr/convert_copy.pass.cpp | 118 - .../tuple.cnstr/convert_move.pass.cpp | 84 - .../tuple.tuple/tuple.cnstr/copy.fail.cpp | 30 - .../tuple.tuple/tuple.cnstr/copy.pass.cpp | 68 - .../tuple.tuple/tuple.cnstr/default.pass.cpp | 110 - .../tuple.tuple/tuple.cnstr/move.pass.cpp | 73 - .../tuple.cnstr/move_pair.pass.cpp | 48 - .../tuple_array_template_depth.pass.cpp | 36 - .../tuple.creation/forward_as_tuple.pass.cpp | 86 - .../tuple.creation/make_tuple.pass.cpp | 52 - .../tuple.tuple/tuple.creation/tie.pass.cpp | 41 - .../tuple.creation/tuple_cat.pass.cpp | 241 - .../tuple.tuple/tuple.elem/get_const.fail.cpp | 41 - .../tuple.tuple/tuple.elem/get_const.pass.cpp | 66 - .../tuple.elem/get_non_const.pass.cpp | 83 - .../tuple.tuple/tuple.elem/get_rv.pass.cpp | 33 - .../tuple.elem/tuple.by.type.pass.cpp | 60 - .../tuple.elem/tuple.by.type1.fail.cpp | 27 - .../tuple.elem/tuple.by.type2.fail.cpp | 27 - .../tuple.elem/tuple.by.type3.fail.cpp | 27 - .../tuple.elem/tuple.by.type4.fail.cpp | 27 - .../tuple.helper/tuple.include.array.pass.cpp | 52 - .../tuple.include.utility.pass.cpp | 49 - .../tuple.helper/tuple_element.pass.cpp | 49 - .../tuple.helper/tuple_size.pass.cpp | 42 - .../tuple/tuple.tuple/tuple.rel/eq.pass.cpp | 156 - .../tuple/tuple.tuple/tuple.rel/lt.pass.cpp | 210 - .../tuple.special/non_member_swap.pass.cpp | 62 - .../tuple.swap/member_swap.pass.cpp | 61 - .../tuple.traits/uses_allocator.pass.cpp | 46 - .../test/std/utilities/tuple/version.pass.cpp | 20 - .../type.index/type.index.hash/hash.pass.cpp | 32 - .../type.index.members/ctor.pass.cpp | 25 - .../type.index/type.index.members/eq.pass.cpp | 27 - .../type.index.members/hash_code.pass.cpp | 24 - .../type.index/type.index.members/lt.pass.cpp | 45 - .../type.index.members/name.pass.cpp | 25 - .../type.index.overview/copy_assign.pass.cpp | 26 - .../type.index.overview/copy_ctor.pass.cpp | 24 - .../hash_type_index.pass.cpp | 26 - .../std/utilities/type.index/version.pass.cpp | 20 - .../utilities.general/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../hash.requirements/nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../nothing_to_do.pass.cpp | 12 - .../utility/declval/declval.pass.cpp | 30 - .../utility/exchange/exchange.pass.cpp | 58 - .../utility/forward/forward.pass.cpp | 80 - .../utility/forward/forward1.fail.cpp | 24 - .../utility/forward/forward2.fail.cpp | 25 - .../utility/forward/forward3.fail.cpp | 24 - .../utility/forward/forward4.fail.cpp | 25 - .../utility/forward/forward5.fail.cpp | 25 - .../utility/forward/forward6.fail.cpp | 22 - .../utility/forward/move_copy.pass.cpp | 71 - .../utility/forward/move_if_noexcept.pass.cpp | 69 - .../utility/forward/move_only.pass.cpp | 49 - .../utility/forward/move_only1.fail.cpp | 52 - .../utility/forward/move_only2.fail.cpp | 52 - .../utility/forward/move_only3.fail.cpp | 49 - .../utility/forward/move_only4.fail.cpp | 52 - .../utility/operators/rel_ops.pass.cpp | 49 - .../utility/pairs/nothing_to_do.pass.cpp | 12 - .../pairs/pair.astuple/get_const.fail.cpp | 30 - .../pairs/pair.astuple/get_const.pass.cpp | 38 - .../pairs/pair.astuple/get_non_const.pass.cpp | 51 - .../pairs/pair.astuple/get_rv.pass.cpp | 32 - .../pairs/pair.astuple/pairs.by.type.pass.cpp | 44 - .../pair.astuple/pairs.by.type1.fail.cpp | 24 - .../pair.astuple/pairs.by.type2.fail.cpp | 24 - .../pair.astuple/pairs.by.type3.fail.cpp | 24 - .../pairs/pair.astuple/tuple_element.pass.cpp | 55 - .../pairs/pair.astuple/tuple_size.pass.cpp | 36 - .../piecewise_construct.pass.cpp | 55 - .../pairs.general/nothing_to_do.pass.cpp | 12 - .../utility/pairs/pairs.pair/U_V.pass.cpp | 30 - .../pairs.pair/assign_const_pair_U_V.pass.cpp | 30 - .../pairs/pairs.pair/assign_rv_pair.pass.cpp | 32 - .../pairs.pair/assign_rv_pair_U_V.pass.cpp | 43 - .../const_first_const_second.pass.cpp | 68 - .../pairs/pairs.pair/const_pair_U_V.pass.cpp | 40 - .../pairs/pairs.pair/copy_ctor.pass.cpp | 40 - .../utility/pairs/pairs.pair/default.pass.cpp | 36 - .../pairs/pairs.pair/piecewise.pass.cpp | 35 - .../pairs/pairs.pair/rv_pair_U_V.pass.cpp | 42 - .../utility/pairs/pairs.pair/swap.pass.cpp | 31 - .../utility/pairs/pairs.pair/types.pass.cpp | 26 - .../utility/utility.swap/swap.pass.cpp | 53 - .../utility/utility.swap/swap_array.pass.cpp | 65 - .../std/utilities/utility/version.pass.cpp | 20 - libcxx/test/support/Counter.h | 52 - libcxx/test/support/DefaultOnly.h | 35 - libcxx/test/support/MoveOnly.h | 50 - libcxx/test/support/allocators.h | 183 - libcxx/test/support/asan_testing.h | 37 - libcxx/test/support/cmpxchg_loop.h | 51 - libcxx/test/support/constexpr_char_traits.hpp | 138 - libcxx/test/support/count_new.hpp | 206 - libcxx/test/support/counting_predicates.hpp | 46 - libcxx/test/support/hexfloat.h | 38 - libcxx/test/support/min_allocator.h | 289 - libcxx/test/support/nasty_containers.hpp | 282 - libcxx/test/support/nasty_macros.hpp | 32 - libcxx/test/support/nothing_to_do.pass.cpp | 14 - libcxx/test/support/platform_support.h | 98 - libcxx/test/support/private_constructor.hpp | 31 - libcxx/test/support/test_allocator.h | 224 - libcxx/test/support/test_iterators.h | 329 - libcxx/test/support/tracked_value.h | 50 - libcxx/test/support/user_defined_integral.hpp | 44 - libcxx/test/testit | 180 - libcxx/utils/not/not.py | 35 - libcxx/utils/sym_check/linux_blacklist.txt | 19 - libcxx/utils/sym_check/osx_blacklist.txt | 19 - libcxx/utils/sym_check/sym_check/__init__.py | 8 - libcxx/utils/sym_check/sym_check/diff.py | 93 - libcxx/utils/sym_check/sym_check/extract.py | 177 - libcxx/utils/sym_check/sym_check/match.py | 32 - libcxx/utils/sym_check/sym_check/util.py | 128 - libcxx/utils/sym_check/sym_diff.py | 47 - libcxx/utils/sym_check/sym_extract.py | 29 - libcxx/utils/sym_check/sym_match.py | 42 - libcxx/www/atomic_design.html | 92 - libcxx/www/atomic_design_a.html | 309 - libcxx/www/atomic_design_b.html | 250 - libcxx/www/atomic_design_c.html | 458 - libcxx/www/content.css | 27 - libcxx/www/cxx1y_status.html | 277 - libcxx/www/cxx1z_status.html | 108 - libcxx/www/debug_mode.html | 162 - libcxx/www/index.html | 478 - libcxx/www/lit_usage.html | 207 - libcxx/www/menu.css | 39 - libcxx/www/results.Linux.html | 513 - libcxx/www/results.Windows.html | 487 - libcxx/www/ts1z_status.html | 102 - libcxx/www/type_traits_design.html | 286 - libcxxabi/.arcconfig | 4 - libcxxabi/.gitignore | 54 - libcxxabi/CMakeLists.txt | 323 - libcxxabi/CREDITS.TXT | 71 - libcxxabi/LICENSE.TXT | 76 - libcxxabi/cmake/config-ix.cmake | 47 - libcxxabi/include/__cxxabi_config.h | 20 - libcxxabi/include/cxxabi.h | 180 - libcxxabi/include/libunwind.h | 500 - .../include/mach-o/compact_unwind_encoding.h | 478 - libcxxabi/include/unwind.h | 329 - libcxxabi/lib/buildit | 99 - libcxxabi/src/CMakeLists.txt | 124 - libcxxabi/src/Unwind/AddressSpace.hpp | 579 - libcxxabi/src/Unwind/CMakeLists.txt | 117 - libcxxabi/src/Unwind/CompactUnwinder.hpp | 693 - libcxxabi/src/Unwind/DwarfInstructions.hpp | 760 - libcxxabi/src/Unwind/DwarfParser.hpp | 724 - libcxxabi/src/Unwind/EHHeaderParser.hpp | 161 - libcxxabi/src/Unwind/Registers.hpp | 1718 - libcxxabi/src/Unwind/Unwind-EHABI.cpp | 994 - libcxxabi/src/Unwind/Unwind-EHABI.h | 51 - libcxxabi/src/Unwind/Unwind-sjlj.c | 468 - libcxxabi/src/Unwind/UnwindCursor.hpp | 1317 - libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c | 327 - libcxxabi/src/Unwind/UnwindLevel1.c | 534 - libcxxabi/src/Unwind/UnwindRegistersRestore.S | 430 - libcxxabi/src/Unwind/UnwindRegistersSave.S | 416 - libcxxabi/src/Unwind/Unwind_AppleExtras.cpp | 205 - libcxxabi/src/Unwind/assembly.h | 80 - libcxxabi/src/Unwind/config.h | 126 - libcxxabi/src/Unwind/dwarf2.h | 237 - libcxxabi/src/Unwind/libunwind.cpp | 373 - libcxxabi/src/Unwind/libunwind_ext.h | 47 - libcxxabi/src/Unwind/unwind_ext.h | 37 - libcxxabi/src/abort_message.cpp | 81 - libcxxabi/src/abort_message.h | 33 - libcxxabi/src/config.h | 31 - libcxxabi/src/cxa_aux_runtime.cpp | 39 - libcxxabi/src/cxa_default_handlers.cpp | 123 - libcxxabi/src/cxa_demangle.cpp | 4965 --- libcxxabi/src/cxa_exception.cpp | 726 - libcxxabi/src/cxa_exception.hpp | 125 - libcxxabi/src/cxa_exception_storage.cpp | 103 - libcxxabi/src/cxa_guard.cpp | 257 - libcxxabi/src/cxa_handlers.cpp | 126 - libcxxabi/src/cxa_handlers.hpp | 54 - libcxxabi/src/cxa_new_delete.cpp | 262 - libcxxabi/src/cxa_personality.cpp | 1331 - libcxxabi/src/cxa_thread_atexit.cpp | 28 - libcxxabi/src/cxa_unexpected.cpp | 27 - libcxxabi/src/cxa_vector.cpp | 371 - libcxxabi/src/cxa_virtual.cpp | 31 - libcxxabi/src/exception.cpp | 41 - libcxxabi/src/fallback_malloc.ipp | 188 - libcxxabi/src/private_typeinfo.cpp | 1275 - libcxxabi/src/private_typeinfo.h | 251 - libcxxabi/src/stdexcept.cpp | 48 - libcxxabi/src/typeinfo.cpp | 53 - libcxxabi/test/CMakeLists.txt | 36 - libcxxabi/test/backtrace_test.pass.cpp | 62 - libcxxabi/test/catch_array_01.pass.cpp | 30 - libcxxabi/test/catch_array_02.pass.cpp | 30 - libcxxabi/test/catch_class_01.pass.cpp | 58 - libcxxabi/test/catch_class_02.pass.cpp | 83 - libcxxabi/test/catch_class_03.pass.cpp | 190 - libcxxabi/test/catch_class_04.pass.cpp | 213 - .../test/catch_const_pointer_nullptr.pass.cpp | 133 - libcxxabi/test/catch_function_01.pass.cpp | 31 - libcxxabi/test/catch_function_02.pass.cpp | 31 - libcxxabi/test/catch_in_noexcept.pass.cpp | 34 - .../catch_member_data_pointer_01.pass.cpp | 171 - .../catch_member_function_pointer_01.pass.cpp | 167 - .../catch_member_pointer_nullptr.pass.cpp | 71 - .../test/catch_multi_level_pointer.pass.cpp | 143 - libcxxabi/test/catch_pointer_nullptr.pass.cpp | 93 - .../test/catch_pointer_reference.pass.cpp | 444 - libcxxabi/test/catch_ptr.pass.cpp | 181 - libcxxabi/test/catch_ptr_02.pass.cpp | 197 - .../test/cxa_thread_atexit_test.pass.cpp | 33 - libcxxabi/test/dynamic_cast14.pass.cpp | 2182 -- libcxxabi/test/dynamic_cast3.pass.cpp | 2454 -- libcxxabi/test/dynamic_cast5.pass.cpp | 1315 - libcxxabi/test/dynamic_cast_stress.pass.cpp | 79 - libcxxabi/test/inherited_exception.pass.cpp | 165 - libcxxabi/test/libcxxabi/__init__.py | 0 libcxxabi/test/libcxxabi/test/__init__.py | 0 libcxxabi/test/libcxxabi/test/config.py | 69 - libcxxabi/test/lit.cfg | 67 - libcxxabi/test/lit.site.cfg.in | 17 - libcxxabi/test/support/timer.hpp | 46 - libcxxabi/test/test_aux_runtime.pass.cpp | 64 - .../test_aux_runtime_op_array_new.pass.cpp | 38 - libcxxabi/test/test_demangle.pass.cpp | 29707 ---------------- .../test/test_exception_storage.pass.cpp | 87 - libcxxabi/test/test_fallback_malloc.pass.cpp | 189 - libcxxabi/test/test_guard.pass.cpp | 142 - libcxxabi/test/test_vector1.pass.cpp | 264 - libcxxabi/test/test_vector2.pass.cpp | 83 - libcxxabi/test/test_vector3.pass.cpp | 58 - libcxxabi/test/testit | 127 - libcxxabi/test/unwind_01.pass.cpp | 96 - libcxxabi/test/unwind_02.pass.cpp | 96 - libcxxabi/test/unwind_03.pass.cpp | 102 - libcxxabi/test/unwind_04.pass.cpp | 108 - libcxxabi/test/unwind_05.pass.cpp | 112 - libcxxabi/test/unwind_06.pass.cpp | 257 - libcxxabi/www/content.css | 27 - libcxxabi/www/index.html | 143 - libcxxabi/www/menu.css | 39 - libcxxabi/www/spec.html | 1016 - libstdcxx/CMakeLists.txt | 3 +- libsystem/CMakeLists.txt | 3 +- libunwind/CMakeLists.txt | 2 +- libunwind/src/Registers.S | 1 + 5223 files changed, 25 insertions(+), 607671 deletions(-) create mode 160000 external/libcxx create mode 160000 external/libcxxabi delete mode 100644 libcxx/.arcconfig delete mode 100644 libcxx/.gitignore delete mode 100644 libcxx/CMakeLists.txt delete mode 100644 libcxx/CREDITS.TXT delete mode 100644 libcxx/LICENSE.TXT delete mode 100644 libcxx/cmake/Modules/CodeCoverage.cmake delete mode 100644 libcxx/cmake/Modules/HandleLibCXXABI.cmake delete mode 100644 libcxx/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake delete mode 100644 libcxx/cmake/config-ix.cmake delete mode 100644 libcxx/include/CMakeLists.txt delete mode 100644 libcxx/include/__bit_reference delete mode 100644 libcxx/include/__config delete mode 100644 libcxx/include/__debug delete mode 100644 libcxx/include/__functional_03 delete mode 100644 libcxx/include/__functional_base delete mode 100644 libcxx/include/__functional_base_03 delete mode 100644 libcxx/include/__hash_table delete mode 100644 libcxx/include/__locale delete mode 100644 libcxx/include/__mutex_base delete mode 100644 libcxx/include/__refstring delete mode 100644 libcxx/include/__split_buffer delete mode 100644 libcxx/include/__sso_allocator delete mode 100644 libcxx/include/__std_stream delete mode 100644 libcxx/include/__tree delete mode 100644 libcxx/include/__tuple delete mode 100644 libcxx/include/__undef___deallocate delete mode 100644 libcxx/include/__undef_min_max delete mode 100644 libcxx/include/algorithm delete mode 100644 libcxx/include/array delete mode 100644 libcxx/include/atomic delete mode 100644 libcxx/include/bitset delete mode 100644 libcxx/include/cassert delete mode 100644 libcxx/include/ccomplex delete mode 100644 libcxx/include/cctype delete mode 100644 libcxx/include/cerrno delete mode 100644 libcxx/include/cfenv delete mode 100644 libcxx/include/cfloat delete mode 100644 libcxx/include/chrono delete mode 100644 libcxx/include/cinttypes delete mode 100644 libcxx/include/ciso646 delete mode 100644 libcxx/include/climits delete mode 100644 libcxx/include/clocale delete mode 100644 libcxx/include/cmath delete mode 100644 libcxx/include/codecvt delete mode 100644 libcxx/include/complex delete mode 100644 libcxx/include/complex.h delete mode 100644 libcxx/include/condition_variable delete mode 100644 libcxx/include/csetjmp delete mode 100644 libcxx/include/csignal delete mode 100644 libcxx/include/cstdarg delete mode 100644 libcxx/include/cstdbool delete mode 100644 libcxx/include/cstddef delete mode 100644 libcxx/include/cstdint delete mode 100644 libcxx/include/cstdio delete mode 100644 libcxx/include/cstdlib delete mode 100644 libcxx/include/cstring delete mode 100644 libcxx/include/ctgmath delete mode 100644 libcxx/include/ctime delete mode 100644 libcxx/include/cwchar delete mode 100644 libcxx/include/cwctype delete mode 100644 libcxx/include/deque delete mode 100644 libcxx/include/exception delete mode 100644 libcxx/include/experimental/__config delete mode 100644 libcxx/include/experimental/chrono delete mode 100644 libcxx/include/experimental/dynarray delete mode 100644 libcxx/include/experimental/optional delete mode 100644 libcxx/include/experimental/ratio delete mode 100644 libcxx/include/experimental/string_view delete mode 100644 libcxx/include/experimental/system_error delete mode 100644 libcxx/include/experimental/tuple delete mode 100644 libcxx/include/experimental/type_traits delete mode 100644 libcxx/include/experimental/utility delete mode 100644 libcxx/include/ext/__hash delete mode 100644 libcxx/include/ext/hash_map delete mode 100644 libcxx/include/ext/hash_set delete mode 100644 libcxx/include/forward_list delete mode 100644 libcxx/include/fstream delete mode 100644 libcxx/include/functional delete mode 100644 libcxx/include/future delete mode 100644 libcxx/include/initializer_list delete mode 100644 libcxx/include/iomanip delete mode 100644 libcxx/include/ios delete mode 100644 libcxx/include/iosfwd delete mode 100644 libcxx/include/iostream delete mode 100644 libcxx/include/istream delete mode 100644 libcxx/include/iterator delete mode 100644 libcxx/include/limits delete mode 100644 libcxx/include/list delete mode 100644 libcxx/include/locale delete mode 100644 libcxx/include/map delete mode 100644 libcxx/include/memory delete mode 100644 libcxx/include/module.modulemap delete mode 100644 libcxx/include/mutex delete mode 100644 libcxx/include/new delete mode 100644 libcxx/include/numeric delete mode 100644 libcxx/include/ostream delete mode 100644 libcxx/include/queue delete mode 100644 libcxx/include/random delete mode 100644 libcxx/include/ratio delete mode 100644 libcxx/include/regex delete mode 100644 libcxx/include/scoped_allocator delete mode 100644 libcxx/include/set delete mode 100644 libcxx/include/shared_mutex delete mode 100644 libcxx/include/sstream delete mode 100644 libcxx/include/stack delete mode 100644 libcxx/include/stdexcept delete mode 100644 libcxx/include/streambuf delete mode 100644 libcxx/include/string delete mode 100644 libcxx/include/strstream delete mode 100644 libcxx/include/support/android/locale_bionic.h delete mode 100644 libcxx/include/support/ibm/limits.h delete mode 100644 libcxx/include/support/ibm/support.h delete mode 100644 libcxx/include/support/ibm/xlocale.h delete mode 100644 libcxx/include/support/newlib/xlocale.h delete mode 100644 libcxx/include/support/solaris/floatingpoint.h delete mode 100644 libcxx/include/support/solaris/wchar.h delete mode 100644 libcxx/include/support/solaris/xlocale.h delete mode 100644 libcxx/include/support/win32/limits_win32.h delete mode 100644 libcxx/include/support/win32/locale_win32.h delete mode 100644 libcxx/include/support/win32/math_win32.h delete mode 100644 libcxx/include/support/win32/support.h delete mode 100644 libcxx/include/support/xlocale/xlocale.h delete mode 100644 libcxx/include/system_error delete mode 100644 libcxx/include/tgmath.h delete mode 100644 libcxx/include/thread delete mode 100644 libcxx/include/tuple delete mode 100644 libcxx/include/type_traits delete mode 100644 libcxx/include/typeindex delete mode 100644 libcxx/include/typeinfo delete mode 100644 libcxx/include/unordered_map delete mode 100644 libcxx/include/unordered_set delete mode 100644 libcxx/include/utility delete mode 100644 libcxx/include/valarray delete mode 100644 libcxx/include/vector delete mode 100644 libcxx/lib/CMakeLists.txt delete mode 100755 libcxx/lib/buildit delete mode 100644 libcxx/lib/libc++abi.exp delete mode 100644 libcxx/lib/libc++abi2.exp delete mode 100644 libcxx/lib/libc++sjlj-abi.exp delete mode 100644 libcxx/lib/libc++unexp.exp delete mode 100644 libcxx/lib/notweak.exp delete mode 100644 libcxx/lib/weak.exp delete mode 100644 libcxx/src/algorithm.cpp delete mode 100644 libcxx/src/bind.cpp delete mode 100644 libcxx/src/chrono.cpp delete mode 100644 libcxx/src/condition_variable.cpp delete mode 100644 libcxx/src/config_elast.h delete mode 100644 libcxx/src/debug.cpp delete mode 100644 libcxx/src/exception.cpp delete mode 100644 libcxx/src/future.cpp delete mode 100644 libcxx/src/hash.cpp delete mode 100644 libcxx/src/ios.cpp delete mode 100644 libcxx/src/iostream.cpp delete mode 100644 libcxx/src/locale.cpp delete mode 100644 libcxx/src/memory.cpp delete mode 100644 libcxx/src/mutex.cpp delete mode 100644 libcxx/src/new.cpp delete mode 100644 libcxx/src/optional.cpp delete mode 100644 libcxx/src/random.cpp delete mode 100644 libcxx/src/regex.cpp delete mode 100644 libcxx/src/shared_mutex.cpp delete mode 100644 libcxx/src/stdexcept.cpp delete mode 100644 libcxx/src/string.cpp delete mode 100644 libcxx/src/strstream.cpp delete mode 100644 libcxx/src/support/solaris/README delete mode 100644 libcxx/src/support/solaris/mbsnrtowcs.inc delete mode 100644 libcxx/src/support/solaris/wcsnrtombs.inc delete mode 100644 libcxx/src/support/solaris/xlocale.c delete mode 100644 libcxx/src/support/win32/locale_win32.cpp delete mode 100644 libcxx/src/support/win32/support.cpp delete mode 100644 libcxx/src/system_error.cpp delete mode 100644 libcxx/src/thread.cpp delete mode 100644 libcxx/src/typeinfo.cpp delete mode 100644 libcxx/src/utility.cpp delete mode 100644 libcxx/src/valarray.cpp delete mode 100644 libcxx/test/CMakeLists.txt delete mode 100644 libcxx/test/libcxx/__init__.py delete mode 100644 libcxx/test/libcxx/compiler.py delete mode 100644 libcxx/test/libcxx/double_include.sh.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/alloc.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.data/default.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.mutate/default.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/at.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/begin_end.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/capacity.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/front_back.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/indexing.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.traits/default.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/dynarray.zero/default.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/containers/sequences/dynarray/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/utilities/ratio/header.ratio.synop/includes.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/utilities/ratio/version.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/utilities/syserror/header.system_error.synop/includes.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/utilities/syserror/version.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/utilities/time/header.chrono.synop/includes.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/utilities/time/version.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/utilities/tuple/header.tuple.synop/includes.pass.cpp delete mode 100644 libcxx/test/libcxx/experimental/utilities/tuple/version.pass.cpp delete mode 100644 libcxx/test/libcxx/selftest/not_test.sh.cpp delete mode 100644 libcxx/test/libcxx/selftest/test.fail.cpp delete mode 100644 libcxx/test/libcxx/selftest/test.pass.cpp delete mode 100644 libcxx/test/libcxx/selftest/test.sh.cpp delete mode 100644 libcxx/test/libcxx/test/__init__.py delete mode 100644 libcxx/test/libcxx/test/config.py delete mode 100644 libcxx/test/libcxx/test/executor.py delete mode 100644 libcxx/test/libcxx/test/format.py delete mode 100644 libcxx/test/libcxx/test/target_info.py delete mode 100644 libcxx/test/libcxx/test/tracing.py delete mode 100644 libcxx/test/libcxx/type_traits/convert_to_integral.pass.cpp delete mode 100644 libcxx/test/libcxx/util.py delete mode 100644 libcxx/test/lit.cfg delete mode 100644 libcxx/test/lit.site.cfg.in delete mode 100644 libcxx/test/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.c.library/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/generate.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.partitions/stable_partition.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.random.shuffle/random_shuffle.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.random.shuffle/random_shuffle_rand.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.random.shuffle/random_shuffle_urng.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.swap/iter_swap.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.swap/swap_ranges.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.modifying.operations/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/test.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_n_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.nonmodifying/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.binary.search/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/make_heap.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/make.heap/make_heap_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/pop.heap/pop_heap.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/pop.heap/pop_heap_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/push.heap/push_heap.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/push.heap/push_heap_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/sort_heap.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/sort.heap/sort_heap_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.merge/inplace_merge.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.merge/merge.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/max.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/max_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/max_element.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/max_element_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/max_init_list.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/max_init_list_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/min.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/min_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/min_element.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/min_element_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/min_init_list.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/min_init_list_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_element.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_element_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.min.max/minmax_init_list_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.nth.element/nth_element.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.nth.element/nth_element_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.permutation.generators/next_permutation.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.permutation.generators/prev_permutation.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.permutation.generators/prev_permutation_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/includes/includes.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/includes/includes_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/partial.sort/partial_sort_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/alg.sort/stable.sort/stable_sort_comp.pass.cpp delete mode 100644 libcxx/test/std/algorithms/alg.sorting/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/algorithms/algorithms.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/algorithms/version.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.fences/atomic_signal_fence.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.fences/atomic_thread_fence.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/atomic_flag_clear.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/atomic_flag_clear_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/atomic_flag_test_and_set.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/atomic_flag_test_and_set_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/clear.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/copy_assign.fail.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/copy_ctor.fail.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/copy_volatile_assign.fail.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/default.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/init.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.flag/test_and_set.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.general/replace_failure_order.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.lockfree/lockfree.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.order/kill_dependency.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.order/memory_order.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.syn/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.generic/address.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.generic/bool.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.generic/cstdint_typedefs.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.generic/trivially_copyable.fail.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.generic/trivially_copyable.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.arith/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.pointer/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_exchange_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_add_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_and_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_or_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_sub_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_xor_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_init.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_is_lock_free.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_load_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_store_explicit.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_var_init.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.templ/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/atomics/atomics.types.operations/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/atomics/libcpp-has-no-threads.fail.cpp delete mode 100644 libcxx/test/std/atomics/libcpp-has-no-threads.pass.cpp delete mode 100644 libcxx/test/std/atomics/version.pass.cpp delete mode 100644 libcxx/test/std/containers/Copyable.h delete mode 100644 libcxx/test/std/containers/Emplaceable.h delete mode 100644 libcxx/test/std/containers/NotConstructible.h delete mode 100644 libcxx/test/std/containers/associative/map/compare.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.access/at.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.access/empty.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.access/index_key.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.access/index_rv_key.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.access/index_tuple.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.access/iterator.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.access/max_size.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.access/size.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/assign_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/compare.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/compare_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/copy_assign.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/default.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/default_recursive.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/initializer_list_compare.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/initializer_list_compare_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/iter_iter_comp.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/iter_iter_comp_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/move.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/move_assign.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/emplace_hint.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/erase_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/erase_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/erase_key.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/insert_cv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/insert_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/insert_iter_cv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/insert_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/insert_iter_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.modifiers/insert_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.ops/count.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.ops/equal_range.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.ops/find.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.ops/lower_bound.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.ops/upper_bound.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.special/member_swap.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.special/non_member_swap.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/map.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/types.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/map/version.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/empty.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/iterator.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/max_size.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/assign_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/compare.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/compare_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/copy_assign.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/default.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/default_recursive.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/initializer_list_compare.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/initializer_list_compare_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/move.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/move_assign.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/emplace_hint.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/erase_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/erase_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/erase_key.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/insert_cv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/insert_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/insert_iter_cv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/insert_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/insert_iter_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.modifiers/insert_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.ops/count.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.ops/equal_range.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.ops/find.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.ops/lower_bound.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.ops/upper_bound.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.special/member_swap.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.special/non_member_swap.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/multimap.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/scary.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/size.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multimap/types.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/count.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/emplace_hint.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/empty.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/equal_range.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/erase_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/erase_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/erase_key.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/find.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/insert_cv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/insert_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/insert_iter_cv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/insert_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/insert_iter_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/insert_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/iterator.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/lower_bound.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/max_size.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/assign_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/compare.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/compare_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/copy_assign.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/default.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/initializer_list_compare.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/initializer_list_compare_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/iter_iter_comp.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/move.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/move_assign.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.special/member_swap.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.special/non_member_swap.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/multiset.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/scary.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/size.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/types.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/multiset/upper_bound.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/count.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/emplace_hint.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/empty.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/equal_range.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/erase_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/erase_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/erase_key.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/find.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/insert_cv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/insert_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/insert_iter_cv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/insert_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/insert_iter_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/insert_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/iterator.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/lower_bound.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/max_size.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/assign_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/compare.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/compare_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/copy_assign.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/default.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/initializer_list_compare.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/initializer_list_compare_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/iter_iter_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/iter_iter_comp.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/move.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/move_assign.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.special/member_swap.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.special/non_member_swap.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/set.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/size.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/types.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/upper_bound.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/set/version.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/tree_balance_after_insert.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/tree_left_rotate.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/tree_remove.pass.cpp delete mode 100644 libcxx/test/std/containers/associative/tree_right_rotate.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons.alloc/ctor_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons.alloc/ctor_comp_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons.alloc/ctor_comp_cont_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons.alloc/ctor_comp_rcont_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons.alloc/ctor_copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons.alloc/ctor_move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_comp.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_comp_container.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_comp_rcontainer.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_default.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_iter_iter_comp.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_iter_iter_comp_cont.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_iter_iter_comp_rcont.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/ctor_move.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.members/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.members/empty.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.members/pop.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.members/push.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.members/push_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.members/size.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.members/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.members/top.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.special/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/priqueue.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/priority.queue/types.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons.alloc/ctor_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons.alloc/ctor_container_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons.alloc/ctor_queue_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons.alloc/ctor_rcontainer_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons.alloc/ctor_rqueue_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons/ctor_container.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons/ctor_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons/ctor_default.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons/ctor_move.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons/ctor_rcontainer.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/back.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/back_const.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/empty.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/front.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/front_const.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/pop.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/push.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/push_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/size.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.defn/types.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.ops/eq.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.ops/lt.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.special/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/queue.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/queue/version.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons.alloc/ctor_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons.alloc/ctor_container_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons.alloc/ctor_copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons.alloc/ctor_rcontainer_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons.alloc/ctor_rqueue_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons/ctor_container.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons/ctor_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons/ctor_default.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons/ctor_move.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons/ctor_rcontainer.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/empty.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/pop.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/push.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/push_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/size.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/top.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/top_const.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.defn/types.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.ops/eq.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.ops/lt.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.special/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/stack.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/container.adaptors/stack/version.pass.cpp delete mode 100644 libcxx/test/std/containers/container.requirements/associative.reqmts/associative.reqmts.except/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/container.requirements/associative.reqmts/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/container.requirements/container.requirements.dataraces/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/container.requirements/container.requirements.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/container.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/container.requirements/sequence.reqmts/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/container.requirements/unord.req/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/container.requirements/unord.req/unord.req.except/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/containers.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.cons/default.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.data/data.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.data/data_const.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.fill/fill.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.size/size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.special/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.swap/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.tuple/get.fail.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.tuple/get.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.tuple/get_const.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.tuple/get_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.tuple/tuple_element.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.tuple/tuple_size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/array.zero/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/at.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/begin.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/front_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/indexing.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/types.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/array/version.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.capacity/resize_size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.capacity/resize_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.capacity/shrink_to_fit.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/assign_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/assign_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/assign_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/default.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/initializer_list_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/iter_iter_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/move_assign.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/op_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/op_equal_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.cons/size_value_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/emplace_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/emplace_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/erase_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/erase_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_iter_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/insert_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/pop_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/pop_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/push_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/push_back_exception_safety.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/push_back_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/push_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/push_front_exception_safety.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.modifiers/push_front_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.special/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.special/copy_backward.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.special/move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.special/move_backward.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.special/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/deque.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/types.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/deque/version.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.access/front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.fail.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_init.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_op_init.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_range.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/assign_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/default.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/default_recursive.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/init_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/range_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.fail.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.cons/size_value_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/before_begin.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.iter/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_after.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/emplace_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_many.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/erase_after_one.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_const.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_init.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/pop_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_const.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_exception_safety.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/push_front_rv.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/resize_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/merge_pred.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/remove_if.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/reverse.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/sort.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/sort_pred.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_flist.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_one.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/splice_after_range.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/forwardlist.ops/unique_pred.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/max_size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/types.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/forwardlist/version.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/db_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/db_cback.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/db_cfront.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/db_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/db_iterators_6.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/db_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/db_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/db_iterators_9.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.capacity/resize_size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.capacity/resize_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/assign_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/default.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/default_stack_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/initializer_list_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/input_iterator.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/op_equal_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/size_type.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.cons/size_value_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/emplace_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/emplace_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/erase_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/erase_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/pop_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/pop_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/push_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/push_back_exception_safety.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/push_back_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/push_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/push_front_exception_safety.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.modifiers/push_front_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/merge.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/merge_comp.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/remove.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/remove_if.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/reverse.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/sort.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/sort_comp.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/splice_pos_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/splice_pos_list_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/splice_pos_list_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/unique.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.ops/unique_pred.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.special/db_swap_1.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.special/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/list.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/types.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/list/version.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/assign_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/capacity.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/construct_default.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/construct_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/construct_iter_iter_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/construct_size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/construct_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/construct_size_value_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/emplace_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/erase_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/erase_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/find.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/initializer_list_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/insert_iter_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/insert_iter_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/insert_iter_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/insert_iter_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/op_equal_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/push_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/reserve.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/resize_size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/resize_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/shrink_to_fit.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/types.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector.bool/vector_bool.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/asan.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/asan_throw.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/const_value_type.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_cback.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_cfront.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_cindex.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_front.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_index.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_iterators_2.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_iterators_3.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_iterators_4.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_iterators_5.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_iterators_6.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/db_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/types.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.capacity/capacity.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.capacity/reserve.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.capacity/resize_size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.capacity/resize_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.capacity/shrink_to_fit.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.capacity/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/assign_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/assign_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/construct_default.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/construct_iter_iter_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/construct_size.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/construct_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/construct_size_value_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/default.recursive.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/initializer_list_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/move.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.cons/op_equal_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.data/data.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.data/data_const.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/emplace_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/emplace_extra.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/erase_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/erase_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/erase_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/erase_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/erase_iter_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/erase_iter_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/erase_iter_iter_db3.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/erase_iter_iter_db4.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_size_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/insert_iter_value.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/pop_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/push_back.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/push_back_exception_safety.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.modifiers/push_back_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.special/db_swap_1.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.special/swap.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/vector.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/sequences/vector/version.pass.cpp delete mode 100644 libcxx/test/std/containers/stack_allocator.h delete mode 100644 libcxx/test/std/containers/test_compare.h delete mode 100644 libcxx/test/std/containers/test_hash.h delete mode 100644 libcxx/test/std/containers/unord/next_prime.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/bucket.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/bucket_count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/bucket_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/compare.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/db_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/db_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/db_local_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/db_local_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/eq.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/equal_range_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/equal_range_non_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/find_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/find_non_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/load_factor.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/local_iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/max_bucket_count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/max_load_factor.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/max_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/rehash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/reserve.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/swap_member.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/types.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/assign_init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/default.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/move.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/range_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.elem/at.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.elem/index.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.elem/index_tuple.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.swap/db_swap_1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.swap/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unord.map.swap/swap_non_member.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/emplace_hint.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/erase_const_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/erase_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/erase_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/erase_iter_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/erase_iter_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/erase_iter_iter_db3.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/erase_iter_iter_db4.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/erase_key.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/erase_range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/insert_const_lvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/insert_hint_const_lvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/insert_hint_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/insert_init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/insert_range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/unorder.map.modifiers/insert_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.map/version.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/bucket.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/bucket_count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/bucket_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/db_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/db_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/db_local_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/eq.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/equal_range_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/equal_range_non_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/find_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/find_non_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/iterators.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/load_factor.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/local_iterators.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/local_iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/max_bucket_count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/max_load_factor.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/max_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/rehash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/reserve.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/scary.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/swap_member.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/types.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/assign_init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/default.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/move.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/emplace_hint.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/erase_const_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db3.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db4.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/erase_key.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/erase_range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_const_lvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.swap/db_swap_1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.swap/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multimap/unord.multimap.swap/swap_non_member.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/bucket.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/bucket_count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/bucket_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/db_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/db_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/db_local_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/emplace_hint.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/eq.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/equal_range_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/equal_range_non_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/erase_const_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/erase_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/erase_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/erase_iter_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/erase_iter_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/erase_iter_iter_db3.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/erase_iter_iter_db4.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/erase_key.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/erase_range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/find_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/find_non_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/insert_const_lvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/insert_hint_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/insert_init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/insert_range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/insert_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/iterators.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/load_factor.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/local_iterators.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/local_iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/max_bucket_count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/max_load_factor.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/max_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/rehash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/reserve.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/scary.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/swap_member.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/types.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/assign_init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/default.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/init_size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/move.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/range_size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.swap/db_swap_1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.swap/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.multiset/unord.multiset.swap/swap_non_member.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/bucket.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/bucket_count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/bucket_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/clear.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/db_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/db_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/db_local_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/db_local_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/emplace.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/emplace_hint.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/eq.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/equal_range_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/equal_range_non_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/erase_const_iter.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/erase_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/erase_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/erase_iter_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/erase_iter_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/erase_iter_iter_db3.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/erase_iter_iter_db4.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/erase_key.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/erase_range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/find_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/find_non_const.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/insert_const_lvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/insert_hint_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/insert_init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/insert_range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/insert_rvalue.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/iterators.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/load_factor.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/local_iterators.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/local_iterators.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/max_bucket_count.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/max_load_factor.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/max_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/rehash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/reserve.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/swap_member.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/types.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/assign_copy.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/assign_init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/assign_move.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/copy.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/default.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/init_size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/move.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/range_size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size.fail.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_equal.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/size_hash_equal_allocator.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.swap/db_swap_1.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.swap/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/unord.set.swap/swap_non_member.pass.cpp delete mode 100644 libcxx/test/std/containers/unord/unord.set/version.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/A.h delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/AB.h delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/assignment.fail.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/assignment.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/convert.fail.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/convert.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/convert_assignment.fail.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/convert_assignment.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/copy.fail.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/explicit.fail.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.cons/pointer.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.conv/assign_from_auto_ptr_ref.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.conv/convert_from_auto_ptr_ref.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.conv/convert_to_auto_ptr.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.conv/convert_to_auto_ptr_ref.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.members/arrow.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.members/deref.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.members/release.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/auto.ptr.members/reset.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/auto.ptr/element_type.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.auto.ptr/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/assert_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/ciso646.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/complex.h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/ctype_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/errno_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/fenv_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/float_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/inttypes_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/iso646_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/limits_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/locale_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/math_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/setjmp_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/signal_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/stdarg_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/stdbool_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/stddef_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/stdint_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/stdio_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/stdlib_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/string_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/tgmath_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/time_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/uchar_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/wchar_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.c.headers/wctype_h.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/pointer_to_binary_function.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/pointer_to_unary_function.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/ptr_fun1.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.function.pointer.adaptors/ptr_fun2.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun1.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun1_ref_t.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun1_t.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun_ref.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun_ref1.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun_ref_t.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/const_mem_fun_t.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun1.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun1_ref_t.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun1_t.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun_ref.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun_ref1.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun_ref_t.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/depr.member.pointer.adaptors/mem_fun_t.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.adaptors/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.base/binary_function.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/depr.base/unary_function.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.function.objects/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.ios.members/io_state.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.ios.members/open_mode.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.ios.members/seek_dir.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.ios.members/streamoff.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.ios.members/streampos.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.lib.binders/depr.lib.bind.1st/bind1st.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.lib.binders/depr.lib.bind.2nd/bind2nd.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.lib.binders/depr.lib.binder.1st/binder1st.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.lib.binders/depr.lib.binder.2nd/binder2nd.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.lib.binders/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.lib.binders/test_func.h delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.istrstream/depr.istrstream.cons/ccp.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.istrstream/depr.istrstream.cons/ccp_size.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.istrstream/depr.istrstream.cons/cp.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.istrstream/depr.istrstream.cons/cp_size.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.istrstream/depr.istrstream.members/rdbuf.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.istrstream/depr.istrstream.members/str.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.istrstream/types.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.ostrstream/depr.ostrstream.cons/cp_size_mode.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.ostrstream/depr.ostrstream.cons/default.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.ostrstream/depr.ostrstream.members/freeze.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.ostrstream/depr.ostrstream.members/pcount.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.ostrstream/depr.ostrstream.members/rdbuf.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.ostrstream/depr.ostrstream.members/str.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.ostrstream/types.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstream/depr.strstream.cons/cp_size_mode.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstream/depr.strstream.cons/default.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstream/depr.strstream.dest/rdbuf.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstream/depr.strstream.oper/freeze.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstream/depr.strstream.oper/pcount.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstream/depr.strstream.oper/str.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstream/types.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.cons/ccp_size.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.cons/cp_size_cp.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.cons/cscp_size.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.cons/cucp_size.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.cons/custom_alloc.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.cons/default.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.cons/scp_size_scp.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.cons/ucp_size_ucp.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/freeze.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/pcount.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/str.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.virtuals/overflow.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.virtuals/pbackfail.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.virtuals/seekoff.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.virtuals/seekpos.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.virtuals/setbuf.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.virtuals/underflow.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/depr.strstreambuf/types.pass.cpp delete mode 100644 libcxx/test/std/depr/depr.str.strstreams/version.pass.cpp delete mode 100644 libcxx/test/std/depr/exception.unexpected/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/depr/exception.unexpected/set.unexpected/get_unexpected.pass.cpp delete mode 100644 libcxx/test/std/depr/exception.unexpected/set.unexpected/set_unexpected.pass.cpp delete mode 100644 libcxx/test/std/depr/exception.unexpected/unexpected.handler/unexpected_handler.pass.cpp delete mode 100644 libcxx/test/std/depr/exception.unexpected/unexpected/unexpected.pass.cpp delete mode 100644 libcxx/test/std/depr/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/assertions/cassert.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/diagnostics.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/errno/cerrno.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/domain.error/domain_error.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/invalid.argument/invalid_argument.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/length.error/length_error.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/logic.error/logic_error.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/out.of.range/out_of_range.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/overflow.error/overflow_error.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/range.error/range_error.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/runtime.error/runtime_error.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/underflow.error/underflow_error.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/std.exceptions/version.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/errc.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.compare/eq_error_code_error_code.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.derived/message.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.nonvirtuals/default_ctor.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.nonvirtuals/eq.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.nonvirtuals/lt.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.nonvirtuals/neq.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.overview/error_category.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.virtuals/default_error_condition.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.virtuals/equivalent_error_code_int.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.virtuals/equivalent_int_error_condition.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.constructors/ErrorCodeEnum.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.constructors/default.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.constructors/int_error_category.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.modifiers/ErrorCodeEnum.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.modifiers/assign.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.modifiers/clear.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.nonmembers/lt.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.nonmembers/make_error_code.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.nonmembers/stream_inserter.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.observers/bool.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.observers/category.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.observers/default_error_condition.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.observers/message.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.observers/value.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcode/syserr.errcode.overview/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.constructors/ErrorConditionEnum.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.constructors/default.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.constructors/int_error_category.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.modifiers/ErrorConditionEnum.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.modifiers/assign.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.modifiers/clear.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.nonmembers/lt.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.nonmembers/make_error_condition.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.observers/bool.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.observers/category.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.observers/message.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.observers/value.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.errcondition/syserr.errcondition.overview/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.hash/error_code.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.syserr/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_error_code.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_error_code_const_char_pointer.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_error_code_string.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_int_error_category.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_int_error_category_const_char_pointer.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.syserr/syserr.syserr.members/ctor_int_error_category_string.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/syserr.syserr/syserr.syserr.overview/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/diagnostics/syserr/version.pass.cpp delete mode 100644 libcxx/test/std/experimental/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.comp_with_t/equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.comp_with_t/greater.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.comp_with_t/greater_equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.comp_with_t/less_equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.comp_with_t/less_than.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.comp_with_t/not_equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.defs/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.hash/hash.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.inplace/in_place_t.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.nullops/equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.nullops/greater.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.nullops/greater_equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.nullops/less_equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.nullops/less_than.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.nullops/not_equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.nullopt/nullopt_t.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.assign/assign_value.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.assign/move.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/const_T.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/copy.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/default.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/in_place_t.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/move.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.dtor/dtor.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/bool.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/dereference.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/dereference_const.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/op_arrow.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value_const.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value_or.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.observe/value_or_const.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional.object.swap/swap.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional_const_void.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional_not_destructible.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional_not_noexcept_destructible.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/optional_void.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.object/types.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.relops/equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.relops/greater_equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.relops/greater_than.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.relops/less_equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.relops/less_than.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.relops/not_equal.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.specalg/make_optional.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.specalg/swap.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.syn/optional_const_in_place_t.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.syn/optional_const_lvalue_ref.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.syn/optional_const_nullopt_t.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.syn/optional_in_place_t.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.syn/optional_includes_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.syn/optional_lvalue_ref.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.syn/optional_nullopt_t.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/optional.syn/optional_rvalue_ref.fail.cpp delete mode 100644 libcxx/test/std/experimental/optional/version.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.access/at.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.access/back.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.access/data.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.access/front.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.access/index.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.capacity/capacity.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opeq.string_view.pointer.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opeq.string_view.string.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opge.string_view.pointer.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opge.string_view.string.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opge.string_view.string_view.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opgt.string_view.pointer.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opgt.string_view.string.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opgt.string_view.string_view.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/ople.string_view.pointer.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/ople.string_view.string.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/ople.string_view.string_view.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/oplt.string_view.pointer.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/oplt.string_view.string.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/oplt.string_view.string_view.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opne.string_view.pointer.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opne.string_view.string.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.comparison/opne.string_view.string_view.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.cons/default.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.cons/from_literal.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.cons/from_ptr_len.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.cons/from_string.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.cons/from_string1.fail.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.cons/from_string2.fail.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_char_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_first_not_of_char_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_first_not_of_string_view_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_first_of_char_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_first_of_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_first_of_string_view_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_last_not_of_char_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_last_not_of_string_view_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_last_of_char_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_last_of_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_last_of_string_view_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/find_string_view_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/rfind_char_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/rfind_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/rfind_pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.find/rfind_string_view_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.hash/string_view.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.io/stream_insert.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.iterators/begin.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.iterators/end.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.iterators/rbegin.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.iterators/rend.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.modifiers/clear.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.modifiers/remove_prefix.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.modifiers/remove_suffix.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.modifiers/swap.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.nonmem/quoted.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/basic_string.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/compare.pointer.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/compare.pointer_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/compare.size_size_sv.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/compare.sv.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/copy.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/substr.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.ops/to_string.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.synop/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/experimental/string.view/string.view.template/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/meta/meta.type.synop/includes.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/meta/meta.type.synop/meta.rel.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/meta/meta.type.synop/meta.unary.cat.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/meta/meta.type.synop/meta.unary.comp.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/meta/meta.type.synop/meta.unary.prop.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/meta/meta.type.synop/meta.unary.prop.query.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/meta/version.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/ratio/header.ratio.synop/includes.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/ratio/header.ratio.synop/ratio_equal_v.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/ratio/header.ratio.synop/ratio_greater_equal_v.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/ratio/header.ratio.synop/ratio_greater_v.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/ratio/header.ratio.synop/ratio_less_equal_v.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/ratio/header.ratio.synop/ratio_less_v.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/ratio/header.ratio.synop/ratio_not_equal_v.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/ratio/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/syserror/header.system_error.synop/includes.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/syserror/header.system_error.synop/is_error_code_enum_v.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/syserror/header.system_error.synop/is_error_condition_enum.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/time/header.chrono.synop/includes.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/time/header.chrono.synop/treat_as_floating_point_v.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/header.tuple.synop/includes.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple.apply/arg_type.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple.apply/constexpr_types.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple.apply/extended_types.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple.apply/large_arity.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple.apply/ref_qualifiers.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple.apply/return_type.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple.apply/types.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple_size_v.fail.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple_size_v.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple_size_v_2.fail.cpp delete mode 100644 libcxx/test/std/experimental/utilities/tuple/tuple_size_v_3.fail.cpp delete mode 100644 libcxx/test/std/experimental/utilities/utility/utility.erased.type/erased_type.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/utility/utility.synop/includes.pass.cpp delete mode 100644 libcxx/test/std/experimental/utilities/utility/version.pass.cpp delete mode 100644 libcxx/test/std/extensions/hash/specializations.fail.cpp delete mode 100644 libcxx/test/std/extensions/hash/specializations.pass.cpp delete mode 100644 libcxx/test/std/extensions/hash_map/const_iterator.fail.cpp delete mode 100644 libcxx/test/std/extensions/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/c.files/cinttypes.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/c.files/cstdio.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/c.files/gets.fail.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/c.files/no.global.filesystem.namespace/fopen.fail.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/c.files/no.global.filesystem.namespace/lit.local.cfg delete mode 100644 libcxx/test/std/input.output/file.streams/c.files/no.global.filesystem.namespace/rename.fail.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/c.files/version_ccstdio.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/c.files/version_cinttypes.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.assign/move_assign.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.assign/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.cons/default.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.members/open_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.virtuals/overflow.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.virtuals/pbackfail.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.virtuals/seekoff.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.virtuals/underflow.dat delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.virtuals/underflow.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf.virtuals/underflow_utf8.dat delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/filebuf/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/move_assign.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.cons/default.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.cons/pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.cons/string.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.members/close.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.members/open_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.members/open_string.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream.members/rdbuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/fstream/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.assign/move_assign.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.assign/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.assign/test.dat delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.assign/test2.dat delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.cons/default.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.cons/test.dat delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.members/close.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.members/open_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.members/open_string.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.members/rdbuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream.members/test.dat delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ifstream/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/lit.local.cfg delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/move_assign.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.cons/default.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.cons/pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.members/close.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.members/open_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.members/open_string.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream.members/rdbuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/ofstream/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/fstreams/version.pass.cpp delete mode 100644 libcxx/test/std/input.output/file.streams/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/input.output.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/ext.manip/get_money.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/ext.manip/get_time.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/ext.manip/put_money.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/ext.manip/put_time.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.assign/move_assign.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.cons/streambuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/iostreamclass/iostream.dest/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/iostreamclass/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/bool.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/double.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/float.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/int.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_double.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/long_long.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/short.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_int.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_long_long.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/unsigned_short.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.reqmts/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/basic_ios.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/chart.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/ios_base.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/istream.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/signed_char.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/signed_char_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/streambuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/unsigned_char.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/unsigned_char_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/istream_extractors/wchar_t_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.formatted/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.manip/ws.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.rvalue/rvalue.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_pointer_size_chart.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_streambuf_chart.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/getline_pointer_size_chart.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/peek.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/putback.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/sync.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/tellg.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream.unformatted/unget.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream/istream.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream/istream.assign/move_assign.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream/istream.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream/istream.cons/streambuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream/istream_sentry/ctor.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/istream/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/input.streams/version.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.assign/move_assign.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.cons/streambuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.formatted.reqmts/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/bool.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/double.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/float.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/int.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/long.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/long_double.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/long_long.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/short.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/unsigned_int.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/unsigned_long.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/unsigned_long_long.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/unsigned_short.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/CharT_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/char_to_wide_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/signed_char.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/signed_char_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/unsigned_char.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.character/unsigned_char_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters/basic_ios.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters/ios_base.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters/ostream.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters/streambuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.manip/endl.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.manip/ends.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.manip/flush.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.rvalue/CharT_pointer.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.seeks/seekp.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.seeks/seekp2.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.seeks/tellp.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.unformatted/flush.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.unformatted/put.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream.unformatted/write.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream_sentry/construct.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/ostream_sentry/destruct.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/output.streams/version.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/quoted.manip/quoted.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/quoted.manip/quoted_char.fail.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/quoted.manip/quoted_traits.fail.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/std.manip/resetiosflags.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/std.manip/setbase.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/std.manip/setfill.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/std.manip/setiosflags.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/std.manip/setprecision.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/std.manip/setw.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.format/std.manip/version.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.forward/iosfwd.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.forward/version.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.objects/narrow.stream.objects/cerr.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.objects/narrow.stream.objects/cin.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.objects/narrow.stream.objects/clog.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.objects/narrow.stream.objects/cout.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.objects/version.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.objects/wide.stream.objects/wcerr.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.objects/wide.stream.objects/wcin.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.objects/wide.stream.objects/wclog.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostream.objects/wide.stream.objects/wcout.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/fpos/fpos.members/state.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/fpos/fpos.operations/addition.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/fpos/fpos.operations/ctor_int.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/fpos/fpos.operations/difference.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/fpos/fpos.operations/eq_int.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/fpos/fpos.operations/offset.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/fpos/fpos.operations/streamsize.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/fpos/fpos.operations/subtraction.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/fpos/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/fmtflags.state/flags.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/fmtflags.state/flags_fmtflags.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/fmtflags.state/precision.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/fmtflags.state/precision_streamsize.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/fmtflags.state/setf_fmtflags.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/fmtflags.state/setf_fmtflags_mask.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/fmtflags.state/unsetf_mask.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/fmtflags.state/width.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/fmtflags.state/width_streamsize.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.base.callback/register_callback.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.base.cons/dtor.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.base.locales/getloc.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.base.locales/imbue.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.base.storage/iword.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.base.storage/pword.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.base.storage/xalloc.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.members.static/sync_with_stdio.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_Init/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_failure/ctor_char_pointer_error_code.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_failure/ctor_string_error_code.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_fmtflags/fmtflags.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_iostate/iostate.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_openmode/openmode.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/ios_seekdir/seekdir.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/ios.types/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios.base/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.cons/ctor_streambuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/copyfmt.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/fill.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/fill_char_type.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/imbue.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/narow.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/rdbuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/rdbuf_streambuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/set_rdbuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/tie.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/tie_ostream.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/widen.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/bad.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/bool.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/clear.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/eof.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/exceptions.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/exceptions_iostate.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/fail.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/good.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/not.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/rdstate.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/iostate.flags/setstate.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/ios/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/adjustfield.manip/internal.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/adjustfield.manip/left.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/adjustfield.manip/right.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/basefield.manip/dec.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/basefield.manip/hex.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/basefield.manip/oct.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/error.reporting/iostream_category.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/error.reporting/make_error_code.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/error.reporting/make_error_condition.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/floatfield.manip/defaultfloat.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/floatfield.manip/fixed.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/floatfield.manip/hexfloat.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/floatfield.manip/scientific.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/boolalpha.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/noboolalpha.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/noshowbase.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/noshowpoint.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/noshowpos.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/noskipws.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/nounitbuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/nouppercase.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/showbase.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/showpoint.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/showpos.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/skipws.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/unitbuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/fmtflags.manip/uppercase.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/std.ios.manip/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/stream.types/streamoff.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/stream.types/streamsize.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.base/version.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.requirements/iostream.limits.imbue/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.requirements/iostreams.limits.pos/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.requirements/iostreams.threadsafety/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/iostreams.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf.reqts/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.cons/copy.fail.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.cons/default.fail.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.cons/default.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.buffer/pubseekoff.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.buffer/pubseekpos.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.buffer/pubsetbuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.buffer/pubsync.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.locales/locales.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.pub.get/in_avail.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.pub.get/sbumpc.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.pub.get/sgetc.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.pub.get/sgetn.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.pub.get/snextc.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.pub.pback/sputbackc.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.pub.pback/sungetc.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.pub.put/sputc.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.members/streambuf.pub.put/sputn.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/assign.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.assign/swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/gbump.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.get.area/setg.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/setp.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/streambuf.virt.buffer/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/streambuf.virt.get/showmanyc.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/streambuf.virt.get/uflow.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/streambuf.virt.get/underflow.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/streambuf.virt.get/xsgetn.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/streambuf.virt.locales/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/streambuf.virt.pback/pbackfail.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/streambuf.virt.put/overflow.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.virtuals/streambuf.virt.put/xsputn.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/streambuf/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/stream.buffers/version.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/istringstream/istringstream.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/istringstream/istringstream.assign/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/istringstream/istringstream.cons/default.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/istringstream/istringstream.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/istringstream/istringstream.cons/string.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/istringstream/istringstream.members/str.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/istringstream/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/ostringstream/ostringstream.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/ostringstream/ostringstream.assign/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/ostringstream/ostringstream.assign/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/ostringstream/ostringstream.cons/default.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/ostringstream/ostringstream.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/ostringstream/ostringstream.cons/string.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/ostringstream/ostringstream.members/str.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/ostringstream/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.assign/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.assign/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.cons/default.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.cons/string.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.members/str.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/overflow.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/pbackfail.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekpos.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/setbuf.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/underflow.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringbuf/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringstream.cons/default.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringstream.cons/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringstream.cons/move2.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringstream.cons/string.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/member_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/move.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringstream.cons/stringstream.assign/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringstream.members/str.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/stringstream/types.pass.cpp delete mode 100644 libcxx/test/std/input.output/string.streams/version.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.container/data.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.container/empty.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.container/size.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/iterator.basic/iterator.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/iterator.operations/advance.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/iterator.operations/next.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/iterator.operations/prev.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/iterator.traits/const_pointer.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/iterator.traits/empty.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/iterator.traits/iterator.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/iterator.traits/pointer.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/std.iterator.tags/bidirectional_iterator_tag.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/std.iterator.tags/forward_iterator_tag.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/std.iterator.tags/input_iterator_tag.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/std.iterator.tags/output_iterator_tag.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.primitives/std.iterator.tags/random_access_iterator_tag.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.range/begin-end.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.requirements/bidirectional.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.requirements/forward.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.requirements/input.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.requirements/iterator.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.requirements/iterator.requirements.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.requirements/output.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.requirements/random.access.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterator.synopsis/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterators.general/gcc_workaround.pass.cpp delete mode 100644 libcxx/test/std/iterators/iterators.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.cons/container.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.cons/container.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op++/post.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op++/pre.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op=/lv_value.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op=/rv_value.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.insert.iter.op_astrk/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/back.inserter/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iter.ops/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/back.insert.iterator/types.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.cons/container.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.cons/container.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op++/post.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op++/pre.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op=/lv_value.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op=/rv_value.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.insert.iter.op_astrk/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/front.inserter/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iter.ops/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/front.insert.iterator/types.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.cons/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op++/post.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op++/pre.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/lv_value.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op=/rv_value.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/insert.iter.op_astrk/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/inserter/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iter.ops/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/insert.iterator/types.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/insert.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/make_move_iterator.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/minus.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.nonmember/plus.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.+/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.+=/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.-/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.-=/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_eq.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_gt.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_gte.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_lt.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_lte.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.comp/op_neq.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/convert.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/convert.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/default.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/iter.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/iter.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.conv/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.decr/post.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.decr/pre.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.incr/post.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.incr/pre.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.index/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.ref/op_arrow.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.star/op_star.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.ops/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iter.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/move.iterator/types.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/move.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/default.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/iter.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/iter.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.conv/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.make/make_reverse_iterator.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op!=/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op++/post.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op++/pre.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op+/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op+=/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op--/post.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op--/pre.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op-/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op-=/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op.star/op_star.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.fail.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op==/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opdiff/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opgt/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opgt=/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opindex/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.oplt/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.oplt=/test.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opref/op_arrow.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opsum/difference_type.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/predef.iterators/reverse.iterators/reverse.iterator/types.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/default.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.cons/istream.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/arrow.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/dereference.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/equal.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/post_increment.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istream.iterator/istream.iterator.ops/pre_increment.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/default.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/istream.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/proxy.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator.cons/streambuf.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_equal/equal.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op!=/not_equal.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op++/dereference.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op==/equal.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/arrow.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/post_increment.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_op_astrk/pre_increment.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/istreambuf.iterator_proxy/proxy.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/types.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/iterator.range/begin_array.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/iterator.range/begin_const.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/iterator.range/begin_non_const.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/iterator.range/end_array.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/iterator.range/end_const.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/iterator.range/end_non_const.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/copy.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delem.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.ops/assign_t.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.ops/dereference.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.ops/increment.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostream.iterator/types.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/ostream.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.cons/streambuf.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/assign_c.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/deref.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/failed.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostreambuf.iterator/ostreambuf.iter.ops/increment.pass.cpp delete mode 100644 libcxx/test/std/iterators/stream.iterators/ostreambuf.iterator/types.pass.cpp delete mode 100644 libcxx/test/std/iterators/version.pass.cpp delete mode 100644 libcxx/test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp delete mode 100644 libcxx/test/std/language.support/cstdint/version.pass.cpp delete mode 100644 libcxx/test/std/language.support/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/alloc.errors/bad.alloc/bad_alloc.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_length.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_new_length.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/alloc.errors/new.handler/new_handler.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/alloc.errors/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/alloc.errors/set.new.handler/get_new_handler.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/alloc.errors/set.new.handler/set_new_handler.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow_replace.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_replace.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_nothrow.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_nothrow_replace.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_replace.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.dataraces/not_testable.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.placement/new.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.placement/new_array.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_nothrow.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_nothrow_replace.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_replace.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_nothrow.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_nothrow_replace.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_replace.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/new.delete/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.dynamic/version.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/bad.exception/bad_exception.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/except.nested/assign.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/except.nested/ctor_copy.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/except.nested/ctor_default.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/except.nested/rethrow_if_nested.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/except.nested/rethrow_nested.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/except.nested/throw_with_nested.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/exception.terminate/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/exception.terminate/set.terminate/get_terminate.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/exception.terminate/set.terminate/set_terminate.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/exception.terminate/terminate.handler/terminate_handler.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/exception.terminate/terminate/terminate.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/exception/exception.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/propagation/current_exception.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/propagation/exception_ptr.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/propagation/make_exception_ptr.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/propagation/rethrow_exception.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/uncaught/uncaught_exception.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.exception/version.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.initlist/support.initlist.access/access.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.initlist/support.initlist.cons/default.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.initlist/support.initlist.range/begin_end.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.initlist/types.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.initlist/version.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/c.limits/cfloat.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/c.limits/climits.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/c.limits/version_cfloat.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/c.limits/version_climits.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/denorm.style/check_values.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.limits/default.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/numeric.special/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/round.style/check_values.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/limits/version.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.limits/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.rtti/bad.cast/bad_cast.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.rtti/bad.typeid/bad_typeid.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.rtti/type.info/type_info.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.rtti/type.info/type_info_hash.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.rtti/version.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/csetjmp.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/csignal.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/cstdarg.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/cstdbool.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/cstdlib.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/ctime.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/version_csetjmp.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/version_csignal.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/version_cstdarg.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/version_cstdbool.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/version_cstdlib.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.runtime/version_ctime.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.start.term/quick_exit.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.start.term/quick_exit_check1.fail.cpp delete mode 100644 libcxx/test/std/language.support/support.start.term/quick_exit_check2.fail.cpp delete mode 100644 libcxx/test/std/language.support/support.types/max_align_t.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.types/null.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.types/nullptr_t.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.types/nullptr_t_integral_cast.fail.cpp delete mode 100644 libcxx/test/std/language.support/support.types/nullptr_t_integral_cast.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.types/offsetof.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.types/ptrdiff_t.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.types/size_t.pass.cpp delete mode 100644 libcxx/test/std/language.support/support.types/version.pass.cpp delete mode 100644 libcxx/test/std/localization/c.locales/clocale.pass.cpp delete mode 100644 libcxx/test/std/localization/c.locales/version.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/__scan_keyword.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate.byname/compare.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate.byname/hash.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate.byname/transform.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate.byname/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/compare.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/hash.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.members/transform.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate/locale.collate.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/locale.collate/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.collate/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.dtor/dtor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/is_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/is_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/narrow_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/narrow_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/scan_is.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/scan_not.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/table.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/tolower_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/tolower_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/toupper_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/toupper_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/widen_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.members/widen_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.statics/classic_table.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt.byname/ctor_char.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt.byname/ctor_char16_t.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt.byname/ctor_char32_t.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt.byname/ctor_wchar_t.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/codecvt_base.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/ctor_char.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/ctor_char16_t.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/ctor_char32_t.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/ctor_wchar_t.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char16_t_always_noconv.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char16_t_encoding.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char16_t_in.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char16_t_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char16_t_max_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char16_t_out.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char16_t_unshift.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char32_t_always_noconv.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char32_t_encoding.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char32_t_in.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char32_t_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char32_t_max_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char32_t_out.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char32_t_unshift.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char_always_noconv.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char_encoding.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char_in.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char_max_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char_out.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/char_unshift.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/utf_sanity_check.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_always_noconv.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_encoding.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_in.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_max_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_out.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.members/wchar_t_unshift.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/locale.codecvt.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/types_char.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/types_char16_t.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/types_char32_t.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.codecvt/types_wchar_t.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/is_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/mask.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/narrow_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_is.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/scan_not.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/widen_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/is_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/narrow_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_is.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/scan_not.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/tolower_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/toupper_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.members/widen_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/locale.ctype.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.ctype/locale.ctype/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.messages/locale.messages.byname/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.messages/locale.messages/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.messages/locale.messages/locale.messages.members/not_testable.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.messages/locale.messages/locale.messages.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.messages/locale.messages/messages_base.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.messages/locale.messages/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.messages/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_en_US.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_fr_FR.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_zh_CN.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_string_en_US.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.get/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_en_US.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_fr_FR.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_zh_CN.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_string_en_US.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.money.put/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/curr_symbol.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/decimal_point.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/frac_digits.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/grouping.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/neg_format.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/negative_sign.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/pos_format.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/positive_sign.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct.byname/thousands_sep.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/curr_symbol.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/decimal_point.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/frac_digits.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/grouping.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/neg_format.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/negative_sign.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/pos_format.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/positive_sign.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.members/thousands_sep.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/locale.moneypunct.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/money_base.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.monetary/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_bool.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_double.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_long.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_pointer.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_unsigned_long_long.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.nm.put/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_bool.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_long.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_pointer.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_int.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_long_long.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_unsigned_short.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/test_min_max.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/locale.num.get/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.numeric/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/date_order.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/date_order_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_date_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_one_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_time_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_weekday_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get.byname/get_year_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/date_order.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_date_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_many.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_monthname_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_one.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_time_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_weekday_wide.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.members/get_year.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/locale.time.get.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/time_base.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.get/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.put/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put1.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.members/put2.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.put/locale.time.put.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/locale.time.put/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/category.time/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/decimal_point.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/grouping.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct.byname/thousands_sep.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/decimal_point.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/falsename.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/grouping.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/thousands_sep.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.members/truename.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/facet.numpunct.virtuals/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/locale.numpunct/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facet.numpunct/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.categories/facets.examples/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_mode.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf16_always_noconv.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf16_encoding.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf16_in.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf16_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf16_max_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf16_out.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf16_unshift.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_always_noconv.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_encoding.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_in.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_max_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_out.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_unshift.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_always_noconv.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_encoding.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_in.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_max_length.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_out.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_unshift.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.stdcvt/version.pass.cpp delete mode 100644 libcxx/test/std/localization/locale.syn/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/isalnum.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/isalpha.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/iscntrl.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/isdigit.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/isgraph.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/islower.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/isprint.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/ispunct.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/isspace.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/isupper.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/classification/isxdigit.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/lit.local.cfg delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/overflow.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/pbackfail.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/rdbuf.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/seekoff.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/state.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/test.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow.dat delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow_utf8.dat delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.character/tolower.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.character/toupper.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_codecvt_state.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.string/ctor_err_string.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.string/state.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.string/types.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/conversions/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.convenience/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.global.templates/has_facet.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale.global.templates/use_facet.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.cons/assign.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.cons/char_pointer.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.cons/default.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.cons/locale_facetptr.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.cons/string.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.members/combine.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.members/name.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.operators/compare.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.operators/eq.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.statics/classic.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.statics/global.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.types/locale.facet/facet.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.types/locale.id/id.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/locale.types/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/locale/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/locales/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/localization.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/localization/version.pass.cpp delete mode 100644 libcxx/test/std/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/c.math/cmath.pass.cpp delete mode 100644 libcxx/test/std/numerics/c.math/cmath_isinf.pass.cpp delete mode 100644 libcxx/test/std/numerics/c.math/cmath_isnan.pass.cpp delete mode 100644 libcxx/test/std/numerics/c.math/ctgmath.pass.cpp delete mode 100644 libcxx/test/std/numerics/c.math/tgmath_h.pass.cpp delete mode 100644 libcxx/test/std/numerics/c.math/version_cmath.pass.cpp delete mode 100644 libcxx/test/std/numerics/cfenv/cfenv.syn/cfenv.pass.cpp delete mode 100644 libcxx/test/std/numerics/cfenv/version.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/cases.h delete mode 100644 libcxx/test/std/numerics/complex.number/ccmplx/ccomplex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/cmplx.over/arg.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/cmplx.over/conj.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/cmplx.over/imag.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/cmplx.over/norm.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/cmplx.over/pow.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/cmplx.over/proj.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/cmplx.over/real.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.literals/literals.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.literals/literals1.fail.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.literals/literals1.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.literals/literals2.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/assignment_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/assignment_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/minus_equal_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/minus_equal_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/plus_equal_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/plus_equal_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/times_equal_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.member.ops/times_equal_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.members/construct.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.members/real_imag.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_equals_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_equals_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_minus_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_minus_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_not_equals_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_not_equals_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_plus_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_plus_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_times_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/complex_times_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/scalar_equals_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/scalar_minus_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/scalar_not_equals_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/scalar_plus_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/scalar_times_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/stream_output.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/unary_minus.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.ops/unary_plus.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/double_float_explicit.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/double_float_implicit.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/double_long_double_explicit.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/double_long_double_implicit.fail.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/float_double_explicit.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/float_double_implicit.fail.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/float_long_double_explicit.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/float_long_double_implicit.fail.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/long_double_double_explicit.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/long_double_double_implicit.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/long_double_float_explicit.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.special/long_double_float_implicit.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.synopsis/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/acos.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/acosh.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/asin.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/asinh.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/atan.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/atanh.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/cos.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/cosh.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/exp.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/log.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/log10.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/pow_complex_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/pow_complex_scalar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/pow_scalar_complex.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/sin.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/sinh.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/sqrt.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/tan.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.transcendentals/tanh.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.value.ops/abs.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.value.ops/arg.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.value.ops/conj.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.value.ops/imag.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.value.ops/norm.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.value.ops/polar.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.value.ops/proj.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex.value.ops/real.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/complex/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/layout.pass.cpp delete mode 100644 libcxx/test/std/numerics/complex.number/version.pass.cpp delete mode 100644 libcxx/test/std/numerics/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/class.gslice/gslice.access/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/class.gslice/gslice.cons/start_size_stride.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/class.gslice/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/class.slice/cons.slice/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/class.slice/cons.slice/start_size_stride.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/class.slice/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/class.slice/slice.access/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/default.fail.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/gslice_array.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.assign/valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/addition.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/and.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/divide.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/modulo.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/multiply.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/or.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_left.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/shift_right.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/subtraction.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.comp.assign/xor.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/gslice.array.fill/assign_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.gslice.array/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/default.fail.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/indirect_array.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.assign/valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/addition.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/and.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/divide.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/modulo.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/multiply.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/or.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_left.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/shift_right.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/subtraction.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.comp.assign/xor.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/indirect.array.fill/assign_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.indirect.array/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/default.fail.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/mask_array.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/addition.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/and.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/divide.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/modulo.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/multiply.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/or.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_left.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/shift_right.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/subtraction.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.comp.assign/xor.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/mask.array.fill/assign_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.mask.array/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/default.fail.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/slice_array.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.assign/valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/addition.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/and.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/divide.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/modulo.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/multiply.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/or.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_left.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/shift_right.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/subtraction.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.comp.assign/xor.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/slice.arr.fill/assign_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.slice.array/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.access/access.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.access/const_access.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/copy_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/gslice_array_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/indirect_array_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/initializer_list_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/mask_array_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/move_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/slice_array_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.assign/value_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/and_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/divide_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/minus_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/modulo_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/or_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/plus_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_left_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/shift_right_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/times_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cassign/xor_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/gslice_array.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/indirect_array.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/mask_array.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/move.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/pointer_size.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/size.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/slice_array.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.cons/value_size.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_cref.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/apply_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/cshift.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/resize.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/shift.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/size.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/sum.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.members/swap.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/gslice_non_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/indirect_array_non_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/slice_non_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.sub/valarray_bool_non_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/bit_not.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/negate.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/not.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/template.valarray/valarray.unary/plus.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/and_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/divide_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/minus_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/modulo_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/or_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/plus_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_left_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/shift_right_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/times_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.binary/xor_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/and_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/equal_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_equal_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/greater_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_equal_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/less_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/not_equal_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.comparison/or_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.special/swap.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/abs_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.range/begin_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.range/begin_non_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.range/end_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.range/end_non_const.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/valarray.syn/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/numarray/version.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/accumulate/accumulate.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/accumulate/accumulate_op.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/inner.product/inner_product.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/inner.product/inner_product_comp.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/numeric.iota/iota.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.ops/version.pass.cpp delete mode 100644 libcxx/test/std/numerics/numeric.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/numerics.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_engine_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_engine_move.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/ctor_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/discard.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/seed_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/seed_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.disc/values.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_engine_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_engine_move.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/discard.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/seed_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/seed_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.ibits/values.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_engine_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_engine_move.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/ctor_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/discard.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/seed_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/seed_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.adapt/rand.adapt.shuf/values.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.device/ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.device/entropy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.device/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/ctor_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bernoulli/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/ctor_int_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/ctor_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.geo/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/ctor_int_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.negbin/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/ctor_double_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.cauchy/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/ctor_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.chisq/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/ctor_double_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.f/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/ctor_double_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.lognormal/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/ctor_double_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.normal/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/ctor_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.norm/rand.dist.norm.t/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/ctor_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.exp/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/ctor_double_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.extreme/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/ctor_double_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.gamma/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/ctor_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.poisson/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/ctor_double_double.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.pois/rand.dist.pois.weibull/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/ctor_default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/ctor_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/ctor_init.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/ctor_iterator.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/param_ctor_default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/param_ctor_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/param_ctor_init.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/param_ctor_iterator.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.discrete/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/ctor_default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/ctor_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/ctor_init_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/ctor_iterator.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/param_ctor_default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/param_ctor_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/param_ctor_init_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/param_ctor_iterator.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/ctor_default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/ctor_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/ctor_init_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/ctor_iterator.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/param_ctor_default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/param_ctor_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/param_ctor_init_func.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/param_ctor_iterator.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/ctor_int_int.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/ctor_int_int.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/ctor_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/get_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/max.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/min.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/param_assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/param_copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/param_ctor.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/param_eq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/param_types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/set_param.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/types.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/ctor_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/ctor_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/discard.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/seed_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/seed_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/values.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/discard.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/seed_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/seed_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/values.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/assign.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/copy.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/ctor_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/ctor_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/discard.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/eval.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/io.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/seed_result_type.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/seed_sseq.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.eng/rand.eng.sub/values.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/default_random_engine.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/knuth_b.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/minstd_rand.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/minstd_rand0.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/mt19937.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/mt19937_64.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/ranlux24.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/ranlux24_base.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/ranlux48.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.predef/ranlux48_base.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.req/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.req/rand.req.adapt/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.req/rand.req.dst/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.req/rand.req.eng/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.req/rand.req.genl/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.req/rand.req.seedseq/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.req/rand.req.urng/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.synopsis/version.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.util/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.util/rand.util.seedseq/assign.fail.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.util/rand.util.seedseq/copy.fail.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.util/rand.util.seedseq/default.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.util/rand.util.seedseq/generate.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.util/rand.util.seedseq/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.util/rand.util.seedseq/iterator.pass.cpp delete mode 100644 libcxx/test/std/numerics/rand/rand.util/rand.util.seedseq/types.pass.cpp delete mode 100644 libcxx/test/std/re/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.match/awk.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.match/basic.fail.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.match/basic.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.match/ecma.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.match/egrep.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.match/extended.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.match/grep.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.match/lookahead_capture.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.match/parse_curly_brackets.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.replace/test1.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.replace/test2.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.replace/test3.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.replace/test4.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.replace/test5.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.replace/test6.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/awk.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/backup.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/basic.fail.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/basic.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/ecma.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/egrep.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/extended.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/grep.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/lookahead.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.alg.search/no_update_pos.pass.cpp delete mode 100644 libcxx/test/std/re/re.alg/re.except/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.badexp/regex_error.pass.cpp delete mode 100644 libcxx/test/std/re/re.const/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.const/re.err/error_type.pass.cpp delete mode 100644 libcxx/test/std/re/re.const/re.matchflag/match_flag_type.pass.cpp delete mode 100644 libcxx/test/std/re/re.const/re.matchflag/match_not_bol.pass.cpp delete mode 100644 libcxx/test/std/re/re.const/re.matchflag/match_not_eol.pass.cpp delete mode 100644 libcxx/test/std/re/re.const/re.synopt/syntax_option_type.pass.cpp delete mode 100644 libcxx/test/std/re/re.def/defns.regex.collating.element/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.def/defns.regex.finite.state.machine/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.def/defns.regex.format.specifier/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.def/defns.regex.matched/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.def/defns.regex.primary.equivalence.class/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.def/defns.regex.regular.expression/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.def/defns.regex.subexpression/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.def/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.grammar/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.regiter/re.regiter.cnstr/cnstr.fail.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.regiter/re.regiter.cnstr/cnstr.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.regiter/re.regiter.cnstr/default.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.regiter/re.regiter.comp/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.regiter/re.regiter.deref/deref.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.regiter/re.regiter.incr/post.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.regiter/types.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/array.fail.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/array.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/default.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/init.fail.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/init.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/int.fail.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/int.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/vector.fail.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.cnstr/vector.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.comp/equal.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.deref/deref.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/re.tokiter.incr/post.pass.cpp delete mode 100644 libcxx/test/std/re/re.iter/re.tokiter/types.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/assign.il.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/assign.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/assign_iter_iter_flag.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/assign_ptr_flag.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/assign_ptr_size_flag.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/assign_string_flag.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/copy.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/il.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/ptr.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.assign/string.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.const/constants.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/awk_oct.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/bad_escape.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/copy.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/default.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/il_flg.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/iter_iter.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/iter_iter_flg.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/ptr.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/ptr_flg.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/ptr_size_flg.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/string.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.construct/string_flg.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.locale/imbue.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.nonmemb/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.nonmemb/re.regex.nmswap/swap.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.operations/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/re.regex.swap/swap.pass.cpp delete mode 100644 libcxx/test/std/re/re.regex/types.pass.cpp delete mode 100644 libcxx/test/std/re/re.req/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.acc/begin_end.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.acc/cbegin_cend.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.acc/index.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.acc/length.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.acc/position.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.acc/prefix.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.acc/str.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.acc/suffix.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.all/get_allocator.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.const/allocator.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.const/default.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.form/form1.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.form/form2.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.form/form3.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.form/form4.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.nonmember/equal.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.size/empty.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.size/max_size.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.state/ready.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.swap/member_swap.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/re.results.swap/non_member_swap.pass.cpp delete mode 100644 libcxx/test/std/re/re.results/types.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/re.submatch.members/compare_string_type.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/re.submatch.members/compare_sub_match.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/re.submatch.members/compare_value_type_ptr.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/re.submatch.members/default.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/re.submatch.members/length.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/re.submatch.members/operator_string.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/re.submatch.members/str.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/re.submatch.op/compare.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/re.submatch.op/stream.pass.cpp delete mode 100644 libcxx/test/std/re/re.submatch/types.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/cmatch.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/cregex_iterator.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/cregex_token_iterator.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/csub_match.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/regex.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/smatch.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/sregex_iterator.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/sregex_token_iterator.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/ssub_match.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/wcmatch.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/wcregex_iterator.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/wcregex_token_iterator.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/wcsub_match.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/wregex.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/wsmatch.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/wsregex_iterator.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/wsregex_token_iterator.pass.cpp delete mode 100644 libcxx/test/std/re/re.syn/wssub_match.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/default.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/getloc.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/imbue.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/isctype.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/length.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/lookup_classname.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/lookup_collatename.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/transform.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/transform_primary.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/translate.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/translate_nocase.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/types.pass.cpp delete mode 100644 libcxx/test/std/re/re.traits/value.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string.hash/strings.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string.literals/literal.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string.literals/literal1.fail.cpp delete mode 100644 libcxx/test/std/strings/basic.string.literals/literal1.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string.literals/literal2.fail.cpp delete mode 100644 libcxx/test/std/strings/basic.string.literals/literal2.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string.literals/literal3.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/input_iterator.h delete mode 100644 libcxx/test/std/strings/basic.string/string.access/at.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.access/back.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.access/db_back.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.access/db_cback.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.access/db_cfront.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.access/db_cindex.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.access/db_front.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.access/db_index.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.access/front.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.access/index.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/iterators.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db1.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db2.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db3.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db4.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/string.require/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/strings/basic.string/test_traits.h delete mode 100644 libcxx/test/std/strings/basic.string/types.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/cctype.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/cstring.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/cuchar.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/cwchar.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/cwctype.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/version_cctype.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/version_cstring.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/version_cuchar.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/version_cwchar.pass.cpp delete mode 100644 libcxx/test/std/strings/c.strings/version_cwctype.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.require/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign2.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/compare.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eof.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq_int_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/find.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/length.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/not_eof.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_char_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_int_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/types.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign2.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/compare.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eof.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/eq_int_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/find.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/length.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/lt.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/not_eof.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_char_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/to_int_type.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/types.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.specializations/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/char.traits.typedefs/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/strings/char.traits/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/strings/string.classes/typedefs.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/stod.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/stof.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/stoi.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/stol.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/stold.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/stoll.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/stoul.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/stoull.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/to_string.pass.cpp delete mode 100644 libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp delete mode 100644 libcxx/test/std/strings/strings.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/strings/version.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.async/async.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.errors/default_error_condition.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.errors/equivalent_error_code_int.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.errors/equivalent_int_error_condition.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.errors/future_category.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.errors/make_error_code.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.errors/make_error_condition.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.future_error/code.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.future_error/types.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.future_error/what.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.overview/future_errc.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.overview/future_status.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.overview/is_error_code_enum_future_errc.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.overview/launch.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/alloc_ctor.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/copy_assign.fail.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/copy_ctor.fail.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/default.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/dtor.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/get_future.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/move_assign.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/move_ctor.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_exception.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_exception_at_thread_exit.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_lvalue.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_lvalue_at_thread_exit.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_rvalue.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_rvalue_at_thread_exit.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_value_at_thread_exit_const.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_value_at_thread_exit_void.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_value_const.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/set_value_void.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/swap.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.promise/uses_allocator.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/copy_assign.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/copy_ctor.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/ctor_future.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/default.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/dtor.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/get.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/move_assign.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/move_ctor.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/wait.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/wait_for.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.shared_future/wait_until.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.state/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/assign_copy.fail.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/assign_move.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/ctor1.fail.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/ctor2.fail.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/ctor_copy.fail.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/ctor_default.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/ctor_func.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/ctor_func_alloc.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/ctor_move.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/dtor.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/get_future.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/make_ready_at_thread_exit.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/operator.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/reset.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.members/swap.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.nonmembers/swap.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/futures.task.nonmembers/uses_allocator.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.tas/types.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/copy_assign.fail.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/copy_ctor.fail.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/default.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/dtor.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/get.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/move_assign.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/move_ctor.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/share.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/wait.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/wait_for.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/futures.unique_future/wait_until.pass.cpp delete mode 100644 libcxx/test/std/thread/futures/test_allocator.h delete mode 100644 libcxx/test/std/thread/futures/version.pass.cpp delete mode 100644 libcxx/test/std/thread/macro.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/cv_status.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/destructor.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/native_handle.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/notify_all.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for_pred.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_pred.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_until.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_until_pred.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/destructor.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/notify_all.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/notify_one.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait.exception.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_for.exception.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_for.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_for_pred.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_pred.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_until.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_until_pred.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.condition/version.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock.algorithm/lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock.algorithm/try_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/adopt_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/mutex.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.guard/types.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/copy_assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/copy_ctor.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_assign.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/move_ctor.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_adopt_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_defer_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_duration.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_time_point.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.cons/mutex_try_to_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/member_swap.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.mod/release.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/mutex.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/op_bool.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.obs/owns_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/types.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/copy_assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/copy_ctor.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_assign.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/move_ctor.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_adopt_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_defer_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_duration.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_time_point.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.cons/mutex_try_to_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_for.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/try_lock_until.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.locking/unlock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/member_swap.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/nonmember_swap.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.mod/release.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/mutex.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/op_bool.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/thread.lock.unique.obs/owns_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.unique/types.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.lock/types.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/native_handle.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.class/try_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/native_handle.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.mutex.requirements.mutex/thread.mutex.recursive/try_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/lock_shared.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_for.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_for.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_shared_until.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_until.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/try_lock_until_deadlock_bug.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_for.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.class/try_lock_until.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_for.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.mutex.requirements/thread.timedmutex.requirements/thread.timedmutex.recursive/try_lock_until.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.once/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.once/thread.once.callonce/call_once.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.once/thread.once.onceflag/assign.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.once/thread.once.onceflag/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/thread.once/thread.once.onceflag/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.mutex/version.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/thread.req.exception/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/thread.req.lockable/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/thread.req.lockable/thread.req.lockable.basic/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/thread.req.lockable/thread.req.lockable.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/thread.req.lockable/thread.req.lockable.req/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/thread.req.lockable/thread.req.lockable.timed/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/thread.req.native/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/thread.req.paramname/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.req/thread.req.timing/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.assign/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.assign/move2.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/F.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/constr.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/copy.fail.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/assign.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/copy.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/default.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/eq.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/lt.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/stream.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/thread_id.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.static/hardware_concurrency.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.class/types.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.this/get_id.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/thread.thread.this/yield.pass.cpp delete mode 100644 libcxx/test/std/thread/thread.threads/version.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/allocs.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/converting_move.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/allocate_size_hint.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/deallocate.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/destroy.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/inner_allocator.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/max_size.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/outer_allocator.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/select_on_container_copy_construction.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/allocator_pointers.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/inner_allocator_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_copy_assignment.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_move_assignment.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.types/propagate_on_container_swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/scoped.adaptor.operators/eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/allocator.adaptor/types.pass.cpp delete mode 100644 libcxx/test/std/utilities/date.time/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/arithmetic.operations/divides.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/arithmetic.operations/minus.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/arithmetic.operations/modulus.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/arithmetic.operations/negate.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/arithmetic.operations/plus.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/arithmetic.operations/transparent.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_function_object.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/func.bind.place/placeholders.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/func.bind/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bind/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bitwise.operations/bit_and.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bitwise.operations/bit_not.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bitwise.operations/bit_or.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bitwise.operations/bit_xor.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/bitwise.operations/transparent.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/comparisons/equal_to.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/comparisons/greater.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/comparisons/greater_equal.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/comparisons/less.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/comparisons/less_equal.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/comparisons/not_equal_to.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/comparisons/transparent.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.def/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.memfn/member_data.fail.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.memfn/member_data.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.memfn/member_function.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.memfn/member_function_const.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.require/binary_function.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.require/invoke.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.require/unary_function.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/no-variadics.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_no_variadics.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/logical.operations/logical_and.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/logical.operations/logical_not.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/logical.operations/logical_or.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/logical.operations/transparent.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/negators/binary_negate.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/negators/not1.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/negators/not2.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/negators/unary_negate.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/binary.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.helpers/cref_1.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.helpers/cref_2.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_1.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.invoke/invoke.fail.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.invoke/invoke.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.invoke/invoke_int_0.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/refwrap.invoke/invoke_void_0.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/type.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/type_properties.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/unary.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/refwrap/weak_result.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/unord.hash/enum.fail.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/unord.hash/enum.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/unord.hash/floating.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/unord.hash/integral.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/unord.hash/pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/function.objects/version.pass.cpp delete mode 100644 libcxx/test/std/utilities/intseq/intseq.general/integer_seq.pass.cpp delete mode 100644 libcxx/test/std/utilities/intseq/intseq.intseq/integer_seq.fail.cpp delete mode 100644 libcxx/test/std/utilities/intseq/intseq.intseq/integer_seq.pass.cpp delete mode 100644 libcxx/test/std/utilities/intseq/intseq.make/make_integer_seq.fail.cpp delete mode 100644 libcxx/test/std/utilities/intseq/intseq.make/make_integer_seq.pass.cpp delete mode 100644 libcxx/test/std/utilities/intseq/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.tag/allocator_arg.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/allocate.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/allocate_hint.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/construct.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/deallocate.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/destroy.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/max_size.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.members/select_on_container_copy_construction.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/const_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/const_void_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/difference_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_copy_assignment.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_move_assignment.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/propagate_on_container_swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/rebind_alloc.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/size_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator.traits.types/void_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/allocator_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/rebind_traits.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.traits/value_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.construction/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.uses/allocator.uses.trait/uses_allocator.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/allocator.uses/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/c.malloc/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/default.allocator/allocator.globals/eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/default.allocator/allocator.members/address.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/default.allocator/allocator.members/construct.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/default.allocator/allocator.members/max_size.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/default.allocator/allocator_pointers.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/default.allocator/allocator_types.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/default.allocator/allocator_void.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/pointer.traits/difference_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/pointer.traits/element_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/pointer.traits/pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/pointer.traits/pointer.traits.functions/pointer_to.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/pointer.traits/pointer.traits.types/difference_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/pointer.traits/pointer.traits.types/element_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/pointer.traits/pointer.traits.types/rebind.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/pointer.traits/pointer_to.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/pointer.traits/rebind.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/ptr.align/align.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/specialized.algorithms/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/specialized.algorithms/specialized.addressof/addressof.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.copy/uninitialized_copy_n.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill.n/uninitialized_fill_n.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/specialized.algorithms/uninitialized.fill/uninitialized_fill.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/temporary.buffer/temporary_buffer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/deleter.h delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array1.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array2.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array3.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.create/make_unique.array4.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.create/make_unique.single.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.dltr/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/convert_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/incomplete.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt/void.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/convert_ctor.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.dflt1/incomplete.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.dltr/unique.ptr.dltr.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert05.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert06.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert07.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert08.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/move_convert09.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/null_asgn.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/null_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/nullptr_asgn.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/pointer_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert05.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert06.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert07.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert08.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert09.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert10.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert11.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert12.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert13.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert14.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert15.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert16.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert17.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/move_convert18.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/nullptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter03.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter04.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter05.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/release.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/reset1.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/reset2.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.modifiers/swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/dereference.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/explicit_bool.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/get_deleter.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/index.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.observers/op_arrow.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/pointer_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert03.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert05.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert06.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/move_convert13.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/null.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.asgn/nullptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/auto_pointer02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/default03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert03.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert04.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert05.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert06.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert07.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert08.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert09.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert10.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert11.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert12.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/move_convert13.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/nullptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer01.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer02.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer03.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer03.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter01.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter02.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter03.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter04.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter04.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter05.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.ctor/pointer_deleter06.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.dtor/null.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/release.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset1.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset2.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/reset_self.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.modifiers/swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/dereference.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/explicit_bool.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/get_deleter.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/index.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.single/unique.ptr.single.observers/op_arrow.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/cmp_nullptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/rel.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/unique.ptr/unique.ptr.special/swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.dynamic.safety/declare_no_pointers.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.dynamic.safety/declare_reachable.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.dynamic.safety/get_pointer_safety.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_shared_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_is_lock_free.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/test_deleter.h delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/types.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.getdeleter/get_deleter.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/auto_ptr_Y.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_Y.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_Y_rv.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/shared_ptr_rv.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.assign/unique_ptr_Y.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/const_pointer_cast.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/dynamic_pointer_cast.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cast/static_pointer_cast.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/cmp_nullptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.cmp/lt.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/auto_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_allocator.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_allocator_throw.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_throw.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_allocator.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_allocator_throw.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_throw.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_throw.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_Y.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_Y_rv.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/shared_ptr_rv.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/weak_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/allocate_shared_no_variadics.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.dest/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.io/io.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer_deleter.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/reset_pointer_deleter_allocator.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.mod/swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/arrow.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/dereference.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/op_bool.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/owner_before_shared_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/owner_before_weak_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.obs/unique.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/types.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.ownerless/owner_less.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/shared_ptr_Y.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.assign/weak_ptr_Y.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/shared_ptr_Y.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.const/weak_ptr_Y.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.dest/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.mod/reset.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.mod/swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/expired.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/lock.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/not_less_than.fail.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/owner_before_shared_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weak/util.smartptr.weak.obs/owner_before_weak_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.weakptr/bad_weak_ptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/memory/version.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.hel/integral_constant.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.rel/is_base_of.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.rel/is_convertible_fallback.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.rel/is_same.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.rqmts/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.arr/remove_all_extents.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.arr/remove_extent.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.cv/add_const.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.cv/add_cv.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.cv/add_volatile.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.cv/remove_const.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.cv/remove_cv.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.cv/remove_volatile.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_storage.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/conditional.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/decay.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/enable_if.fail.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/enable_if.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/enable_if2.fail.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/result_of.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.other/underlying_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.ptr/add_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.ptr/remove_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.ref/add_lvalue_ref.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.ref/add_rvalue_ref.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.ref/remove_ref.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.sign/make_signed.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/meta.trans.sign/make_unsigned.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.trans/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.type.synop/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary.prop.query/alignment_of.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary.prop.query/extent.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary.prop.query/rank.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary.prop.query/void_t.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/array.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/class.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/enum.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/floating_point.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/function.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/integral.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/lvalue_ref.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/member_function_pointer_no_variadics.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/member_object_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/nullptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/rvalue_ref.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/union.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.cat/void.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/array.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/class.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/enum.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/floating_point.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/function.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/integral.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/lvalue_ref.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/member_function_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/member_object_pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/pointer.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/rvalue_ref.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/union.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.comp/void.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/__has_operator_addressof.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/has_virtual_destructor.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_abstract.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_const.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_copy_assignable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_copy_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_default_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_destructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_empty.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_final.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_literal_type.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_move_assignable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_move_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_assignable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_assignable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_default_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_destructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_assignable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_pod.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_polymorphic.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_signed.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_standard_layout.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivial.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_assignable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_assignable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_default_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_destructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_assignable.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_unsigned.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_volatile.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/meta.unary/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/meta/version.pass.cpp delete mode 100644 libcxx/test/std/utilities/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.arithmetic/ratio_add.fail.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.arithmetic/ratio_add.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.arithmetic/ratio_divide.fail.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.arithmetic/ratio_divide.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.arithmetic/ratio_multiply.fail.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.arithmetic/ratio_multiply.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.arithmetic/ratio_subtract.fail.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.arithmetic/ratio_subtract.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.comparison/ratio_equal.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.comparison/ratio_greater.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.comparison/ratio_greater_equal.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.comparison/ratio_less.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.comparison/ratio_less_equal.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.comparison/ratio_not_equal.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.ratio/ratio.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.ratio/ratio1.fail.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.ratio/ratio2.fail.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.ratio/ratio3.fail.cpp delete mode 100644 libcxx/test/std/utilities/ratio/ratio.si/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/typedefs.pass.cpp delete mode 100644 libcxx/test/std/utilities/ratio/version.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.cons/char_ptr_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.cons/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.hash/bitset.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/all.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/any.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/count.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/flip_all.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/flip_one.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/index.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/index_const.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/left_shift.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/none.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/not_all.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/op_eq_eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/op_xor_eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/reset_all.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/reset_one.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/right_shift.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/set_all.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/set_one.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/size.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/test.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/to_string.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/to_ullong.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.members/to_ulong.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.operators/op_and.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.operators/op_not.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.operators/op_or.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/bitset.operators/stream_out.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/includes.pass.cpp delete mode 100644 libcxx/test/std/utilities/template.bitset/version.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/clock.h delete mode 100644 libcxx/test/std/utilities/time/hours.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/microseconds.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/milliseconds.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/minutes.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/nanoseconds.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/rep.h delete mode 100644 libcxx/test/std/utilities/time/seconds.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock.req/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/time.clock.hires/now.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/time.clock.steady/now.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/time.clock.system/from_time_t.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/time.clock.system/now.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/time.clock.system/rep_signed.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.clock/time.clock.system/to_time_t.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/default_ratio.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/duration.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/positive_num.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/ratio.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/convert_overflow.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/rep.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.literals/literals.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.literals/literals1.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.literals/literals1.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.literals/literals2.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.literals/literals2.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.special/max.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.special/min.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/time.duration.special/zero.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.duration/types.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/default_duration.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/duration.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.arithmetic/op_+=.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.arithmetic/op_-=.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.cast/time_point_cast.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.cast/toduration.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.comparisons/op_equal.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.comparisons/op_equal.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.comparisons/op_less.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.comparisons/op_less.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.cons/convert.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.cons/convert.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.cons/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.cons/duration.fail.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.cons/duration.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.nonmember/op_+.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.nonmember/op_-duration.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.nonmember/op_-time_point.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.observer/tested_elsewhere.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.special/max.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.point/time.point.special/min.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.traits/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.traits/time.traits.is_fp/treat_as_floating_point.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp delete mode 100644 libcxx/test/std/utilities/time/version.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.general/tuple.smartptr.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/TupleFunction.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/alloc_first.h delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/alloc_last.h delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/empty_member.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/const_pair.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_move.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/move.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/move_pair.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/tuple_array_template_depth.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_UTypes.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_const_Types.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_const_pair.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_convert_copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_convert_move.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_move.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc_move_pair.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types2.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/const_pair.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_move.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/copy.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move_pair.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/tuple_array_template_depth.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.creation/forward_as_tuple.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.creation/make_tuple.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.creation/tuple_cat.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_non_const.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_rv.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type1.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type2.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type3.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type4.fail.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple.include.array.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple.include.utility.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_element.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.rel/eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.rel/lt.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.special/non_member_swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.swap/member_swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/tuple.tuple/tuple.traits/uses_allocator.pass.cpp delete mode 100644 libcxx/test/std/utilities/tuple/version.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/type.index.hash/hash.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/type.index.members/ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/type.index.members/eq.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/type.index.members/hash_code.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/type.index.members/lt.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/type.index.members/name.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/type.index.overview/copy_assign.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/type.index.overview/copy_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/type.index.synopsis/hash_type_index.pass.cpp delete mode 100644 libcxx/test/std/utilities/type.index/version.pass.cpp delete mode 100644 libcxx/test/std/utilities/utilities.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility.requirements/allocator.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility.requirements/hash.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility.requirements/nullablepointer.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility.requirements/swappable.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility.requirements/utility.arg.requirements/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/declval/declval.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/exchange/exchange.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/forward.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/forward1.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/forward2.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/forward3.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/forward4.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/forward5.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/forward6.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/move_copy.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/move_if_noexcept.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/move_only.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/move_only1.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/move_only2.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/move_only3.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/forward/move_only4.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/operators/rel_ops.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/get_non_const.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/get_rv.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type1.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type2.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type3.fail.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_element.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_size.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.general/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/U_V.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/assign_const_pair_U_V.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/assign_rv_pair_U_V.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/const_first_const_second.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/const_pair_U_V.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/copy_ctor.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/default.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/rv_pair_U_V.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/types.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/utility.swap/swap.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/utility.swap/swap_array.pass.cpp delete mode 100644 libcxx/test/std/utilities/utility/version.pass.cpp delete mode 100644 libcxx/test/support/Counter.h delete mode 100644 libcxx/test/support/DefaultOnly.h delete mode 100644 libcxx/test/support/MoveOnly.h delete mode 100644 libcxx/test/support/allocators.h delete mode 100644 libcxx/test/support/asan_testing.h delete mode 100644 libcxx/test/support/cmpxchg_loop.h delete mode 100644 libcxx/test/support/constexpr_char_traits.hpp delete mode 100644 libcxx/test/support/count_new.hpp delete mode 100644 libcxx/test/support/counting_predicates.hpp delete mode 100644 libcxx/test/support/hexfloat.h delete mode 100644 libcxx/test/support/min_allocator.h delete mode 100644 libcxx/test/support/nasty_containers.hpp delete mode 100644 libcxx/test/support/nasty_macros.hpp delete mode 100644 libcxx/test/support/nothing_to_do.pass.cpp delete mode 100644 libcxx/test/support/platform_support.h delete mode 100644 libcxx/test/support/private_constructor.hpp delete mode 100644 libcxx/test/support/test_allocator.h delete mode 100644 libcxx/test/support/test_iterators.h delete mode 100644 libcxx/test/support/tracked_value.h delete mode 100644 libcxx/test/support/user_defined_integral.hpp delete mode 100755 libcxx/test/testit delete mode 100644 libcxx/utils/not/not.py delete mode 100644 libcxx/utils/sym_check/linux_blacklist.txt delete mode 100644 libcxx/utils/sym_check/osx_blacklist.txt delete mode 100644 libcxx/utils/sym_check/sym_check/__init__.py delete mode 100644 libcxx/utils/sym_check/sym_check/diff.py delete mode 100644 libcxx/utils/sym_check/sym_check/extract.py delete mode 100644 libcxx/utils/sym_check/sym_check/match.py delete mode 100644 libcxx/utils/sym_check/sym_check/util.py delete mode 100755 libcxx/utils/sym_check/sym_diff.py delete mode 100755 libcxx/utils/sym_check/sym_extract.py delete mode 100755 libcxx/utils/sym_check/sym_match.py delete mode 100644 libcxx/www/atomic_design.html delete mode 100644 libcxx/www/atomic_design_a.html delete mode 100644 libcxx/www/atomic_design_b.html delete mode 100644 libcxx/www/atomic_design_c.html delete mode 100644 libcxx/www/content.css delete mode 100644 libcxx/www/cxx1y_status.html delete mode 100644 libcxx/www/cxx1z_status.html delete mode 100644 libcxx/www/debug_mode.html delete mode 100644 libcxx/www/index.html delete mode 100644 libcxx/www/lit_usage.html delete mode 100644 libcxx/www/menu.css delete mode 100644 libcxx/www/results.Linux.html delete mode 100644 libcxx/www/results.Windows.html delete mode 100644 libcxx/www/ts1z_status.html delete mode 100644 libcxx/www/type_traits_design.html delete mode 100644 libcxxabi/.arcconfig delete mode 100644 libcxxabi/.gitignore delete mode 100644 libcxxabi/CMakeLists.txt delete mode 100644 libcxxabi/CREDITS.TXT delete mode 100644 libcxxabi/LICENSE.TXT delete mode 100644 libcxxabi/cmake/config-ix.cmake delete mode 100644 libcxxabi/include/__cxxabi_config.h delete mode 100644 libcxxabi/include/cxxabi.h delete mode 100644 libcxxabi/include/libunwind.h delete mode 100644 libcxxabi/include/mach-o/compact_unwind_encoding.h delete mode 100644 libcxxabi/include/unwind.h delete mode 100755 libcxxabi/lib/buildit delete mode 100644 libcxxabi/src/CMakeLists.txt delete mode 100644 libcxxabi/src/Unwind/AddressSpace.hpp delete mode 100644 libcxxabi/src/Unwind/CMakeLists.txt delete mode 100644 libcxxabi/src/Unwind/CompactUnwinder.hpp delete mode 100644 libcxxabi/src/Unwind/DwarfInstructions.hpp delete mode 100644 libcxxabi/src/Unwind/DwarfParser.hpp delete mode 100644 libcxxabi/src/Unwind/EHHeaderParser.hpp delete mode 100644 libcxxabi/src/Unwind/Registers.hpp delete mode 100644 libcxxabi/src/Unwind/Unwind-EHABI.cpp delete mode 100644 libcxxabi/src/Unwind/Unwind-EHABI.h delete mode 100644 libcxxabi/src/Unwind/Unwind-sjlj.c delete mode 100644 libcxxabi/src/Unwind/UnwindCursor.hpp delete mode 100644 libcxxabi/src/Unwind/UnwindLevel1-gcc-ext.c delete mode 100644 libcxxabi/src/Unwind/UnwindLevel1.c delete mode 100644 libcxxabi/src/Unwind/UnwindRegistersRestore.S delete mode 100644 libcxxabi/src/Unwind/UnwindRegistersSave.S delete mode 100644 libcxxabi/src/Unwind/Unwind_AppleExtras.cpp delete mode 100644 libcxxabi/src/Unwind/assembly.h delete mode 100644 libcxxabi/src/Unwind/config.h delete mode 100644 libcxxabi/src/Unwind/dwarf2.h delete mode 100644 libcxxabi/src/Unwind/libunwind.cpp delete mode 100644 libcxxabi/src/Unwind/libunwind_ext.h delete mode 100644 libcxxabi/src/Unwind/unwind_ext.h delete mode 100644 libcxxabi/src/abort_message.cpp delete mode 100644 libcxxabi/src/abort_message.h delete mode 100644 libcxxabi/src/config.h delete mode 100644 libcxxabi/src/cxa_aux_runtime.cpp delete mode 100644 libcxxabi/src/cxa_default_handlers.cpp delete mode 100644 libcxxabi/src/cxa_demangle.cpp delete mode 100644 libcxxabi/src/cxa_exception.cpp delete mode 100644 libcxxabi/src/cxa_exception.hpp delete mode 100644 libcxxabi/src/cxa_exception_storage.cpp delete mode 100644 libcxxabi/src/cxa_guard.cpp delete mode 100644 libcxxabi/src/cxa_handlers.cpp delete mode 100644 libcxxabi/src/cxa_handlers.hpp delete mode 100644 libcxxabi/src/cxa_new_delete.cpp delete mode 100644 libcxxabi/src/cxa_personality.cpp delete mode 100644 libcxxabi/src/cxa_thread_atexit.cpp delete mode 100644 libcxxabi/src/cxa_unexpected.cpp delete mode 100644 libcxxabi/src/cxa_vector.cpp delete mode 100644 libcxxabi/src/cxa_virtual.cpp delete mode 100644 libcxxabi/src/exception.cpp delete mode 100644 libcxxabi/src/fallback_malloc.ipp delete mode 100644 libcxxabi/src/private_typeinfo.cpp delete mode 100644 libcxxabi/src/private_typeinfo.h delete mode 100644 libcxxabi/src/stdexcept.cpp delete mode 100644 libcxxabi/src/typeinfo.cpp delete mode 100644 libcxxabi/test/CMakeLists.txt delete mode 100644 libcxxabi/test/backtrace_test.pass.cpp delete mode 100644 libcxxabi/test/catch_array_01.pass.cpp delete mode 100644 libcxxabi/test/catch_array_02.pass.cpp delete mode 100644 libcxxabi/test/catch_class_01.pass.cpp delete mode 100644 libcxxabi/test/catch_class_02.pass.cpp delete mode 100644 libcxxabi/test/catch_class_03.pass.cpp delete mode 100644 libcxxabi/test/catch_class_04.pass.cpp delete mode 100644 libcxxabi/test/catch_const_pointer_nullptr.pass.cpp delete mode 100644 libcxxabi/test/catch_function_01.pass.cpp delete mode 100644 libcxxabi/test/catch_function_02.pass.cpp delete mode 100644 libcxxabi/test/catch_in_noexcept.pass.cpp delete mode 100644 libcxxabi/test/catch_member_data_pointer_01.pass.cpp delete mode 100644 libcxxabi/test/catch_member_function_pointer_01.pass.cpp delete mode 100644 libcxxabi/test/catch_member_pointer_nullptr.pass.cpp delete mode 100644 libcxxabi/test/catch_multi_level_pointer.pass.cpp delete mode 100644 libcxxabi/test/catch_pointer_nullptr.pass.cpp delete mode 100644 libcxxabi/test/catch_pointer_reference.pass.cpp delete mode 100644 libcxxabi/test/catch_ptr.pass.cpp delete mode 100644 libcxxabi/test/catch_ptr_02.pass.cpp delete mode 100644 libcxxabi/test/cxa_thread_atexit_test.pass.cpp delete mode 100644 libcxxabi/test/dynamic_cast14.pass.cpp delete mode 100644 libcxxabi/test/dynamic_cast3.pass.cpp delete mode 100644 libcxxabi/test/dynamic_cast5.pass.cpp delete mode 100644 libcxxabi/test/dynamic_cast_stress.pass.cpp delete mode 100644 libcxxabi/test/inherited_exception.pass.cpp delete mode 100644 libcxxabi/test/libcxxabi/__init__.py delete mode 100644 libcxxabi/test/libcxxabi/test/__init__.py delete mode 100644 libcxxabi/test/libcxxabi/test/config.py delete mode 100644 libcxxabi/test/lit.cfg delete mode 100644 libcxxabi/test/lit.site.cfg.in delete mode 100644 libcxxabi/test/support/timer.hpp delete mode 100644 libcxxabi/test/test_aux_runtime.pass.cpp delete mode 100644 libcxxabi/test/test_aux_runtime_op_array_new.pass.cpp delete mode 100644 libcxxabi/test/test_demangle.pass.cpp delete mode 100644 libcxxabi/test/test_exception_storage.pass.cpp delete mode 100644 libcxxabi/test/test_fallback_malloc.pass.cpp delete mode 100644 libcxxabi/test/test_guard.pass.cpp delete mode 100644 libcxxabi/test/test_vector1.pass.cpp delete mode 100644 libcxxabi/test/test_vector2.pass.cpp delete mode 100644 libcxxabi/test/test_vector3.pass.cpp delete mode 100755 libcxxabi/test/testit delete mode 100644 libcxxabi/test/unwind_01.pass.cpp delete mode 100644 libcxxabi/test/unwind_02.pass.cpp delete mode 100644 libcxxabi/test/unwind_03.pass.cpp delete mode 100644 libcxxabi/test/unwind_04.pass.cpp delete mode 100644 libcxxabi/test/unwind_05.pass.cpp delete mode 100644 libcxxabi/test/unwind_06.pass.cpp delete mode 100644 libcxxabi/www/content.css delete mode 100644 libcxxabi/www/index.html delete mode 100644 libcxxabi/www/menu.css delete mode 100644 libcxxabi/www/spec.html diff --git a/.gitmodules b/.gitmodules index 944f84290..b526f2e34 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,9 @@ [submodule "external/libobjc2"] path = external/libobjc2 url = https://github.com/LubosD/darling-libobjc2.git +[submodule "external/libcxx"] + path = external/libcxx + url = https://github.com/LubosD/darling-libcxx.git +[submodule "external/libcxxabi"] + path = external/libcxxabi + url = https://github.com/LubosD/darling-libcxxabi.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 2713da029..a6c0e2303 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,19 +46,21 @@ add_subdirectory(external/libobjc2) ###################### set(CMAKE_CXX_FLAGS_SAVED ${CMAKE_CXX_FLAGS}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -nostdinc -nostdinc++") -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/libcxx/include") +set(CMAKE_SHARED_LINKER_FLAGS "-nostdlib") +include_directories("${CMAKE_CURRENT_SOURCE_DIR}/external/libcxx/include") include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libc/locale) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libc/locale/FreeBSD) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libc/stdtime/FreeBSD) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libc/pthreads) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libc/include/FreeBSD) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libcxxabi/include) -set(LIBCXXABI_LIBCXX_PATH "{CMAKE_CURRENT_SOURCE_DIR}/libcxx") -set(LIBCXXABI_LIBCXX_INCLUDES "-I${CMAKE_CURRENT_SOURCE_DIR}/libcxx/include") +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/external/libcxxabi/include) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libunwind/include) +set(LIBCXXABI_LIBCXX_PATH "{CMAKE_CURRENT_SOURCE_DIR}/external/libcxx") +set(LIBCXXABI_LIBCXX_INCLUDES "-I${CMAKE_CURRENT_SOURCE_DIR}/external/libcxx/include") -add_subdirectory(libcxxabi) +add_subdirectory(external/libcxxabi) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_SAVED} -std=c++11 -msse -msse2 -msse3 -nostdinc -nostdinc++ -include ${CMAKE_CURRENT_SOURCE_DIR}/libc/include/xlocale.h") set(LIBCXX_HAS_STDCXX11_FLAG TRUE) add_definitions(-D_USE_EXTENDED_LOCALES_) -add_subdirectory(libcxx) +add_subdirectory(external/libcxx) diff --git a/external/libcxx b/external/libcxx new file mode 160000 index 000000000..6f26d7e64 --- /dev/null +++ b/external/libcxx @@ -0,0 +1 @@ +Subproject commit 6f26d7e64f0d88ea9523bd24275ba29dea19b9c6 diff --git a/external/libcxxabi b/external/libcxxabi new file mode 160000 index 000000000..cfb9b989e --- /dev/null +++ b/external/libcxxabi @@ -0,0 +1 @@ +Subproject commit cfb9b989e91718c25262034db8cfd9a4f9459097 diff --git a/libc/include/time.h b/libc/include/time.h index 2914d40bc..62e11619a 100644 --- a/libc/include/time.h +++ b/libc/include/time.h @@ -1,3 +1,4 @@ +/* Modified for Darling by Lubos Dolezel (2015) */ /* * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. * @@ -66,7 +67,8 @@ #include <_types.h> #define __need_struct_timespec -#include <_structs.h> +//#include <_structs.h> +#include "../../kernel-include/sys/_structs.h" #ifndef NULL #define NULL __DARWIN_NULL diff --git a/libcxx/.arcconfig b/libcxx/.arcconfig deleted file mode 100644 index 6d07e827f..000000000 --- a/libcxx/.arcconfig +++ /dev/null @@ -1,4 +0,0 @@ -{ - "project_id" : "libcxx", - "conduit_uri" : "http://reviews.llvm.org/" -} diff --git a/libcxx/.gitignore b/libcxx/.gitignore deleted file mode 100644 index b26d5f7aa..000000000 --- a/libcxx/.gitignore +++ /dev/null @@ -1,54 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] - -# C extensions -*.so - -# Distribution / packaging -.Python -env/ -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -#lib/ # We actually have things checked in to lib/ -lib64/ -parts/ -sdist/ -var/ -*.egg-info/ -.installed.cfg -*.egg - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.cache -nosetests.xml -coverage.xml - -# Translations -*.mo -*.pot - -# Django stuff: -*.log - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt deleted file mode 100644 index 95f29a027..000000000 --- a/libcxx/CMakeLists.txt +++ /dev/null @@ -1,356 +0,0 @@ -# See www/CMake.html for instructions on how to build libcxx with CMake. - -#=============================================================================== -# Setup Project -#=============================================================================== - -project(libcxx CXX C) -cmake_minimum_required(VERSION 2.8) - -if(POLICY CMP0042) - cmake_policy(SET CMP0042 NEW) # Set MACOSX_RPATH=YES by default -endif() - -set(PACKAGE_NAME libcxx) -set(PACKAGE_VERSION trunk-svn) -set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") -set(PACKAGE_BUGREPORT "llvmbugs@cs.uiuc.edu") - -# Add path for custom modules -set(CMAKE_MODULE_PATH - "${CMAKE_CURRENT_SOURCE_DIR}/cmake" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" - ${CMAKE_MODULE_PATH} - ) - -# Require out of source build. -include(MacroEnsureOutOfSourceBuild) -MACRO_ENSURE_OUT_OF_SOURCE_BUILD( - "${PROJECT_NAME} requires an out of source build. Please create a separate - build directory and run 'cmake /path/to/${PROJECT_NAME} [options]' there." - ) - -if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) - set(LIBCXX_LIBDIR_SUFFIX "" CACHE STRING - "Define suffix of library directory name (32/64)") - - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX}) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX}) - - set(LIBCXX_BUILT_STANDALONE 1) -else() - set(LIBCXX_LIBDIR_SUFFIX ${LLVM_LIBDIR_SUFFIX}) -endif() - -#=============================================================================== -# Setup CMake Options -#=============================================================================== - -# Define options. -option(LIBCXX_ENABLE_EXCEPTIONS "Use exceptions." ON) -option(LIBCXX_ENABLE_RTTI "Use run time type information." ON) -option(LIBCXX_ENABLE_ASSERTIONS "Enable assertions independent of build mode." ON) -option(LIBCXX_ENABLE_PEDANTIC "Compile with pedantic enabled." ON) -option(LIBCXX_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF) -option(LIBCXX_ENABLE_CXX1Y "Enable -std=c++1y and use of c++1y language features if the compiler supports it." OFF) -option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON) -option(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE "Build libc++ with support for the global filesystem namespace." ON) -option(LIBCXX_ENABLE_STDIN "Build libc++ with support for stdin/std::cin." ON) -option(LIBCXX_ENABLE_STDOUT "Build libc++ with support for stdout/std::cout." ON) -option(LIBCXX_ENABLE_THREADS "Build libc++ with support for threads." ON) -option(LIBCXX_BUILD_32_BITS "Build 32 bit libc++" OFF) -option(LIBCXX_ENABLE_MONOTONIC_CLOCK - "Build libc++ with support for a monotonic clock. - This option may only be used when LIBCXX_ENABLE_THREADS=OFF." ON) -option(LIBCXX_INSTALL_HEADERS "Install the libc++ headers." ON) -option(LIBCXX_INSTALL_SUPPORT_HEADERS "Install libc++ support headers." ON) -option(LIBCXX_GENERATE_COVERAGE "Enable generating code coverage." OFF) -set(LIBCXX_COVERAGE_LIBRARY "" CACHE STRING - "The Profile-rt library used to build with code coverage") -option(LIBCXX_ENABLE_STATIC_ABI_LIBRARY "Statically link the ABI library" OFF) -set(LIBCXX_SYSROOT "" CACHE STRING "Use alternate sysroot.") -set(LIBCXX_GCC_TOOLCHAIN "" CACHE STRING "Use alternate GCC toolchain.") -if (LIBCXX_BUILT_STANDALONE) - set(LLVM_USE_SANITIZER "" CACHE STRING - "Define the sanitizer used to build the library and tests") -endif() - -if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY) - if (APPLE) - message(FATAL_ERROR "LIBCXX_ENABLE_STATIC_ABI_LIBRARY is not supported on OS X") - else() - message(WARNING "LIBCXX_ENABLE_STATIC_ABI_LIBRARY is an experimental option") - endif() -endif() - -set(CXXABIS none libcxxabi libcxxrt libstdc++ libsupc++) -if (NOT LIBCXX_CXX_ABI) - if (NOT DEFINED LIBCXX_BUILT_STANDALONE AND - IS_DIRECTORY "${CMAKE_SOURCE_DIR}/projects/libcxxabi") - set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi") - set(LIBCXX_CXX_ABI_INCLUDE_PATHS "${CMAKE_SOURCE_DIR}/projects/libcxxabi/include") - set(LIBCXX_CXX_ABI_INTREE 1) - else () - set(LIBCXX_CXX_ABI_LIBNAME "none") - endif () -else () - set(LIBCXX_CXX_ABI_LIBNAME "${LIBCXX_CXX_ABI}") -endif () -set(LIBCXX_CXX_ABI "${LIBCXX_CXX_ABI}" CACHE STRING - "Specify C++ ABI library to use." FORCE) -set_property(CACHE LIBCXX_CXX_ABI PROPERTY STRINGS ;${CXXABIS}) - -# TODO(ericwf): Remove these options by March/25/2015. -# These CMake options have been removed in favor of a generic option -# "LIBCXX_CXX_ABI_INCLUDE_PATHS". Issue an explicit error message explaining -# the change for anybody that still uses them. -if (DEFINED LIBCXX_LIBCXXABI_INCLUDE_PATHS) - message(FATAL_ERROR - "The option \"LIBCXX_LIBCXXABI_INCLUDE_PATHS\" has been removed. " - "Use \"LIBCXX_CXX_ABI_INCLUDE_PATHS\" instead " - "and clean your build directory.") -elseif(DEFINED LIBCXX_LIBSUPCXX_INCLUDE_PATHS) - message(FATAL_ERROR - "The option \"LIBCXX_LIBSUPCXX_INCLUDE_PATHS\" has been removed. " - "Use \"LIBCXX_CXX_ABI_INCLUDE_PATHS\" instead " - "and clean your build directory.") -elseif(DEFINED LIBCXX_LIBCXXRT_INCLUDE_PATHS) - message(FATAL_ERROR - "The option \"LIBCXX_LIBCXXRT_INCLUDE_PATHS\" has been removed. " - "Use \"LIBCXX_CXX_ABI_INCLUDE_PATHS\" instead " - "and clean your build directory.") -endif() - -#=============================================================================== -# Configure System -#=============================================================================== - -set(LIBCXX_COMPILER ${CMAKE_CXX_COMPILER}) -set(LIBCXX_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) -set(LIBCXX_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) -set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX}) - -# Declare libc++ configuration variables. -# They are intended for use as follows: -# LIBCXX_CXX_FLAGS: General flags for both the compiler and linker. -# LIBCXX_COMPILE_FLAGS: Compile only flags. -# LIBCXX_LINK_FLAGS: Linker only flags. -set(LIBCXX_CXX_FLAGS "-nostdinc -nostdlib") -set(LIBCXX_COMPILE_FLAGS "") -set(LIBCXX_LINK_FLAGS "") - -# Configure compiler. -include(config-ix) -# Configure ABI library -include(HandleLibCXXABI) -# Configure coverage options. -if (LIBCXX_GENERATE_COVERAGE) - include(CodeCoverage) - set(CMAKE_BUILD_TYPE "COVERAGE" CACHE STRING "" FORCE) -endif() - -#=============================================================================== -# Setup Compiler Flags -#=============================================================================== - -# Get required flags. -# On all systems the system c++ standard library headers need to be excluded. -if (MSVC) - # MSVC only has -X, which disables all default includes; including the crt. - # Thus, we do nothing and hope we don't accidentally include any of the C++ - # headers. -else() - if (LIBCXX_HAS_NOSTDINCXX_FLAG) - list(APPEND LIBCXX_COMPILE_FLAGS -nostdinc++) - string(REPLACE "-stdlib=libc++" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE "-stdlib=libstdc++" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - endif() - # If c++1y has been enabled then attempt to use it. Fail if it is no supported - # by the compiler. Otherwise choose c++11 and ensure the compiler supports it. - if (LIBCXX_ENABLE_CXX1Y) - if (LIBCXX_HAS_STDCXX1Y_FLAG) - set(LIBCXX_STD_VERSION c++1y) - else() - message(FATAL_ERROR "c++1y was enabled but the compiler does not support it.") - endif() - else() - if (LIBCXX_HAS_STDCXX11_FLAG) - set(LIBCXX_STD_VERSION c++11) - else() - message(FATAL_ERROR "c++11 is required by libc++ but is not supported by the compiler") - endif() - endif() - # LIBCXX_STD_VERSION should always be set at this point. - list(APPEND LIBCXX_CXX_FLAGS "-std=${LIBCXX_STD_VERSION}") -endif() - -macro(append_if list condition var) - if (${condition}) - list(APPEND ${list} ${var}) - endif() -endmacro() - -# Get warning flags -if (NOT MSVC) - append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WALL_FLAG -Wall) - list(APPEND LIBCXX_COMPILE_FLAGS -Werror=return-type) -endif() - -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_W_FLAG -W) -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WNO_UNUSED_PARAMETER_FLAG -Wno-unused-parameter) -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WWRITE_STRINGS_FLAG -Wwrite-strings) -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WNO_LONG_LONG_FLAG -Wno-long-long) -if (LIBCXX_ENABLE_WERROR) - append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WERROR_FLAG -Werror) - append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WX_FLAG -WX) -else() - append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WNO_ERROR_FLAG -Wno-error) - append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_NO_WX_FLAG -WX-) -endif() -if (LIBCXX_ENABLE_PEDANTIC) - append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_PEDANTIC_FLAG -pedantic) -endif() - -# Get feature flags. -# Exceptions -if (LIBCXX_ENABLE_EXCEPTIONS) - # Catches C++ exceptions only and tells the compiler to assume that extern C - # functions never throw a C++ exception. - append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_EHSC_FLAG -EHsc) -else() - list(APPEND LIBCXX_CXX_FLAGS -D_LIBCPP_NO_EXCEPTIONS) - append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_NO_EHS_FLAG -EHs-) - append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_NO_EHA_FLAG -EHa-) - append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_FNO_EXCEPTIONS_FLAG -fno-exceptions) -endif() -# RTTI -if (NOT LIBCXX_ENABLE_RTTI) - list(APPEND LIBCXX_CXX_FLAGS -D_LIBCPP_NO_RTTI) - append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_NO_GR_FLAG -GR-) - append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_FNO_RTTI_FLAG -fno-rtti) -endif() -# Assert -string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE) -if (LIBCXX_ENABLE_ASSERTIONS) - # MSVC doesn't like _DEBUG on release builds. See PR 4379. - if (NOT MSVC) - list(APPEND LIBCXX_COMPILE_FLAGS -D_DEBUG) - endif() - # On Release builds cmake automatically defines NDEBUG, so we - # explicitly undefine it: - if (uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE") - list(APPEND LIBCXX_COMPILE_FLAGS -UNDEBUG) - endif() -else() - if (NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE") - list(APPEND LIBCXX_COMPILE_FLAGS -DNDEBUG) - endif() -endif() -# Static library -if (NOT LIBCXX_ENABLE_SHARED) - list(APPEND LIBCXX_COMPILE_FLAGS -D_LIBCPP_BUILD_STATIC) -endif() - -if (CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32) - if (LIBCXX_BUILD_32_BITS) - message(STATUS "Building 32 bits executables and libraries.") - list(APPEND LIBCXX_CXX_FLAGS "-m32") - endif() -elseif(LIBCXX_BUILD_32_BITS) - message(FATAL_ERROR "LIBCXX_BUILD_32_BITS=ON is not supported on this platform.") -endif() -# This is the _ONLY_ place where add_definitions is called. -if (MSVC) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) -endif() - -# LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE configuration -if (NOT LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE) - add_definitions(-D_LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE) -endif() - -# LIBCXX_ENABLE_STDIN configuration -if (NOT LIBCXX_ENABLE_STDIN) - add_definitions(-D_LIBCPP_HAS_NO_STDIN) -endif() - -# LIBCXX_ENABLE_STDOUT configuration -if (NOT LIBCXX_ENABLE_STDOUT) - add_definitions(-D_LIBCPP_HAS_NO_STDOUT) -endif() - -# LIBCXX_ENABLE_THREADS configuration -if (NOT LIBCXX_ENABLE_THREADS) - add_definitions(-D_LIBCPP_HAS_NO_THREADS) - if (NOT LIBCXX_ENABLE_MONOTONIC_CLOCK) - add_definitions(-D_LIBCPP_HAS_NO_MONOTONIC_CLOCK) - endif() -# Ensure LIBCXX_ENABLE_MONOTONIC_CLOCK is set to ON. -elseif(NOT LIBCXX_ENABLE_MONOTONIC_CLOCK) - message(FATAL_ERROR "LIBCXX_ENABLE_MONOTONIC_CLOCK can only be set to OFF" - " when LIBCXX_ENABLE_THREADS is also set to OFF.") -endif() - -# Configure for sanitizers. If LIBCXX_BUILT_STANDALONE then we have to do -# the flag translation ourselves. Othewise LLVM's CMakeList.txt will handle it. -if (LIBCXX_BUILT_STANDALONE) - # NOTE: LLVM_USE_SANITIZER checks for a UNIX like system instead of MSVC. - # But we don't have LLVM_ON_UNIX so checking for MSVC is the best we can do. - if (LLVM_USE_SANITIZER AND NOT MSVC) - append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_FNO_OMIT_FRAME_POINTER_FLAG - "-fno-omit-frame-pointer") - if (NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG" AND - NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO") - append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_GLINE_TABLES_ONLY_FLAG - "-gline-tables-only") - endif() - if (LLVM_USE_SANITIZER STREQUAL "Address") - list(APPEND LIBCXX_CXX_FLAGS "-fsanitize=address") - elseif (LLVM_USE_SANITIZER MATCHES "Memory(WithOrigins)?") - list(APPEND LIBCXX_CXX_FLAGS "-fsanitize=memory") - if (LLVM_USE_SANITIZER STREQUAL "MemoryWithOrigins") - list(APPEND LIBCXX_CXX_FLAGS "-fsanitize-memory-track-origins") - endif() - elseif (LLVM_USE_SANITIZER STREQUAL "Undefined") - list(APPEND LIBCXX_CXX_FLAGS - "-fsanitize=undefined -fno-sanitize=vptr,function -fno-sanitize-recover") - elseif (LLVM_USE_SANITIZER STREQUAL "Thread") - list(APPEND LIBCXX_CXX_FLAGS "-fsanitize=thread") - else() - message(WARNING "Unsupported value of LLVM_USE_SANITIZER: ${LLVM_USE_SANITIZER}") - endif() - elseif(MSVC) - message(WARNING "LLVM_USE_SANITIZER is not supported with MSVC") - endif() -endif() - -append_if(LIBCXX_CXX_FLAGS LIBCXX_TARGET_TRIPLE - "-target ${LIBCXX_TARGET_TRIPLE}") - -append_if(LIBCXX_CXX_FLAGS LIBCXX_SYSROOT "--sysroot ${LIBCXX_SYSROOT}") -append_if(LIBCXX_CXX_FLAGS LIBCXX_GCC_TOOLCHAIN - "-gcc-toolchain ${LIBCXX_GCC_TOOLCHAIN}") - -if (LLVM_USE_SANITIZER AND LIBCXX_GENERATE_COVERAGE) - message(FATAL_ERROR "LLVM_USE_SANITIZER cannot be used with LIBCXX_GENERATE_COVERAGE") -endif() - -string(REPLACE ";" " " LIBCXX_CXX_FLAGS "${LIBCXX_CXX_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBCXX_CXX_FLAGS}") - -#=============================================================================== -# Setup Source Code -#=============================================================================== - -include_directories(include) -add_subdirectory(include) - -# Add source code. This also contains all of the logic for deciding linker flags -# soname, etc... -add_subdirectory(lib) - -#=============================================================================== -# Setup Tests -#=============================================================================== - -add_subdirectory(test) diff --git a/libcxx/CREDITS.TXT b/libcxx/CREDITS.TXT deleted file mode 100644 index 1cf713a68..000000000 --- a/libcxx/CREDITS.TXT +++ /dev/null @@ -1,138 +0,0 @@ -This file is a partial list of people who have contributed to the LLVM/libc++ -project. If you have contributed a patch or made some other contribution to -LLVM/libc++, please submit a patch to this file to add yourself, and it will be -done! - -The list is sorted by surname and formatted to allow easy grepping and -beautification by scripts. The fields are: name (N), email (E), web-address -(W), PGP key ID and fingerprint (P), description (D), and snail-mail address -(S). - -N: Saleem Abdulrasool -E: compnerd@compnerd.org -D: Minor patches and Linux fixes. - -N: Dan Albert -E: danalbert@google.com -D: Android support and test runner improvements. - -N: Dimitry Andric -E: dimitry@andric.com -D: Visibility fixes, minor FreeBSD portability patches. - -N: Holger Arnold -E: holgerar@gmail.com -D: Minor fix. - -N: Ruben Van Boxem -E: vanboxem dot ruben at gmail dot com -D: Initial Windows patches. - -N: David Chisnall -E: theraven at theravensnest dot org -D: FreeBSD and Solaris ports, libcxxrt support, some atomics work. - -N: Marshall Clow -E: mclow.lists@gmail.com -E: marshall@idio.com -D: C++14 support, patches and bug fixes. - -N: Eric Fiselier -E: eric@efcs.ca -D: LFTS support, patches and bug fixes. - -N: Bill Fisher -E: william.w.fisher@gmail.com -D: Regex bug fixes. - -N: Matthew Dempsky -E: matthew@dempsky.org -D: Minor patches and bug fixes. - -N: Google Inc. -D: Copyright owner and contributor of the CityHash algorithm - -N: Howard Hinnant -E: hhinnant@apple.com -D: Architect and primary author of libc++ - -N: Hyeon-bin Jeong -E: tuhertz@gmail.com -D: Minor patches and bug fixes. - -N: Argyrios Kyrtzidis -E: kyrtzidis@apple.com -D: Bug fixes. - -N: Bruce Mitchener, Jr. -E: bruce.mitchener@gmail.com -D: Emscripten-related changes. - -N: Michel Morin -E: mimomorin@gmail.com -D: Minor patches to is_convertible. - -N: Andrew Morrow -E: andrew.c.morrow@gmail.com -D: Minor patches and Linux fixes. - -N: Arvid Picciani -E: aep at exys dot org -D: Minor patches and musl port. - -N: Bjorn Reese -E: breese@users.sourceforge.net -D: Initial regex prototype - -N: Nico Rieck -E: nico.rieck@gmail.com -D: Windows fixes - -N: Jon Roelofs -E: jonathan@codesourcery.com -D: Remote testing, Newlib port, baremetal/single-threaded support. - -N: Jonathan Sauer -D: Minor patches, mostly related to constexpr - -N: Craig Silverstein -E: csilvers@google.com -D: Implemented Cityhash as the string hash function on 64-bit machines - -N: Richard Smith -D: Minor patches. - -N: Joerg Sonnenberger -E: joerg@NetBSD.org -D: NetBSD port. - -N: Stephan Tolksdorf -E: st@quanttec.com -D: Minor fix - -N: Michael van der Westhuizen -E: r1mikey at gmail dot com - -N: Larisse Voufo -D: Minor patches. - -N: Klaas de Vries -E: klaas at klaasgaaf dot nl -D: Minor bug fix. - -N: Zhang Xiongpang -E: zhangxiongpang@gmail.com -D: Minor patches and bug fixes. - -N: Xing Xue -E: xingxue@ca.ibm.com -D: AIX port - -N: Zhihao Yuan -E: lichray@gmail.com -D: Standard compatibility fixes. - -N: Jeffrey Yasskin -E: jyasskin@gmail.com -E: jyasskin@google.com -D: Linux fixes. diff --git a/libcxx/LICENSE.TXT b/libcxx/LICENSE.TXT deleted file mode 100644 index 53352e42d..000000000 --- a/libcxx/LICENSE.TXT +++ /dev/null @@ -1,76 +0,0 @@ -============================================================================== -libc++ License -============================================================================== - -The libc++ library is dual licensed under both the University of Illinois -"BSD-Like" license and the MIT license. As a user of this code you may choose -to use it under either license. As a contributor, you agree to allow your code -to be used under both. - -Full text of the relevant licenses is included below. - -============================================================================== - -University of Illinois/NCSA -Open Source License - -Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. - -============================================================================== - -Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/libcxx/cmake/Modules/CodeCoverage.cmake b/libcxx/cmake/Modules/CodeCoverage.cmake deleted file mode 100644 index addd10abd..000000000 --- a/libcxx/cmake/Modules/CodeCoverage.cmake +++ /dev/null @@ -1,36 +0,0 @@ -find_program(CODE_COVERAGE_LCOV lcov) -if (NOT CODE_COVERAGE_LCOV) - message(FATAL_ERROR "Cannot find lcov...") -endif() - -find_program(CODE_COVERAGE_GENHTML genhtml) -if (NOT CODE_COVERAGE_GENHTML) - message(FATAL_ERROR "Cannot find genhtml...") -endif() - -set(CMAKE_CXX_FLAGS_COVERAGE "-g -O0 --coverage") - -function(setup_lcov_test_target_coverage target_name output_dir capture_dirs source_dirs) - file(MAKE_DIRECTORY ${output_dir}) - - set(CAPTURE_DIRS "") - foreach(cdir ${capture_dirs}) - list(APPEND CAPTURE_DIRS "-d;${cdir}") - endforeach() - - set(EXTRACT_DIRS "") - foreach(sdir ${source_dirs}) - list(APPEND EXTRACT_DIRS "'${sdir}/*'") - endforeach() - - message(STATUS "Capture Directories: ${CAPTURE_DIRS}") - message(STATUS "Extract Directories: ${EXTRACT_DIRS}") - - add_custom_target(generate-lib${target_name}-coverage - COMMAND ${CODE_COVERAGE_LCOV} --capture ${CAPTURE_DIRS} -o test_coverage.info - COMMAND ${CODE_COVERAGE_LCOV} --extract test_coverage.info ${EXTRACT_DIRS} -o test_coverage.info - COMMAND ${CODE_COVERAGE_GENHTML} --demangle-cpp test_coverage.info -o test_coverage - COMMAND ${CMAKE_COMMAND} -E remove test_coverage.info - WORKING_DIRECTORY ${output_dir} - COMMENT "Generating coverage results") -endfunction() diff --git a/libcxx/cmake/Modules/HandleLibCXXABI.cmake b/libcxx/cmake/Modules/HandleLibCXXABI.cmake deleted file mode 100644 index ac4269794..000000000 --- a/libcxx/cmake/Modules/HandleLibCXXABI.cmake +++ /dev/null @@ -1,103 +0,0 @@ - -#=============================================================================== -# Add an ABI library if appropriate -#=============================================================================== - -# -# _setup_abi: Set up the build to use an ABI library -# -# Parameters: -# abidefines: A list of defines needed to compile libc++ with the ABI library -# abilib : The ABI library to link against. -# abifiles : A list of files (which may be relative paths) to copy into the -# libc++ build tree for the build. These files will also be -# installed alongside the libc++ headers. -# abidirs : A list of relative paths to create under an include directory -# in the libc++ build directory. -# -macro(setup_abi_lib abidefines abilib abifiles abidirs) - list(APPEND LIBCXX_COMPILE_FLAGS ${abidefines}) - set(LIBCXX_CXX_ABI_INCLUDE_PATHS "${LIBCXX_CXX_ABI_INCLUDE_PATHS}" - CACHE PATH - "Paths to C++ ABI header directories separated by ';'." FORCE - ) - - set(LIBCXX_CXX_ABI_LIBRARY ${abilib}) - - set(LIBCXX_ABILIB_FILES ${abifiles}) - - file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include") - foreach(_d ${abidirs}) - file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include/${_d}") - endforeach() - - foreach(fpath ${LIBCXX_ABILIB_FILES}) - set(found FALSE) - foreach(incpath ${LIBCXX_CXX_ABI_INCLUDE_PATHS}) - if (EXISTS "${incpath}/${fpath}") - set(found TRUE) - get_filename_component(dstdir ${fpath} PATH) - get_filename_component(ifile ${fpath} NAME) - file(COPY "${incpath}/${fpath}" - DESTINATION "${CMAKE_BINARY_DIR}/include/${dstdir}" - ) - install(FILES "${CMAKE_BINARY_DIR}/include/${fpath}" - DESTINATION include/c++/v1/${dstdir} - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ - ) - list(APPEND abilib_headers "${CMAKE_BINARY_DIR}/include/${fpath}") - endif() - endforeach() - if (NOT found) - message(WARNING "Failed to find ${fpath}") - endif() - endforeach() - - add_custom_target(LIBCXX_CXX_ABI_DEPS DEPENDS ${abilib_headers}) - include_directories("${CMAKE_BINARY_DIR}/include") - -endmacro() - -if ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libstdc++" OR - "${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libsupc++") - set(_LIBSUPCXX_INCLUDE_FILES - cxxabi.h bits/c++config.h bits/os_defines.h bits/cpu_defines.h - bits/cxxabi_tweaks.h bits/cxxabi_forced.h - ) - if ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libstdc++") - set(_LIBSUPCXX_DEFINES "-DLIBSTDCXX") - set(_LIBSUPCXX_LIBNAME stdc++) - else() - set(_LIBSUPCXX_DEFINES "") - set(_LIBSUPCXX_LIBNAME supc++) - endif() - setup_abi_lib( - "-D__GLIBCXX__ ${_LIBSUPCXX_DEFINES}" - "${_LIBSUPCXX_LIBNAME}" "${_LIBSUPCXX_INCLUDE_FILES}" "bits" - ) -elseif ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libcxxabi") - if (LIBCXX_CXX_ABI_INTREE) - # Link against just-built "cxxabi" target. - if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY) - set(CXXABI_LIBNAME cxxabi_static) - else() - set(CXXABI_LIBNAME cxxabi_shared) - endif() - set(LIBCXX_LIBCPPABI_VERSION "2" PARENT_SCOPE) - else() - # Assume c++abi is installed in the system, rely on -lc++abi link flag. - set(CXXABI_LIBNAME "c++abi") - endif() - setup_abi_lib("" - ${CXXABI_LIBNAME} "cxxabi.h;__cxxabi_config.h" "" - ) -elseif ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libcxxrt") - setup_abi_lib("-DLIBCXXRT" - "cxxrt" "cxxabi.h;unwind.h;unwind-arm.h;unwind-itanium.h" "" - ) -elseif (NOT "${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "none") - message(FATAL_ERROR - "Currently libstdc++, libsupc++, libcxxabi, libcxxrt and none are " - "supported for c++ abi." - ) -endif () diff --git a/libcxx/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake b/libcxx/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake deleted file mode 100644 index a0669365b..000000000 --- a/libcxx/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake +++ /dev/null @@ -1,18 +0,0 @@ -# MACRO_ENSURE_OUT_OF_SOURCE_BUILD() - -macro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD _errorMessage ) - -string( COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" _insource ) -if( _insource ) - message( SEND_ERROR "${_errorMessage}" ) - message( FATAL_ERROR - "In-source builds are not allowed. - CMake would overwrite the makefiles distributed with Compiler-RT. - Please create a directory and run cmake from there, passing the path - to this source directory as the last argument. - This process created the file `CMakeCache.txt' and the directory `CMakeFiles'. - Please delete them." - ) -endif( _insource ) - -endmacro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD ) diff --git a/libcxx/cmake/config-ix.cmake b/libcxx/cmake/config-ix.cmake deleted file mode 100644 index 428d737c7..000000000 --- a/libcxx/cmake/config-ix.cmake +++ /dev/null @@ -1,35 +0,0 @@ -include(CheckLibraryExists) -include(CheckCXXCompilerFlag) - -# Check compiler flags -check_cxx_compiler_flag(-std=c++11 LIBCXX_HAS_STDCXX11_FLAG) -check_cxx_compiler_flag(-std=c++1y LIBCXX_HAS_STDCXX1Y_FLAG) -check_cxx_compiler_flag(-fPIC LIBCXX_HAS_FPIC_FLAG) -check_cxx_compiler_flag(-fno-omit-frame-pointer LIBCXX_HAS_FNO_OMIT_FRAME_POINTER_FLAG) -check_cxx_compiler_flag(-nodefaultlibs LIBCXX_HAS_NODEFAULTLIBS_FLAG) -check_cxx_compiler_flag(-nostdinc++ LIBCXX_HAS_NOSTDINCXX_FLAG) -check_cxx_compiler_flag(-Wall LIBCXX_HAS_WALL_FLAG) -check_cxx_compiler_flag(-W LIBCXX_HAS_W_FLAG) -check_cxx_compiler_flag(-Wno-unused-parameter LIBCXX_HAS_WNO_UNUSED_PARAMETER_FLAG) -check_cxx_compiler_flag(-Wwrite-strings LIBCXX_HAS_WWRITE_STRINGS_FLAG) -check_cxx_compiler_flag(-Wno-long-long LIBCXX_HAS_WNO_LONG_LONG_FLAG) -check_cxx_compiler_flag(-pedantic LIBCXX_HAS_PEDANTIC_FLAG) -check_cxx_compiler_flag(-Werror LIBCXX_HAS_WERROR_FLAG) -check_cxx_compiler_flag(-Wno-error LIBCXX_HAS_WNO_ERROR_FLAG) -check_cxx_compiler_flag(-fno-exceptions LIBCXX_HAS_FNO_EXCEPTIONS_FLAG) -check_cxx_compiler_flag(-fno-rtti LIBCXX_HAS_FNO_RTTI_FLAG) -check_cxx_compiler_flag(-gline-tables-only LIBCXX_HAS_GLINE_TABLES_ONLY_FLAG) -check_cxx_compiler_flag(/WX LIBCXX_HAS_WX_FLAG) -check_cxx_compiler_flag(/WX- LIBCXX_HAS_NO_WX_FLAG) -check_cxx_compiler_flag(/EHsc LIBCXX_HAS_EHSC_FLAG) -check_cxx_compiler_flag(/EHs- LIBCXX_HAS_NO_EHS_FLAG) -check_cxx_compiler_flag(/EHa- LIBCXX_HAS_NO_EHA_FLAG) -check_cxx_compiler_flag(/GR- LIBCXX_HAS_NO_GR_FLAG) - -# Check libraries -check_library_exists(pthread pthread_create "" LIBCXX_HAS_PTHREAD_LIB) -check_library_exists(c printf "" LIBCXX_HAS_C_LIB) -check_library_exists(m ccos "" LIBCXX_HAS_M_LIB) -check_library_exists(rt clock_gettime "" LIBCXX_HAS_RT_LIB) -check_library_exists(gcc_s __gcc_personality_v0 "" LIBCXX_HAS_GCC_S_LIB) - diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt deleted file mode 100644 index 95206bfee..000000000 --- a/libcxx/include/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -if (NOT LIBCXX_INSTALL_SUPPORT_HEADERS) - set(LIBCXX_SUPPORT_HEADER_PATTERN PATTERN "support" EXCLUDE) -endif() -set(LIBCXX_HEADER_PATTERN - PATTERN "*" - PATTERN "CMakeLists.txt" EXCLUDE - PATTERN ".svn" EXCLUDE - ${LIBCXX_SUPPORT_HEADER_PATTERN} - ) - -file(COPY . - DESTINATION "${CMAKE_BINARY_DIR}/include/c++/v1" - FILES_MATCHING - ${LIBCXX_HEADER_PATTERN} - ) - -if (LIBCXX_INSTALL_HEADERS) - install(DIRECTORY . - DESTINATION include/c++/v1 - FILES_MATCHING - ${LIBCXX_HEADER_PATTERN} - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ - ) -endif() diff --git a/libcxx/include/__bit_reference b/libcxx/include/__bit_reference deleted file mode 100644 index 5659ed068..000000000 --- a/libcxx/include/__bit_reference +++ /dev/null @@ -1,1286 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___BIT_REFERENCE -#define _LIBCPP___BIT_REFERENCE - -#include <__config> -#include - -#include <__undef_min_max> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template class __bit_iterator; -template class __bit_const_reference; - -template -struct __has_storage_type -{ - static const bool value = false; -}; - -template ::value> -class __bit_reference -{ - typedef typename _Cp::__storage_type __storage_type; - typedef typename _Cp::__storage_pointer __storage_pointer; - - __storage_pointer __seg_; - __storage_type __mask_; - -#if defined(__clang__) || defined(__IBMCPP__) || defined(_LIBCPP_MSVC) - friend typename _Cp::__self; -#else - friend class _Cp::__self; -#endif - friend class __bit_const_reference<_Cp>; - friend class __bit_iterator<_Cp, false>; -public: - _LIBCPP_INLINE_VISIBILITY operator bool() const _NOEXCEPT - {return static_cast(*__seg_ & __mask_);} - _LIBCPP_INLINE_VISIBILITY bool operator ~() const _NOEXCEPT - {return !static_cast(*this);} - - _LIBCPP_INLINE_VISIBILITY - __bit_reference& operator=(bool __x) _NOEXCEPT - { - if (__x) - *__seg_ |= __mask_; - else - *__seg_ &= ~__mask_; - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - __bit_reference& operator=(const __bit_reference& __x) _NOEXCEPT - {return operator=(static_cast(__x));} - - _LIBCPP_INLINE_VISIBILITY void flip() _NOEXCEPT {*__seg_ ^= __mask_;} - _LIBCPP_INLINE_VISIBILITY __bit_iterator<_Cp, false> operator&() const _NOEXCEPT - {return __bit_iterator<_Cp, false>(__seg_, static_cast(__ctz(__mask_)));} -private: - _LIBCPP_INLINE_VISIBILITY - __bit_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT - : __seg_(__s), __mask_(__m) {} -}; - -template -class __bit_reference<_Cp, false> -{ -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(__bit_reference<_Cp> __x, __bit_reference<_Cp> __y) _NOEXCEPT -{ - bool __t = __x; - __x = __y; - __y = __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(__bit_reference<_Cp> __x, __bit_reference<_Dp> __y) _NOEXCEPT -{ - bool __t = __x; - __x = __y; - __y = __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(__bit_reference<_Cp> __x, bool& __y) _NOEXCEPT -{ - bool __t = __x; - __x = __y; - __y = __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(bool& __x, __bit_reference<_Cp> __y) _NOEXCEPT -{ - bool __t = __x; - __x = __y; - __y = __t; -} - -template -class __bit_const_reference -{ - typedef typename _Cp::__storage_type __storage_type; - typedef typename _Cp::__const_storage_pointer __storage_pointer; - - __storage_pointer __seg_; - __storage_type __mask_; - -#if defined(__clang__) || defined(__IBMCPP__) || defined(_LIBCPP_MSVC) - friend typename _Cp::__self; -#else - friend class _Cp::__self; -#endif - friend class __bit_iterator<_Cp, true>; -public: - _LIBCPP_INLINE_VISIBILITY - __bit_const_reference(const __bit_reference<_Cp>& __x) _NOEXCEPT - : __seg_(__x.__seg_), __mask_(__x.__mask_) {} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR operator bool() const _NOEXCEPT - {return static_cast(*__seg_ & __mask_);} - - _LIBCPP_INLINE_VISIBILITY __bit_iterator<_Cp, true> operator&() const _NOEXCEPT - {return __bit_iterator<_Cp, true>(__seg_, static_cast(__ctz(__mask_)));} -private: - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR - __bit_const_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT - : __seg_(__s), __mask_(__m) {} - - __bit_const_reference& operator=(const __bit_const_reference& __x); -}; - -// find - -template -__bit_iterator<_Cp, _IsConst> -__find_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, _IsConst> _It; - typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b = *__first.__seg_ & __m; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__ctz(__b))); - if (__n == __dn) - return __first + __n; - __n -= __dn; - ++__first.__seg_; - } - // do middle whole words - for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) - if (*__first.__seg_) - return _It(__first.__seg_, static_cast(_VSTD::__ctz(*__first.__seg_))); - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = *__first.__seg_ & __m; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__ctz(__b))); - } - return _It(__first.__seg_, static_cast(__n)); -} - -template -__bit_iterator<_Cp, _IsConst> -__find_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, _IsConst> _It; - typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b = ~*__first.__seg_ & __m; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__ctz(__b))); - if (__n == __dn) - return __first + __n; - __n -= __dn; - ++__first.__seg_; - } - // do middle whole words - for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) - { - __storage_type __b = ~*__first.__seg_; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__ctz(__b))); - } - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = ~*__first.__seg_ & __m; - if (__b) - return _It(__first.__seg_, static_cast(_VSTD::__ctz(__b))); - } - return _It(__first.__seg_, static_cast(__n)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__bit_iterator<_Cp, _IsConst> -find(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value_) -{ - if (static_cast(__value_)) - return __find_bool_true(__first, static_cast(__last - __first)); - return __find_bool_false(__first, static_cast(__last - __first)); -} - -// count - -template -typename __bit_iterator<_Cp, _IsConst>::difference_type -__count_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, _IsConst> _It; - typedef typename _It::__storage_type __storage_type; - typedef typename _It::difference_type difference_type; - static const unsigned __bits_per_word = _It::__bits_per_word; - difference_type __r = 0; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __r = _VSTD::__pop_count(*__first.__seg_ & __m); - __n -= __dn; - ++__first.__seg_; - } - // do middle whole words - for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) - __r += _VSTD::__pop_count(*__first.__seg_); - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __r += _VSTD::__pop_count(*__first.__seg_ & __m); - } - return __r; -} - -template -typename __bit_iterator<_Cp, _IsConst>::difference_type -__count_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, _IsConst> _It; - typedef typename _It::__storage_type __storage_type; - typedef typename _It::difference_type difference_type; - static const unsigned __bits_per_word = _It::__bits_per_word; - difference_type __r = 0; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __r = _VSTD::__pop_count(~*__first.__seg_ & __m); - __n -= __dn; - ++__first.__seg_; - } - // do middle whole words - for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) - __r += _VSTD::__pop_count(~*__first.__seg_); - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __r += _VSTD::__pop_count(~*__first.__seg_ & __m); - } - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __bit_iterator<_Cp, _IsConst>::difference_type -count(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value_) -{ - if (static_cast(__value_)) - return __count_bool_true(__first, static_cast(__last - __first)); - return __count_bool_false(__first, static_cast(__last - __first)); -} - -// fill_n - -template -void -__fill_n_false(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, false> _It; - typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - *__first.__seg_ &= ~__m; - __n -= __dn; - ++__first.__seg_; - } - // do middle whole words - __storage_type __nw = __n / __bits_per_word; - _VSTD::memset(_VSTD::__to_raw_pointer(__first.__seg_), 0, __nw * sizeof(__storage_type)); - __n -= __nw * __bits_per_word; - // do last partial word - if (__n > 0) - { - __first.__seg_ += __nw; - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - *__first.__seg_ &= ~__m; - } -} - -template -void -__fill_n_true(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) -{ - typedef __bit_iterator<_Cp, false> _It; - typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; - // do first partial word - if (__first.__ctz_ != 0) - { - __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); - __storage_type __dn = _VSTD::min(__clz_f, __n); - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - *__first.__seg_ |= __m; - __n -= __dn; - ++__first.__seg_; - } - // do middle whole words - __storage_type __nw = __n / __bits_per_word; - _VSTD::memset(_VSTD::__to_raw_pointer(__first.__seg_), -1, __nw * sizeof(__storage_type)); - __n -= __nw * __bits_per_word; - // do last partial word - if (__n > 0) - { - __first.__seg_ += __nw; - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - *__first.__seg_ |= __m; - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -fill_n(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n, bool __value_) -{ - if (__n > 0) - { - if (__value_) - __fill_n_true(__first, __n); - else - __fill_n_false(__first, __n); - } -} - -// fill - -template -inline _LIBCPP_INLINE_VISIBILITY -void -fill(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __last, bool __value_) -{ - _VSTD::fill_n(__first, static_cast(__last - __first), __value_); -} - -// copy - -template -__bit_iterator<_Cp, false> -__copy_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, - __bit_iterator<_Cp, false> __result) -{ - typedef __bit_iterator<_Cp, _IsConst> _In; - typedef typename _In::difference_type difference_type; - typedef typename _In::__storage_type __storage_type; - static const unsigned __bits_per_word = _In::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__first.__ctz_ != 0) - { - unsigned __clz = __bits_per_word - __first.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); - __storage_type __b = *__first.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b; - __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); - ++__first.__seg_; - // __first.__ctz_ = 0; - } - // __first.__ctz_ == 0; - // do middle words - __storage_type __nw = __n / __bits_per_word; - _VSTD::memmove(_VSTD::__to_raw_pointer(__result.__seg_), - _VSTD::__to_raw_pointer(__first.__seg_), - __nw * sizeof(__storage_type)); - __n -= __nw * __bits_per_word; - __result.__seg_ += __nw; - // do last word - if (__n > 0) - { - __first.__seg_ += __nw; - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = *__first.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b; - __result.__ctz_ = static_cast(__n); - } - } - return __result; -} - -template -__bit_iterator<_Cp, false> -__copy_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, - __bit_iterator<_Cp, false> __result) -{ - typedef __bit_iterator<_Cp, _IsConst> _In; - typedef typename _In::difference_type difference_type; - typedef typename _In::__storage_type __storage_type; - static const unsigned __bits_per_word = _In::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__first.__ctz_ != 0) - { - unsigned __clz_f = __bits_per_word - __first.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz_f), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b = *__first.__seg_ & __m; - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r); - __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); - *__result.__seg_ &= ~__m; - if (__result.__ctz_ > __first.__ctz_) - *__result.__seg_ |= __b << (__result.__ctz_ - __first.__ctz_); - else - *__result.__seg_ |= __b >> (__first.__ctz_ - __result.__ctz_); - __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__ddn + __result.__ctz_) % __bits_per_word); - __dn -= __ddn; - if (__dn > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __dn); - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b >> (__first.__ctz_ + __ddn); - __result.__ctz_ = static_cast(__dn); - } - ++__first.__seg_; - // __first.__ctz_ = 0; - } - // __first.__ctz_ == 0; - // do middle words - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __m = ~__storage_type(0) << __result.__ctz_; - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_) - { - __storage_type __b = *__first.__seg_; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b << __result.__ctz_; - ++__result.__seg_; - *__result.__seg_ &= __m; - *__result.__seg_ |= __b >> __clz_r; - } - // do last word - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = *__first.__seg_ & __m; - __storage_type __dn = _VSTD::min(__n, static_cast(__clz_r)); - __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b << __result.__ctz_; - __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); - __n -= __dn; - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b >> __dn; - __result.__ctz_ = static_cast(__n); - } - } - } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__bit_iterator<_Cp, false> -copy(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) -{ - if (__first.__ctz_ == __result.__ctz_) - return __copy_aligned(__first, __last, __result); - return __copy_unaligned(__first, __last, __result); -} - -// copy_backward - -template -__bit_iterator<_Cp, false> -__copy_backward_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, - __bit_iterator<_Cp, false> __result) -{ - typedef __bit_iterator<_Cp, _IsConst> _In; - typedef typename _In::difference_type difference_type; - typedef typename _In::__storage_type __storage_type; - static const unsigned __bits_per_word = _In::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__last.__ctz_ != 0) - { - difference_type __dn = _VSTD::min(static_cast(__last.__ctz_), __n); - __n -= __dn; - unsigned __clz = __bits_per_word - __last.__ctz_; - __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz); - __storage_type __b = *__last.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b; - __result.__ctz_ = static_cast(((-__dn & (__bits_per_word - 1)) + - __result.__ctz_) % __bits_per_word); - // __last.__ctz_ = 0 - } - // __last.__ctz_ == 0 || __n == 0 - // __result.__ctz_ == 0 || __n == 0 - // do middle words - __storage_type __nw = __n / __bits_per_word; - __result.__seg_ -= __nw; - __last.__seg_ -= __nw; - _VSTD::memmove(_VSTD::__to_raw_pointer(__result.__seg_), - _VSTD::__to_raw_pointer(__last.__seg_), - __nw * sizeof(__storage_type)); - __n -= __nw * __bits_per_word; - // do last word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) << (__bits_per_word - __n); - __storage_type __b = *--__last.__seg_ & __m; - *--__result.__seg_ &= ~__m; - *__result.__seg_ |= __b; - __result.__ctz_ = static_cast(-__n & (__bits_per_word - 1)); - } - } - return __result; -} - -template -__bit_iterator<_Cp, false> -__copy_backward_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, - __bit_iterator<_Cp, false> __result) -{ - typedef __bit_iterator<_Cp, _IsConst> _In; - typedef typename _In::difference_type difference_type; - typedef typename _In::__storage_type __storage_type; - static const unsigned __bits_per_word = _In::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__last.__ctz_ != 0) - { - difference_type __dn = _VSTD::min(static_cast(__last.__ctz_), __n); - __n -= __dn; - unsigned __clz_l = __bits_per_word - __last.__ctz_; - __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_l); - __storage_type __b = *__last.__seg_ & __m; - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __ddn = _VSTD::min(__dn, static_cast(__result.__ctz_)); - if (__ddn > 0) - { - __m = (~__storage_type(0) << (__result.__ctz_ - __ddn)) & (~__storage_type(0) >> __clz_r); - *__result.__seg_ &= ~__m; - if (__result.__ctz_ > __last.__ctz_) - *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_); - else - *__result.__seg_ |= __b >> (__last.__ctz_ - __result.__ctz_); - __result.__ctz_ = static_cast(((-__ddn & (__bits_per_word - 1)) + - __result.__ctz_) % __bits_per_word); - __dn -= __ddn; - } - if (__dn > 0) - { - // __result.__ctz_ == 0 - --__result.__seg_; - __result.__ctz_ = static_cast(-__dn & (__bits_per_word - 1)); - __m = ~__storage_type(0) << __result.__ctz_; - *__result.__seg_ &= ~__m; - __last.__ctz_ -= __dn + __ddn; - *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_); - } - // __last.__ctz_ = 0 - } - // __last.__ctz_ == 0 || __n == 0 - // __result.__ctz_ != 0 || __n == 0 - // do middle words - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __m = ~__storage_type(0) >> __clz_r; - for (; __n >= __bits_per_word; __n -= __bits_per_word) - { - __storage_type __b = *--__last.__seg_; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b >> __clz_r; - *--__result.__seg_ &= __m; - *__result.__seg_ |= __b << __result.__ctz_; - } - // do last word - if (__n > 0) - { - __m = ~__storage_type(0) << (__bits_per_word - __n); - __storage_type __b = *--__last.__seg_ & __m; - __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __dn = _VSTD::min(__n, static_cast(__result.__ctz_)); - __m = (~__storage_type(0) << (__result.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_r); - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b >> (__bits_per_word - __result.__ctz_); - __result.__ctz_ = static_cast(((-__dn & (__bits_per_word - 1)) + - __result.__ctz_) % __bits_per_word); - __n -= __dn; - if (__n > 0) - { - // __result.__ctz_ == 0 - --__result.__seg_; - __result.__ctz_ = static_cast(-__n & (__bits_per_word - 1)); - __m = ~__storage_type(0) << __result.__ctz_; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b << (__result.__ctz_ - (__bits_per_word - __n - __dn)); - } - } - } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__bit_iterator<_Cp, false> -copy_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) -{ - if (__last.__ctz_ == __result.__ctz_) - return __copy_backward_aligned(__first, __last, __result); - return __copy_backward_unaligned(__first, __last, __result); -} - -// move - -template -inline _LIBCPP_INLINE_VISIBILITY -__bit_iterator<_Cp, false> -move(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) -{ - return _VSTD::copy(__first, __last, __result); -} - -// move_backward - -template -inline _LIBCPP_INLINE_VISIBILITY -__bit_iterator<_Cp, false> -move_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) -{ - return _VSTD::copy_backward(__first, __last, __result); -} - -// swap_ranges - -template -__bit_iterator<__C2, false> -__swap_ranges_aligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last, - __bit_iterator<__C2, false> __result) -{ - typedef __bit_iterator<__C1, false> _I1; - typedef typename _I1::difference_type difference_type; - typedef typename _I1::__storage_type __storage_type; - static const unsigned __bits_per_word = _I1::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__first.__ctz_ != 0) - { - unsigned __clz = __bits_per_word - __first.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); - __storage_type __b1 = *__first.__seg_ & __m; - *__first.__seg_ &= ~__m; - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1; - *__first.__seg_ |= __b2; - __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); - ++__first.__seg_; - // __first.__ctz_ = 0; - } - // __first.__ctz_ == 0; - // do middle words - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_, ++__result.__seg_) - swap(*__first.__seg_, *__result.__seg_); - // do last word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b1 = *__first.__seg_ & __m; - *__first.__seg_ &= ~__m; - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1; - *__first.__seg_ |= __b2; - __result.__ctz_ = static_cast(__n); - } - } - return __result; -} - -template -__bit_iterator<__C2, false> -__swap_ranges_unaligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last, - __bit_iterator<__C2, false> __result) -{ - typedef __bit_iterator<__C1, false> _I1; - typedef typename _I1::difference_type difference_type; - typedef typename _I1::__storage_type __storage_type; - static const unsigned __bits_per_word = _I1::__bits_per_word; - difference_type __n = __last - __first; - if (__n > 0) - { - // do first word - if (__first.__ctz_ != 0) - { - unsigned __clz_f = __bits_per_word - __first.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz_f), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b1 = *__first.__seg_ & __m; - *__first.__seg_ &= ~__m; - unsigned __clz_r = __bits_per_word - __result.__ctz_; - __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r); - __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - if (__result.__ctz_ > __first.__ctz_) - { - unsigned __s = __result.__ctz_ - __first.__ctz_; - *__result.__seg_ |= __b1 << __s; - *__first.__seg_ |= __b2 >> __s; - } - else - { - unsigned __s = __first.__ctz_ - __result.__ctz_; - *__result.__seg_ |= __b1 >> __s; - *__first.__seg_ |= __b2 << __s; - } - __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__ddn + __result.__ctz_) % __bits_per_word); - __dn -= __ddn; - if (__dn > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __dn); - __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - unsigned __s = __first.__ctz_ + __ddn; - *__result.__seg_ |= __b1 >> __s; - *__first.__seg_ |= __b2 << __s; - __result.__ctz_ = static_cast(__dn); - } - ++__first.__seg_; - // __first.__ctz_ = 0; - } - // __first.__ctz_ == 0; - // do middle words - __storage_type __m = ~__storage_type(0) << __result.__ctz_; - unsigned __clz_r = __bits_per_word - __result.__ctz_; - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_) - { - __storage_type __b1 = *__first.__seg_; - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1 << __result.__ctz_; - *__first.__seg_ = __b2 >> __result.__ctz_; - ++__result.__seg_; - __b2 = *__result.__seg_ & ~__m; - *__result.__seg_ &= __m; - *__result.__seg_ |= __b1 >> __clz_r; - *__first.__seg_ |= __b2 << __clz_r; - } - // do last word - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b1 = *__first.__seg_ & __m; - *__first.__seg_ &= ~__m; - __storage_type __dn = _VSTD::min<__storage_type>(__n, __clz_r); - __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); - __storage_type __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1 << __result.__ctz_; - *__first.__seg_ |= __b2 >> __result.__ctz_; - __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; - __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); - __n -= __dn; - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - __b2 = *__result.__seg_ & __m; - *__result.__seg_ &= ~__m; - *__result.__seg_ |= __b1 >> __dn; - *__first.__seg_ |= __b2 << __dn; - __result.__ctz_ = static_cast(__n); - } - } - } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__bit_iterator<__C2, false> -swap_ranges(__bit_iterator<__C1, false> __first1, __bit_iterator<__C1, false> __last1, - __bit_iterator<__C2, false> __first2) -{ - if (__first1.__ctz_ == __first2.__ctz_) - return __swap_ranges_aligned(__first1, __last1, __first2); - return __swap_ranges_unaligned(__first1, __last1, __first2); -} - -// rotate - -template -struct __bit_array -{ - typedef typename _Cp::difference_type difference_type; - typedef typename _Cp::__storage_type __storage_type; - typedef typename _Cp::__storage_pointer __storage_pointer; - typedef typename _Cp::iterator iterator; - static const unsigned __bits_per_word = _Cp::__bits_per_word; - static const unsigned _Np = 4; - - difference_type __size_; - __storage_type __word_[_Np]; - - _LIBCPP_INLINE_VISIBILITY static difference_type capacity() - {return static_cast(_Np * __bits_per_word);} - _LIBCPP_INLINE_VISIBILITY explicit __bit_array(difference_type __s) : __size_(__s) {} - _LIBCPP_INLINE_VISIBILITY iterator begin() - { - return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]), 0); - } - _LIBCPP_INLINE_VISIBILITY iterator end() - { - return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]) + __size_ / __bits_per_word, - static_cast(__size_ % __bits_per_word)); - } -}; - -template -__bit_iterator<_Cp, false> -rotate(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __middle, __bit_iterator<_Cp, false> __last) -{ - typedef __bit_iterator<_Cp, false> _I1; - typedef typename _I1::difference_type difference_type; - difference_type __d1 = __middle - __first; - difference_type __d2 = __last - __middle; - _I1 __r = __first + __d2; - while (__d1 != 0 && __d2 != 0) - { - if (__d1 <= __d2) - { - if (__d1 <= __bit_array<_Cp>::capacity()) - { - __bit_array<_Cp> __b(__d1); - _VSTD::copy(__first, __middle, __b.begin()); - _VSTD::copy(__b.begin(), __b.end(), _VSTD::copy(__middle, __last, __first)); - break; - } - else - { - __bit_iterator<_Cp, false> __mp = _VSTD::swap_ranges(__first, __middle, __middle); - __first = __middle; - __middle = __mp; - __d2 -= __d1; - } - } - else - { - if (__d2 <= __bit_array<_Cp>::capacity()) - { - __bit_array<_Cp> __b(__d2); - _VSTD::copy(__middle, __last, __b.begin()); - _VSTD::copy_backward(__b.begin(), __b.end(), _VSTD::copy_backward(__first, __middle, __last)); - break; - } - else - { - __bit_iterator<_Cp, false> __mp = __first + __d2; - _VSTD::swap_ranges(__first, __mp, __middle); - __first = __mp; - __d1 -= __d2; - } - } - } - return __r; -} - -// equal - -template -bool -__equal_unaligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, - __bit_iterator<_Cp, _IC2> __first2) -{ - typedef __bit_iterator<_Cp, _IC1> _It; - typedef typename _It::difference_type difference_type; - typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; - difference_type __n = __last1 - __first1; - if (__n > 0) - { - // do first word - if (__first1.__ctz_ != 0) - { - unsigned __clz_f = __bits_per_word - __first1.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz_f), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); - __storage_type __b = *__first1.__seg_ & __m; - unsigned __clz_r = __bits_per_word - __first2.__ctz_; - __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r); - __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); - if (__first2.__ctz_ > __first1.__ctz_) - { - if ((*__first2.__seg_ & __m) != (__b << (__first2.__ctz_ - __first1.__ctz_))) - return false; - } - else - { - if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ - __first2.__ctz_))) - return false; - } - __first2.__seg_ += (__ddn + __first2.__ctz_) / __bits_per_word; - __first2.__ctz_ = static_cast((__ddn + __first2.__ctz_) % __bits_per_word); - __dn -= __ddn; - if (__dn > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __dn); - if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ + __ddn))) - return false; - __first2.__ctz_ = static_cast(__dn); - } - ++__first1.__seg_; - // __first1.__ctz_ = 0; - } - // __first1.__ctz_ == 0; - // do middle words - unsigned __clz_r = __bits_per_word - __first2.__ctz_; - __storage_type __m = ~__storage_type(0) << __first2.__ctz_; - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_) - { - __storage_type __b = *__first1.__seg_; - if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_)) - return false; - ++__first2.__seg_; - if ((*__first2.__seg_ & ~__m) != (__b >> __clz_r)) - return false; - } - // do last word - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = *__first1.__seg_ & __m; - __storage_type __dn = _VSTD::min(__n, static_cast(__clz_r)); - __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); - if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_)) - return false; - __first2.__seg_ += (__dn + __first2.__ctz_) / __bits_per_word; - __first2.__ctz_ = static_cast((__dn + __first2.__ctz_) % __bits_per_word); - __n -= __dn; - if (__n > 0) - { - __m = ~__storage_type(0) >> (__bits_per_word - __n); - if ((*__first2.__seg_ & __m) != (__b >> __dn)) - return false; - } - } - } - return true; -} - -template -bool -__equal_aligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, - __bit_iterator<_Cp, _IC2> __first2) -{ - typedef __bit_iterator<_Cp, _IC1> _It; - typedef typename _It::difference_type difference_type; - typedef typename _It::__storage_type __storage_type; - static const unsigned __bits_per_word = _It::__bits_per_word; - difference_type __n = __last1 - __first1; - if (__n > 0) - { - // do first word - if (__first1.__ctz_ != 0) - { - unsigned __clz = __bits_per_word - __first1.__ctz_; - difference_type __dn = _VSTD::min(static_cast(__clz), __n); - __n -= __dn; - __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); - if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m)) - return false; - ++__first2.__seg_; - ++__first1.__seg_; - // __first1.__ctz_ = 0; - // __first2.__ctz_ = 0; - } - // __first1.__ctz_ == 0; - // __first2.__ctz_ == 0; - // do middle words - for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_, ++__first2.__seg_) - if (*__first2.__seg_ != *__first1.__seg_) - return false; - // do last word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m)) - return false; - } - } - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -equal(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2) -{ - if (__first1.__ctz_ == __first2.__ctz_) - return __equal_aligned(__first1, __last1, __first2); - return __equal_unaligned(__first1, __last1, __first2); -} - -template -class __bit_iterator -{ -public: - typedef typename _Cp::difference_type difference_type; - typedef bool value_type; - typedef __bit_iterator pointer; - typedef typename conditional<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> >::type reference; - typedef random_access_iterator_tag iterator_category; - -private: - typedef typename _Cp::__storage_type __storage_type; - typedef typename conditional<_IsConst, typename _Cp::__const_storage_pointer, - typename _Cp::__storage_pointer>::type __storage_pointer; - static const unsigned __bits_per_word = _Cp::__bits_per_word; - - __storage_pointer __seg_; - unsigned __ctz_; - -public: - _LIBCPP_INLINE_VISIBILITY __bit_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER > 11 - : __seg_(nullptr), __ctz_(0) -#endif - {} - - _LIBCPP_INLINE_VISIBILITY - __bit_iterator(const __bit_iterator<_Cp, false>& __it) _NOEXCEPT - : __seg_(__it.__seg_), __ctz_(__it.__ctz_) {} - - _LIBCPP_INLINE_VISIBILITY reference operator*() const _NOEXCEPT - {return reference(__seg_, __storage_type(1) << __ctz_);} - - _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator++() - { - if (__ctz_ != __bits_per_word-1) - ++__ctz_; - else - { - __ctz_ = 0; - ++__seg_; - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY __bit_iterator operator++(int) - { - __bit_iterator __tmp = *this; - ++(*this); - return __tmp; - } - - _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator--() - { - if (__ctz_ != 0) - --__ctz_; - else - { - __ctz_ = __bits_per_word - 1; - --__seg_; - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY __bit_iterator operator--(int) - { - __bit_iterator __tmp = *this; - --(*this); - return __tmp; - } - - _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator+=(difference_type __n) - { - if (__n >= 0) - __seg_ += (__n + __ctz_) / __bits_per_word; - else - __seg_ += static_cast(__n - __bits_per_word + __ctz_ + 1) - / static_cast(__bits_per_word); - __n &= (__bits_per_word - 1); - __ctz_ = static_cast((__n + __ctz_) % __bits_per_word); - return *this; - } - - _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator-=(difference_type __n) - { - return *this += -__n; - } - - _LIBCPP_INLINE_VISIBILITY __bit_iterator operator+(difference_type __n) const - { - __bit_iterator __t(*this); - __t += __n; - return __t; - } - - _LIBCPP_INLINE_VISIBILITY __bit_iterator operator-(difference_type __n) const - { - __bit_iterator __t(*this); - __t -= __n; - return __t; - } - - _LIBCPP_INLINE_VISIBILITY - friend __bit_iterator operator+(difference_type __n, const __bit_iterator& __it) {return __it + __n;} - - _LIBCPP_INLINE_VISIBILITY - friend difference_type operator-(const __bit_iterator& __x, const __bit_iterator& __y) - {return (__x.__seg_ - __y.__seg_) * __bits_per_word + __x.__ctz_ - __y.__ctz_;} - - _LIBCPP_INLINE_VISIBILITY reference operator[](difference_type __n) const {return *(*this + __n);} - - _LIBCPP_INLINE_VISIBILITY friend bool operator==(const __bit_iterator& __x, const __bit_iterator& __y) - {return __x.__seg_ == __y.__seg_ && __x.__ctz_ == __y.__ctz_;} - - _LIBCPP_INLINE_VISIBILITY friend bool operator!=(const __bit_iterator& __x, const __bit_iterator& __y) - {return !(__x == __y);} - - _LIBCPP_INLINE_VISIBILITY friend bool operator<(const __bit_iterator& __x, const __bit_iterator& __y) - {return __x.__seg_ < __y.__seg_ || (__x.__seg_ == __y.__seg_ && __x.__ctz_ < __y.__ctz_);} - - _LIBCPP_INLINE_VISIBILITY friend bool operator>(const __bit_iterator& __x, const __bit_iterator& __y) - {return __y < __x;} - - _LIBCPP_INLINE_VISIBILITY friend bool operator<=(const __bit_iterator& __x, const __bit_iterator& __y) - {return !(__y < __x);} - - _LIBCPP_INLINE_VISIBILITY friend bool operator>=(const __bit_iterator& __x, const __bit_iterator& __y) - {return !(__x < __y);} - -private: - _LIBCPP_INLINE_VISIBILITY - __bit_iterator(__storage_pointer __s, unsigned __ctz) _NOEXCEPT - : __seg_(__s), __ctz_(__ctz) {} - -#if defined(__clang__) || defined(__IBMCPP__) || defined(_LIBCPP_MSVC) - friend typename _Cp::__self; -#else - friend class _Cp::__self; -#endif - friend class __bit_reference<_Cp>; - friend class __bit_const_reference<_Cp>; - friend class __bit_iterator<_Cp, true>; - template friend struct __bit_array; - template friend void __fill_n_false(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); - template friend void __fill_n_true(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); - template friend __bit_iterator<_Dp, false> __copy_aligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> __copy_unaligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> copy(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> __copy_backward_aligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> __copy_backward_unaligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> copy_backward(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<__C2, false> __swap_ranges_aligned(__bit_iterator<__C1, false>, - __bit_iterator<__C1, false>, - __bit_iterator<__C2, false>); - template friend __bit_iterator<__C2, false> __swap_ranges_unaligned(__bit_iterator<__C1, false>, - __bit_iterator<__C1, false>, - __bit_iterator<__C2, false>); - template friend __bit_iterator<__C2, false> swap_ranges(__bit_iterator<__C1, false>, - __bit_iterator<__C1, false>, - __bit_iterator<__C2, false>); - template friend __bit_iterator<_Dp, false> rotate(__bit_iterator<_Dp, false>, - __bit_iterator<_Dp, false>, - __bit_iterator<_Dp, false>); - template friend bool __equal_aligned(__bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC2>); - template friend bool __equal_unaligned(__bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC2>); - template friend bool equal(__bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC2>); - template friend __bit_iterator<_Dp, _IC> __find_bool_true(__bit_iterator<_Dp, _IC>, - typename _Dp::size_type); - template friend __bit_iterator<_Dp, _IC> __find_bool_false(__bit_iterator<_Dp, _IC>, - typename _Dp::size_type); - template friend typename __bit_iterator<_Dp, _IC>::difference_type - __count_bool_true(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); - template friend typename __bit_iterator<_Dp, _IC>::difference_type - __count_bool_false(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); -}; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___BIT_REFERENCE diff --git a/libcxx/include/__config b/libcxx/include/__config deleted file mode 100644 index 3507c7c30..000000000 --- a/libcxx/include/__config +++ /dev/null @@ -1,754 +0,0 @@ -// -*- C++ -*- -//===--------------------------- __config ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CONFIG -#define _LIBCPP_CONFIG - -#if !defined(_MSC_VER) || defined(__clang__) -#pragma GCC system_header -#endif - -#ifdef __GNUC__ -#define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__) -#endif - -#if !_WIN32 -#include -#endif - -#define _LIBCPP_VERSION 1101 - -#define _LIBCPP_ABI_VERSION 1 - -#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y -#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) - -#define _LIBCPP_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION) - -#ifdef __LITTLE_ENDIAN__ -#if __LITTLE_ENDIAN__ -#define _LIBCPP_LITTLE_ENDIAN 1 -#define _LIBCPP_BIG_ENDIAN 0 -#endif // __LITTLE_ENDIAN__ -#endif // __LITTLE_ENDIAN__ - -#ifdef __BIG_ENDIAN__ -#if __BIG_ENDIAN__ -#define _LIBCPP_LITTLE_ENDIAN 0 -#define _LIBCPP_BIG_ENDIAN 1 -#endif // __BIG_ENDIAN__ -#endif // __BIG_ENDIAN__ - -#ifdef __FreeBSD__ -# include -# if _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 -# else // _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 0 -# define _LIBCPP_BIG_ENDIAN 1 -# endif // _BYTE_ORDER == _LITTLE_ENDIAN -# ifndef __LONG_LONG_SUPPORTED -# define _LIBCPP_HAS_NO_LONG_LONG -# endif // __LONG_LONG_SUPPORTED -#endif // __FreeBSD__ - -#ifdef __NetBSD__ -# include -# if _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 -# else // _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 0 -# define _LIBCPP_BIG_ENDIAN 1 -# endif // _BYTE_ORDER == _LITTLE_ENDIAN -# define _LIBCPP_HAS_QUICK_EXIT -#endif // __NetBSD__ - -#ifdef _WIN32 -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 -// Compiler intrinsics (GCC or MSVC) -# if defined(__clang__) \ - || (defined(_MSC_VER) && _MSC_VER >= 1400) \ - || (defined(__GNUC__) && _GNUC_VER > 403) -# define _LIBCPP_HAS_IS_BASE_OF -# endif -# if defined(_MSC_VER) && !defined(__clang__) -# define _LIBCPP_MSVC // Using Microsoft Visual C++ compiler -# define _LIBCPP_TOSTRING2(x) #x -# define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x) -# define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x)) -# endif -# // If mingw not explicitly detected, assume using MS C runtime only. -# ifndef __MINGW32__ -# define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library -# endif -#endif // _WIN32 - -#ifdef __linux__ -# if defined(__GNUC__) && _GNUC_VER >= 403 -# define _LIBCPP_HAS_IS_BASE_OF -# endif -#endif - -#ifdef __sun__ -# include -# ifdef _LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 -# else -# define _LIBCPP_LITTLE_ENDIAN 0 -# define _LIBCPP_BIG_ENDIAN 1 -# endif -#endif // __sun__ - -#if defined(__CloudABI__) - // Certain architectures provide arc4random(). Prefer using - // arc4random() over /dev/{u,}random to make it possible to obtain - // random data even when using sandboxing mechanisms such as chroots, - // Capsicum, etc. -# define _LIBCPP_USING_ARC4_RANDOM -#elif defined(__native_client__) - // NaCl's sandbox (which PNaCl also runs in) doesn't allow filesystem access, - // including accesses to the special files under /dev. C++11's - // std::random_device is instead exposed through a NaCl syscall. -# define _LIBCPP_USING_NACL_RANDOM -#elif defined(_WIN32) -# define _LIBCPP_USING_WIN32_RANDOM -#else -# define _LIBCPP_USING_DEV_RANDOM -#endif - -#if !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) -# include -# if __BYTE_ORDER == __LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 1 -# define _LIBCPP_BIG_ENDIAN 0 -# elif __BYTE_ORDER == __BIG_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN 0 -# define _LIBCPP_BIG_ENDIAN 1 -# else // __BYTE_ORDER == __BIG_ENDIAN -# error unable to determine endian -# endif -#endif // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) - -#ifdef _WIN32 - -// only really useful for a DLL -#ifdef _LIBCPP_DLL // this should be a compiler builtin define ideally... -# ifdef cxx_EXPORTS -# define _LIBCPP_HIDDEN -# define _LIBCPP_FUNC_VIS __declspec(dllexport) -# define _LIBCPP_TYPE_VIS __declspec(dllexport) -# else -# define _LIBCPP_HIDDEN -# define _LIBCPP_FUNC_VIS __declspec(dllimport) -# define _LIBCPP_TYPE_VIS __declspec(dllimport) -# endif -#else -# define _LIBCPP_HIDDEN -# define _LIBCPP_FUNC_VIS -# define _LIBCPP_TYPE_VIS -#endif - -#define _LIBCPP_TYPE_VIS_ONLY -#define _LIBCPP_FUNC_VIS_ONLY - -#ifndef _LIBCPP_INLINE_VISIBILITY -# ifdef _LIBCPP_MSVC -# define _LIBCPP_INLINE_VISIBILITY __forceinline -# else // MinGW GCC and Clang -# define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__)) -# endif -#endif - -#ifndef _LIBCPP_EXCEPTION_ABI -#define _LIBCPP_EXCEPTION_ABI _LIBCPP_TYPE_VIS -#endif - -#ifndef _LIBCPP_ALWAYS_INLINE -# ifdef _LIBCPP_MSVC -# define _LIBCPP_ALWAYS_INLINE __forceinline -# endif -#endif - -#endif // _WIN32 - -#ifndef __has_attribute -#define __has_attribute(__x) 0 -#endif - -#ifndef _LIBCPP_HIDDEN -#define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden"))) -#endif - -#ifndef _LIBCPP_FUNC_VIS -#define _LIBCPP_FUNC_VIS __attribute__ ((__visibility__("default"))) -#endif - -#ifndef _LIBCPP_TYPE_VIS -# if __has_attribute(__type_visibility__) -# define _LIBCPP_TYPE_VIS __attribute__ ((__type_visibility__("default"))) -# else -# define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default"))) -# endif -#endif - -#ifndef _LIBCPP_TYPE_VIS_ONLY -# define _LIBCPP_TYPE_VIS_ONLY _LIBCPP_TYPE_VIS -#endif - -#ifndef _LIBCPP_FUNC_VIS_ONLY -# define _LIBCPP_FUNC_VIS_ONLY _LIBCPP_FUNC_VIS -#endif - -#ifndef _LIBCPP_INLINE_VISIBILITY -#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__)) -#endif - -#ifndef _LIBCPP_EXCEPTION_ABI -#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default"))) -#endif - -#ifndef _LIBCPP_ALWAYS_INLINE -#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__visibility__("hidden"), __always_inline__)) -#endif - -#if defined(__clang__) - -#if defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) && \ - !defined(__arm__) -#define _LIBCPP_ALTERNATE_STRING_LAYOUT -#endif - -#if __has_feature(cxx_alignas) -# define _ALIGNAS_TYPE(x) alignas(x) -# define _ALIGNAS(x) alignas(x) -#else -# define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) -# define _ALIGNAS(x) __attribute__((__aligned__(x))) -#endif - -#if !__has_feature(cxx_alias_templates) -#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES -#endif - -#if __cplusplus < 201103L -typedef __char16_t char16_t; -typedef __char32_t char32_t; -#endif - -#if !(__has_feature(cxx_exceptions)) -#define _LIBCPP_NO_EXCEPTIONS -#endif - -#if !(__has_feature(cxx_rtti)) -#define _LIBCPP_NO_RTTI -#endif - -#if !(__has_feature(cxx_strong_enums)) -#define _LIBCPP_HAS_NO_STRONG_ENUMS -#endif - -#if !(__has_feature(cxx_decltype)) -#define _LIBCPP_HAS_NO_DECLTYPE -#endif - -#if __has_feature(cxx_attributes) -# define _LIBCPP_NORETURN [[noreturn]] -#else -# define _LIBCPP_NORETURN __attribute__ ((noreturn)) -#endif - -#define _LIBCPP_UNUSED __attribute__((__unused__)) - -#if !(__has_feature(cxx_defaulted_functions)) -#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS -#endif // !(__has_feature(cxx_defaulted_functions)) - -#if !(__has_feature(cxx_deleted_functions)) -#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS -#endif // !(__has_feature(cxx_deleted_functions)) - -#if !(__has_feature(cxx_lambdas)) -#define _LIBCPP_HAS_NO_LAMBDAS -#endif - -#if !(__has_feature(cxx_nullptr)) -#define _LIBCPP_HAS_NO_NULLPTR -#endif - -#if !(__has_feature(cxx_rvalue_references)) -#define _LIBCPP_HAS_NO_RVALUE_REFERENCES -#endif - -#if !(__has_feature(cxx_static_assert)) -#define _LIBCPP_HAS_NO_STATIC_ASSERT -#endif - -#if !(__has_feature(cxx_auto_type)) -#define _LIBCPP_HAS_NO_AUTO_TYPE -#endif - -#if !(__has_feature(cxx_access_control_sfinae)) || !__has_feature(cxx_trailing_return) -#define _LIBCPP_HAS_NO_ADVANCED_SFINAE -#endif - -#if !(__has_feature(cxx_variadic_templates)) -#define _LIBCPP_HAS_NO_VARIADICS -#endif - -#if !(__has_feature(cxx_trailing_return)) -#define _LIBCPP_HAS_NO_TRAILING_RETURN -#endif - -#if !(__has_feature(cxx_generalized_initializers)) -#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS -#endif - -#if __has_feature(is_base_of) -# define _LIBCPP_HAS_IS_BASE_OF -#endif - -// Objective-C++ features (opt-in) -#if __has_feature(objc_arc) -#define _LIBCPP_HAS_OBJC_ARC -#endif - -#if __has_feature(objc_arc_weak) -#define _LIBCPP_HAS_OBJC_ARC_WEAK -#define _LIBCPP_HAS_NO_STRONG_ENUMS -#endif - -#if !(__has_feature(cxx_constexpr)) -#define _LIBCPP_HAS_NO_CONSTEXPR -#endif - -#if !(__has_feature(cxx_relaxed_constexpr)) -#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR -#endif - -#if !(__has_feature(cxx_variable_templates)) -#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES -#endif - -#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L -#if defined(__FreeBSD__) -#define _LIBCPP_HAS_QUICK_EXIT -#define _LIBCPP_HAS_C11_FEATURES -#elif defined(__ANDROID__) -#define _LIBCPP_HAS_QUICK_EXIT -#elif defined(__linux__) && !defined(DARLING) -#include -#if __GLIBC_PREREQ(2, 15) -#define _LIBCPP_HAS_QUICK_EXIT -#endif -#if __GLIBC_PREREQ(2, 17) -#define _LIBCPP_HAS_C11_FEATURES -#endif -#endif -#endif - -#if (__has_feature(cxx_noexcept)) -# define _NOEXCEPT noexcept -# define _NOEXCEPT_(x) noexcept(x) -# define _NOEXCEPT_OR_FALSE(x) noexcept(x) -#else -# define _NOEXCEPT throw() -# define _NOEXCEPT_(x) -# define _NOEXCEPT_OR_FALSE(x) false -#endif - -#if __has_feature(underlying_type) -# define _LIBCPP_UNDERLYING_TYPE(T) __underlying_type(T) -#endif - -#if __has_feature(is_literal) -# define _LIBCPP_IS_LITERAL(T) __is_literal(T) -#endif - -// Inline namespaces are available in Clang regardless of C++ dialect. -#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE { -#define _LIBCPP_END_NAMESPACE_STD } } -#define _VSTD std::_LIBCPP_NAMESPACE - -namespace std { - inline namespace _LIBCPP_NAMESPACE { - } -} - -#if !defined(_LIBCPP_HAS_NO_ASAN) && !__has_feature(address_sanitizer) -#define _LIBCPP_HAS_NO_ASAN -#endif - -#elif defined(__GNUC__) - -#define _ALIGNAS(x) __attribute__((__aligned__(x))) -#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) - -#define _LIBCPP_NORETURN __attribute__((noreturn)) - -#define _LIBCPP_UNUSED __attribute__((__unused__)) - -#if _GNUC_VER >= 407 -#define _LIBCPP_UNDERLYING_TYPE(T) __underlying_type(T) -#define _LIBCPP_IS_LITERAL(T) __is_literal_type(T) -#endif - -#if !__EXCEPTIONS -#define _LIBCPP_NO_EXCEPTIONS -#endif - -#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES - -// constexpr was added to GCC in 4.6. -#if _GNUC_VER < 406 -#define _LIBCPP_HAS_NO_CONSTEXPR -// Can only use constexpr in c++11 mode. -#elif !defined(__GXX_EXPERIMENTAL_CXX0X__) && __cplusplus < 201103L -#define _LIBCPP_HAS_NO_CONSTEXPR -#endif - -// No version of GCC supports relaxed constexpr rules -#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR -// GCC 5 will support variable templates -#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES - -#define _NOEXCEPT throw() -#define _NOEXCEPT_(x) -#define _NOEXCEPT_OR_FALSE(x) false - -#ifndef __GXX_EXPERIMENTAL_CXX0X__ - -#define _LIBCPP_HAS_NO_ADVANCED_SFINAE -#define _LIBCPP_HAS_NO_DECLTYPE -#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS -#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS -#define _LIBCPP_HAS_NO_NULLPTR -#define _LIBCPP_HAS_NO_STATIC_ASSERT -#define _LIBCPP_HAS_NO_UNICODE_CHARS -#define _LIBCPP_HAS_NO_VARIADICS -#define _LIBCPP_HAS_NO_RVALUE_REFERENCES -#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS -#define _LIBCPP_HAS_NO_STRONG_ENUMS - -#else // __GXX_EXPERIMENTAL_CXX0X__ - -#define _LIBCPP_HAS_NO_TRAILING_RETURN -#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS - -#if _GNUC_VER < 403 -#define _LIBCPP_HAS_NO_RVALUE_REFERENCES -#endif - -#if _GNUC_VER < 403 -#define _LIBCPP_HAS_NO_STATIC_ASSERT -#endif - -#if _GNUC_VER < 404 -#define _LIBCPP_HAS_NO_DECLTYPE -#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS -#define _LIBCPP_HAS_NO_UNICODE_CHARS -#define _LIBCPP_HAS_NO_VARIADICS -#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS -#endif // _GNUC_VER < 404 - -#if _GNUC_VER < 406 -#define _LIBCPP_HAS_NO_NULLPTR -#endif - -#if _GNUC_VER < 407 -#define _LIBCPP_HAS_NO_ADVANCED_SFINAE -#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS -#endif - -#endif // __GXX_EXPERIMENTAL_CXX0X__ - -#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { namespace _LIBCPP_NAMESPACE { -#define _LIBCPP_END_NAMESPACE_STD } } -#define _VSTD std::_LIBCPP_NAMESPACE - -namespace std { -namespace _LIBCPP_NAMESPACE { -} -using namespace _LIBCPP_NAMESPACE __attribute__((__strong__)); -} - -#if !defined(_LIBCPP_HAS_NO_ASAN) && !defined(__SANITIZE_ADDRESS__) -#define _LIBCPP_HAS_NO_ASAN -#endif - -#elif defined(_LIBCPP_MSVC) - -#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES -#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -#define _LIBCPP_HAS_NO_CONSTEXPR -#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR -#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES -#define _LIBCPP_HAS_NO_UNICODE_CHARS -#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS -#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS -#define __alignof__ __alignof -#define _LIBCPP_NORETURN __declspec(noreturn) -#define _LIBCPP_UNUSED -#define _ALIGNAS(x) __declspec(align(x)) -#define _LIBCPP_HAS_NO_VARIADICS - -#define _NOEXCEPT throw () -#define _NOEXCEPT_(x) -#define _NOEXCEPT_OR_FALSE(x) false - -#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { -#define _LIBCPP_END_NAMESPACE_STD } -#define _VSTD std - -# define _LIBCPP_WEAK -namespace std { -} - -#define _LIBCPP_HAS_NO_ASAN - -#elif defined(__IBMCPP__) - -#define _ALIGNAS(x) __attribute__((__aligned__(x))) -#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) -#define _ATTRIBUTE(x) __attribute__((x)) -#define _LIBCPP_NORETURN __attribute__((noreturn)) -#define _LIBCPP_UNUSED - -#define _NOEXCEPT throw() -#define _NOEXCEPT_(x) -#define _NOEXCEPT_OR_FALSE(x) false - -#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES -#define _LIBCPP_HAS_NO_ADVANCED_SFINAE -#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS -#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS -#define _LIBCPP_HAS_NO_NULLPTR -#define _LIBCPP_HAS_NO_UNICODE_CHARS -#define _LIBCPP_HAS_IS_BASE_OF -#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES - -#if defined(_AIX) -#define __MULTILOCALE_API -#endif - -#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE { -#define _LIBCPP_END_NAMESPACE_STD } } -#define _VSTD std::_LIBCPP_NAMESPACE - -namespace std { - inline namespace _LIBCPP_NAMESPACE { - } -} - -#define _LIBCPP_HAS_NO_ASAN - -#endif // __clang__ || __GNUC__ || _MSC_VER || __IBMCPP__ - -#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS -typedef unsigned short char16_t; -typedef unsigned int char32_t; -#endif // _LIBCPP_HAS_NO_UNICODE_CHARS - -#ifndef __SIZEOF_INT128__ -#define _LIBCPP_HAS_NO_INT128 -#endif - -#ifdef _LIBCPP_HAS_NO_STATIC_ASSERT - -template struct __static_assert_test; -template <> struct __static_assert_test {}; -template struct __static_assert_check {}; -#define static_assert(__b, __m) \ - typedef __static_assert_check)> \ - _LIBCPP_CONCAT(__t, __LINE__) - -#endif // _LIBCPP_HAS_NO_STATIC_ASSERT - -#ifdef _LIBCPP_HAS_NO_DECLTYPE -#define decltype(x) __typeof__(x) -#endif - -#ifdef _LIBCPP_HAS_NO_CONSTEXPR -#define _LIBCPP_CONSTEXPR -#else -#define _LIBCPP_CONSTEXPR constexpr -#endif - -#ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS -#define _LIBCPP_DEFAULT {} -#else -#define _LIBCPP_DEFAULT = default; -#endif - -#ifdef __GNUC__ -#define _NOALIAS __attribute__((__malloc__)) -#else -#define _NOALIAS -#endif - -#ifndef __has_feature -#define __has_feature(__x) 0 -#endif - -#ifndef __has_builtin -#define __has_builtin(__x) 0 -#endif - -#if __has_feature(cxx_explicit_conversions) || defined(__IBMCPP__) -# define _LIBCPP_EXPLICIT explicit -#else -# define _LIBCPP_EXPLICIT -#endif - -#if !__has_builtin(__builtin_operator_new) || !__has_builtin(__builtin_operator_delete) -# define _LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE -#endif - -#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS -#define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_TYPE_VIS x { enum __lx -#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \ - __lx __v_; \ - _LIBCPP_ALWAYS_INLINE x(__lx __v) : __v_(__v) {} \ - _LIBCPP_ALWAYS_INLINE explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \ - _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} \ - }; -#else // _LIBCPP_HAS_NO_STRONG_ENUMS -#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_TYPE_VIS x -#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) -#endif // _LIBCPP_HAS_NO_STRONG_ENUMS - -#ifdef _LIBCPP_DEBUG -# if _LIBCPP_DEBUG == 0 -# define _LIBCPP_DEBUG_LEVEL 1 -# elif _LIBCPP_DEBUG == 1 -# define _LIBCPP_DEBUG_LEVEL 2 -# else -# error Supported values for _LIBCPP_DEBUG are 0 and 1 -# endif -# define _LIBCPP_EXTERN_TEMPLATE(...) -#endif - -#ifndef _LIBCPP_EXTERN_TEMPLATE -#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__; -#endif - -#ifndef _LIBCPP_EXTERN_TEMPLATE2 -#define _LIBCPP_EXTERN_TEMPLATE2(...) extern template __VA_ARGS__; -#endif - -#if defined(__APPLE__) && defined(__LP64__) && !defined(__x86_64__) -#define _LIBCPP_NONUNIQUE_RTTI_BIT (1ULL << 63) -#endif - -#if defined(__APPLE__) || defined(__FreeBSD__) || defined(_WIN32) || \ - defined(__sun__) || defined(__NetBSD__) || defined(__CloudABI__) -#define _LIBCPP_LOCALE__L_EXTENSIONS 1 -#endif - -#if !defined(_WIN32) && !defined(__ANDROID__) && !defined(_NEWLIB_VERSION) && \ - !defined(__CloudABI__) -#define _LIBCPP_HAS_CATOPEN 1 -#endif - -#ifdef __FreeBSD__ -#define _DECLARE_C99_LDBL_MATH 1 -#endif - -#if defined(__APPLE__) || defined(__FreeBSD__) -#define _LIBCPP_HAS_DEFAULTRUNELOCALE -#endif - -#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun__) -#define _LIBCPP_WCTYPE_IS_MASK -#endif - -#ifndef _LIBCPP_TRIVIAL_PAIR_COPY_CTOR -# define _LIBCPP_TRIVIAL_PAIR_COPY_CTOR 1 -#endif - -#ifndef _LIBCPP_STD_VER -# if __cplusplus <= 201103L -# define _LIBCPP_STD_VER 11 -# elif __cplusplus <= 201402L -# define _LIBCPP_STD_VER 14 -# else -# define _LIBCPP_STD_VER 15 // current year, or date of c++17 ratification -# endif -#endif // _LIBCPP_STD_VER - -#if _LIBCPP_STD_VER > 11 -#define _LIBCPP_DEPRECATED [[deprecated]] -#else -#define _LIBCPP_DEPRECATED -#endif - -#if _LIBCPP_STD_VER <= 11 -#define _LIBCPP_EXPLICIT_AFTER_CXX11 -#define _LIBCPP_DEPRECATED_AFTER_CXX11 -#else -#define _LIBCPP_EXPLICIT_AFTER_CXX11 explicit -#define _LIBCPP_DEPRECATED_AFTER_CXX11 [[deprecated]] -#endif - -#if _LIBCPP_STD_VER > 11 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) -#define _LIBCPP_CONSTEXPR_AFTER_CXX11 constexpr -#else -#define _LIBCPP_CONSTEXPR_AFTER_CXX11 -#endif - -#ifndef _LIBCPP_HAS_NO_ASAN -extern "C" void __sanitizer_annotate_contiguous_container( - const void *, const void *, const void *, const void *); -#endif - -// Try to find out if RTTI is disabled. -// g++ and cl.exe have RTTI on by default and define a macro when it is. -// g++ only defines the macro in 4.3.2 and onwards. -#if !defined(_LIBCPP_NO_RTTI) -# if defined(__GNUG__) && ((__GNUC__ >= 5) || (__GNUC__ == 4 && \ - (__GNUC_MINOR__ >= 3 || __GNUC_PATCHLEVEL__ >= 2))) && !defined(__GXX_RTTI) -# define _LIBCPP_NO_RTTI -# elif (defined(_MSC_VER) && !defined(__clang__)) && !defined(_CPPRTTI) -# define _LIBCPP_NO_RTTI -# endif -#endif - -#ifndef _LIBCPP_WEAK -# define _LIBCPP_WEAK __attribute__((__weak__)) -#endif - -#if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) && !defined(_LIBCPP_HAS_NO_THREADS) -# error _LIBCPP_HAS_NO_MONOTONIC_CLOCK may only be defined when \ - _LIBCPP_HAS_NO_THREADS is defined. -#endif - -// Systems that use capability-based security (FreeBSD with Capsicum, -// Nuxi CloudABI) may only provide local filesystem access (using *at()). -// Functions like open(), rename(), unlink() and stat() should not be -// used, as they attempt to access the global filesystem namespace. -#ifdef __CloudABI__ -#define _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -#endif - -// CloudABI is intended for running networked services. Processes do not -// have standard input and output channels. -#ifdef __CloudABI__ -#define _LIBCPP_HAS_NO_STDIN -#define _LIBCPP_HAS_NO_STDOUT -#endif - -#if defined(__ANDROID__) || defined(__CloudABI__) -#define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE -#endif - -#endif // _LIBCPP_CONFIG diff --git a/libcxx/include/__debug b/libcxx/include/__debug deleted file mode 100644 index a21f9a898..000000000 --- a/libcxx/include/__debug +++ /dev/null @@ -1,222 +0,0 @@ -// -*- C++ -*- -//===--------------------------- __debug ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_DEBUG_H -#define _LIBCPP_DEBUG_H - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#if _LIBCPP_DEBUG_LEVEL >= 1 -# include -# include -# include -# ifndef _LIBCPP_ASSERT -# define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : (_VSTD::fprintf(stderr, "%s\n", m), _VSTD::abort())) -# endif -#endif - -#ifndef _LIBCPP_ASSERT -# define _LIBCPP_ASSERT(x, m) ((void)0) -#endif - -#if _LIBCPP_DEBUG_LEVEL >= 2 - -_LIBCPP_BEGIN_NAMESPACE_STD - -struct _LIBCPP_TYPE_VIS __c_node; - -struct _LIBCPP_TYPE_VIS __i_node -{ - void* __i_; - __i_node* __next_; - __c_node* __c_; - -#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS - __i_node(const __i_node&) = delete; - __i_node& operator=(const __i_node&) = delete; -#else -private: - __i_node(const __i_node&); - __i_node& operator=(const __i_node&); -public: -#endif - _LIBCPP_INLINE_VISIBILITY - __i_node(void* __i, __i_node* __next, __c_node* __c) - : __i_(__i), __next_(__next), __c_(__c) {} - ~__i_node(); -}; - -struct _LIBCPP_TYPE_VIS __c_node -{ - void* __c_; - __c_node* __next_; - __i_node** beg_; - __i_node** end_; - __i_node** cap_; - -#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS - __c_node(const __c_node&) = delete; - __c_node& operator=(const __c_node&) = delete; -#else -private: - __c_node(const __c_node&); - __c_node& operator=(const __c_node&); -public: -#endif - _LIBCPP_INLINE_VISIBILITY - __c_node(void* __c, __c_node* __next) - : __c_(__c), __next_(__next), beg_(nullptr), end_(nullptr), cap_(nullptr) {} - virtual ~__c_node(); - - virtual bool __dereferenceable(const void*) const = 0; - virtual bool __decrementable(const void*) const = 0; - virtual bool __addable(const void*, ptrdiff_t) const = 0; - virtual bool __subscriptable(const void*, ptrdiff_t) const = 0; - - void __add(__i_node* __i); - _LIBCPP_HIDDEN void __remove(__i_node* __i); -}; - -template -struct _C_node - : public __c_node -{ - _C_node(void* __c, __c_node* __n) - : __c_node(__c, __n) {} - - virtual bool __dereferenceable(const void*) const; - virtual bool __decrementable(const void*) const; - virtual bool __addable(const void*, ptrdiff_t) const; - virtual bool __subscriptable(const void*, ptrdiff_t) const; -}; - -template -bool -_C_node<_Cont>::__dereferenceable(const void* __i) const -{ - typedef typename _Cont::const_iterator iterator; - const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__dereferenceable(__j); -} - -template -bool -_C_node<_Cont>::__decrementable(const void* __i) const -{ - typedef typename _Cont::const_iterator iterator; - const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__decrementable(__j); -} - -template -bool -_C_node<_Cont>::__addable(const void* __i, ptrdiff_t __n) const -{ - typedef typename _Cont::const_iterator iterator; - const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__addable(__j, __n); -} - -template -bool -_C_node<_Cont>::__subscriptable(const void* __i, ptrdiff_t __n) const -{ - typedef typename _Cont::const_iterator iterator; - const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__subscriptable(__j, __n); -} - -class _LIBCPP_TYPE_VIS __libcpp_db -{ - __c_node** __cbeg_; - __c_node** __cend_; - size_t __csz_; - __i_node** __ibeg_; - __i_node** __iend_; - size_t __isz_; - - __libcpp_db(); -public: -#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS - __libcpp_db(const __libcpp_db&) = delete; - __libcpp_db& operator=(const __libcpp_db&) = delete; -#else -private: - __libcpp_db(const __libcpp_db&); - __libcpp_db& operator=(const __libcpp_db&); -public: -#endif - ~__libcpp_db(); - - class __db_c_iterator; - class __db_c_const_iterator; - class __db_i_iterator; - class __db_i_const_iterator; - - __db_c_const_iterator __c_end() const; - __db_i_const_iterator __i_end() const; - - template - _LIBCPP_INLINE_VISIBILITY - void __insert_c(_Cont* __c) - { - __c_node* __n = __insert_c(static_cast(__c)); - ::new(__n) _C_node<_Cont>(__n->__c_, __n->__next_); - } - - void __insert_i(void* __i); - __c_node* __insert_c(void* __c); - void __erase_c(void* __c); - - void __insert_ic(void* __i, const void* __c); - void __iterator_copy(void* __i, const void* __i0); - void __erase_i(void* __i); - - void* __find_c_from_i(void* __i) const; - void __invalidate_all(void* __c); - __c_node* __find_c_and_lock(void* __c) const; - __c_node* __find_c(void* __c) const; - void unlock() const; - - void swap(void* __c1, void* __c2); - - - bool __dereferenceable(const void* __i) const; - bool __decrementable(const void* __i) const; - bool __addable(const void* __i, ptrdiff_t __n) const; - bool __subscriptable(const void* __i, ptrdiff_t __n) const; - bool __less_than_comparable(const void* __i, const void* __j) const; -private: - _LIBCPP_HIDDEN - __i_node* __insert_iterator(void* __i); - _LIBCPP_HIDDEN - __i_node* __find_iterator(const void* __i) const; - - friend _LIBCPP_FUNC_VIS __libcpp_db* __get_db(); -}; - -_LIBCPP_FUNC_VIS __libcpp_db* __get_db(); -_LIBCPP_FUNC_VIS const __libcpp_db* __get_const_db(); - - -_LIBCPP_END_NAMESPACE_STD - -#endif - -#endif // _LIBCPP_DEBUG_H - diff --git a/libcxx/include/__functional_03 b/libcxx/include/__functional_03 deleted file mode 100644 index 785a2758c..000000000 --- a/libcxx/include/__functional_03 +++ /dev/null @@ -1,2115 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_FUNCTIONAL_03 -#define _LIBCPP_FUNCTIONAL_03 - -// manual variadic expansion for - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -template -class __mem_fn - : public __weak_result_type<_Tp> -{ -public: - // types - typedef _Tp type; -private: - type __f_; - -public: - _LIBCPP_INLINE_VISIBILITY __mem_fn(type __f) : __f_(__f) {} - - // invoke - - typename __invoke_return::type - operator() () const - { - return __invoke(__f_); - } - - template - typename __invoke_return0::type - operator() (_A0& __a0) const - { - return __invoke(__f_, __a0); - } - - template - typename __invoke_return1::type - operator() (_A0& __a0, _A1& __a1) const - { - return __invoke(__f_, __a0, __a1); - } - - template - typename __invoke_return2::type - operator() (_A0& __a0, _A1& __a1, _A2& __a2) const - { - return __invoke(__f_, __a0, __a1, __a2); - } -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp _Tp::*> -mem_fn(_Rp _Tp::* __pm) -{ - return __mem_fn<_Rp _Tp::*>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)()> -mem_fn(_Rp (_Tp::* __pm)()) -{ - return __mem_fn<_Rp (_Tp::*)()>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0)> -mem_fn(_Rp (_Tp::* __pm)(_A0)) -{ - return __mem_fn<_Rp (_Tp::*)(_A0)>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0, _A1)> -mem_fn(_Rp (_Tp::* __pm)(_A0, _A1)) -{ - return __mem_fn<_Rp (_Tp::*)(_A0, _A1)>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0, _A1, _A2)> -mem_fn(_Rp (_Tp::* __pm)(_A0, _A1, _A2)) -{ - return __mem_fn<_Rp (_Tp::*)(_A0, _A1, _A2)>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)() const> -mem_fn(_Rp (_Tp::* __pm)() const) -{ - return __mem_fn<_Rp (_Tp::*)() const>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0) const> -mem_fn(_Rp (_Tp::* __pm)(_A0) const) -{ - return __mem_fn<_Rp (_Tp::*)(_A0) const>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0, _A1) const> -mem_fn(_Rp (_Tp::* __pm)(_A0, _A1) const) -{ - return __mem_fn<_Rp (_Tp::*)(_A0, _A1) const>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0, _A1, _A2) const> -mem_fn(_Rp (_Tp::* __pm)(_A0, _A1, _A2) const) -{ - return __mem_fn<_Rp (_Tp::*)(_A0, _A1, _A2) const>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)() volatile> -mem_fn(_Rp (_Tp::* __pm)() volatile) -{ - return __mem_fn<_Rp (_Tp::*)() volatile>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0) volatile> -mem_fn(_Rp (_Tp::* __pm)(_A0) volatile) -{ - return __mem_fn<_Rp (_Tp::*)(_A0) volatile>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0, _A1) volatile> -mem_fn(_Rp (_Tp::* __pm)(_A0, _A1) volatile) -{ - return __mem_fn<_Rp (_Tp::*)(_A0, _A1) volatile>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0, _A1, _A2) volatile> -mem_fn(_Rp (_Tp::* __pm)(_A0, _A1, _A2) volatile) -{ - return __mem_fn<_Rp (_Tp::*)(_A0, _A1, _A2) volatile>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)() const volatile> -mem_fn(_Rp (_Tp::* __pm)() const volatile) -{ - return __mem_fn<_Rp (_Tp::*)() const volatile>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0) const volatile> -mem_fn(_Rp (_Tp::* __pm)(_A0) const volatile) -{ - return __mem_fn<_Rp (_Tp::*)(_A0) const volatile>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0, _A1) const volatile> -mem_fn(_Rp (_Tp::* __pm)(_A0, _A1) const volatile) -{ - return __mem_fn<_Rp (_Tp::*)(_A0, _A1) const volatile>(__pm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp (_Tp::*)(_A0, _A1, _A2) const volatile> -mem_fn(_Rp (_Tp::* __pm)(_A0, _A1, _A2) const volatile) -{ - return __mem_fn<_Rp (_Tp::*)(_A0, _A1, _A2) const volatile>(__pm); -} - -// bad_function_call - -class _LIBCPP_EXCEPTION_ABI bad_function_call - : public exception -{ -}; - -template class _LIBCPP_TYPE_VIS_ONLY function; // undefined - -namespace __function -{ - -template -struct __maybe_derive_from_unary_function -{ -}; - -template -struct __maybe_derive_from_unary_function<_Rp(_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __maybe_derive_from_binary_function -{ -}; - -template -struct __maybe_derive_from_binary_function<_Rp(_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template class __base; - -template -class __base<_Rp()> -{ - __base(const __base&); - __base& operator=(const __base&); -public: - __base() {} - virtual ~__base() {} - virtual __base* __clone() const = 0; - virtual void __clone(__base*) const = 0; - virtual void destroy() = 0; - virtual void destroy_deallocate() = 0; - virtual _Rp operator()() = 0; -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const = 0; - virtual const std::type_info& target_type() const = 0; -#endif // _LIBCPP_NO_RTTI -}; - -template -class __base<_Rp(_A0)> -{ - __base(const __base&); - __base& operator=(const __base&); -public: - __base() {} - virtual ~__base() {} - virtual __base* __clone() const = 0; - virtual void __clone(__base*) const = 0; - virtual void destroy() = 0; - virtual void destroy_deallocate() = 0; - virtual _Rp operator()(_A0) = 0; -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const = 0; - virtual const std::type_info& target_type() const = 0; -#endif // _LIBCPP_NO_RTTI -}; - -template -class __base<_Rp(_A0, _A1)> -{ - __base(const __base&); - __base& operator=(const __base&); -public: - __base() {} - virtual ~__base() {} - virtual __base* __clone() const = 0; - virtual void __clone(__base*) const = 0; - virtual void destroy() = 0; - virtual void destroy_deallocate() = 0; - virtual _Rp operator()(_A0, _A1) = 0; -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const = 0; - virtual const std::type_info& target_type() const = 0; -#endif // _LIBCPP_NO_RTTI -}; - -template -class __base<_Rp(_A0, _A1, _A2)> -{ - __base(const __base&); - __base& operator=(const __base&); -public: - __base() {} - virtual ~__base() {} - virtual __base* __clone() const = 0; - virtual void __clone(__base*) const = 0; - virtual void destroy() = 0; - virtual void destroy_deallocate() = 0; - virtual _Rp operator()(_A0, _A1, _A2) = 0; -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const = 0; - virtual const std::type_info& target_type() const = 0; -#endif // _LIBCPP_NO_RTTI -}; - -template class __func; - -template -class __func<_Fp, _Alloc, _Rp()> - : public __base<_Rp()> -{ - __compressed_pair<_Fp, _Alloc> __f_; -public: - explicit __func(_Fp __f) : __f_(_VSTD::move(__f)) {} - explicit __func(_Fp __f, _Alloc __a) : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} - virtual __base<_Rp()>* __clone() const; - virtual void __clone(__base<_Rp()>*) const; - virtual void destroy(); - virtual void destroy_deallocate(); - virtual _Rp operator()(); -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const; - virtual const std::type_info& target_type() const; -#endif // _LIBCPP_NO_RTTI -}; - -template -__base<_Rp()>* -__func<_Fp, _Alloc, _Rp()>::__clone() const -{ - typedef typename _Alloc::template rebind<__func>::other _Ap; - _Ap __a(__f_.second()); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); - return __hold.release(); -} - -template -void -__func<_Fp, _Alloc, _Rp()>::__clone(__base<_Rp()>* __p) const -{ - ::new (__p) __func(__f_.first(), __f_.second()); -} - -template -void -__func<_Fp, _Alloc, _Rp()>::destroy() -{ - __f_.~__compressed_pair<_Fp, _Alloc>(); -} - -template -void -__func<_Fp, _Alloc, _Rp()>::destroy_deallocate() -{ - typedef typename _Alloc::template rebind<__func>::other _Ap; - _Ap __a(__f_.second()); - __f_.~__compressed_pair<_Fp, _Alloc>(); - __a.deallocate(this, 1); -} - -template -_Rp -__func<_Fp, _Alloc, _Rp()>::operator()() -{ - typedef __invoke_void_return_wrapper<_Rp> _Invoker; - return _Invoker::__call(__f_.first()); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const void* -__func<_Fp, _Alloc, _Rp()>::target(const type_info& __ti) const -{ - if (__ti == typeid(_Fp)) - return &__f_.first(); - return (const void*)0; -} - -template -const std::type_info& -__func<_Fp, _Alloc, _Rp()>::target_type() const -{ - return typeid(_Fp); -} - -#endif // _LIBCPP_NO_RTTI - -template -class __func<_Fp, _Alloc, _Rp(_A0)> - : public __base<_Rp(_A0)> -{ - __compressed_pair<_Fp, _Alloc> __f_; -public: - _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f) : __f_(_VSTD::move(__f)) {} - _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f, _Alloc __a) - : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} - virtual __base<_Rp(_A0)>* __clone() const; - virtual void __clone(__base<_Rp(_A0)>*) const; - virtual void destroy(); - virtual void destroy_deallocate(); - virtual _Rp operator()(_A0); -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const; - virtual const std::type_info& target_type() const; -#endif // _LIBCPP_NO_RTTI -}; - -template -__base<_Rp(_A0)>* -__func<_Fp, _Alloc, _Rp(_A0)>::__clone() const -{ - typedef typename _Alloc::template rebind<__func>::other _Ap; - _Ap __a(__f_.second()); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); - return __hold.release(); -} - -template -void -__func<_Fp, _Alloc, _Rp(_A0)>::__clone(__base<_Rp(_A0)>* __p) const -{ - ::new (__p) __func(__f_.first(), __f_.second()); -} - -template -void -__func<_Fp, _Alloc, _Rp(_A0)>::destroy() -{ - __f_.~__compressed_pair<_Fp, _Alloc>(); -} - -template -void -__func<_Fp, _Alloc, _Rp(_A0)>::destroy_deallocate() -{ - typedef typename _Alloc::template rebind<__func>::other _Ap; - _Ap __a(__f_.second()); - __f_.~__compressed_pair<_Fp, _Alloc>(); - __a.deallocate(this, 1); -} - -template -_Rp -__func<_Fp, _Alloc, _Rp(_A0)>::operator()(_A0 __a0) -{ - typedef __invoke_void_return_wrapper<_Rp> _Invoker; - return _Invoker::__call(__f_.first(), __a0); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const void* -__func<_Fp, _Alloc, _Rp(_A0)>::target(const type_info& __ti) const -{ - if (__ti == typeid(_Fp)) - return &__f_.first(); - return (const void*)0; -} - -template -const std::type_info& -__func<_Fp, _Alloc, _Rp(_A0)>::target_type() const -{ - return typeid(_Fp); -} - -#endif // _LIBCPP_NO_RTTI - -template -class __func<_Fp, _Alloc, _Rp(_A0, _A1)> - : public __base<_Rp(_A0, _A1)> -{ - __compressed_pair<_Fp, _Alloc> __f_; -public: - _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f) : __f_(_VSTD::move(__f)) {} - _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f, _Alloc __a) - : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} - virtual __base<_Rp(_A0, _A1)>* __clone() const; - virtual void __clone(__base<_Rp(_A0, _A1)>*) const; - virtual void destroy(); - virtual void destroy_deallocate(); - virtual _Rp operator()(_A0, _A1); -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const; - virtual const std::type_info& target_type() const; -#endif // _LIBCPP_NO_RTTI -}; - -template -__base<_Rp(_A0, _A1)>* -__func<_Fp, _Alloc, _Rp(_A0, _A1)>::__clone() const -{ - typedef typename _Alloc::template rebind<__func>::other _Ap; - _Ap __a(__f_.second()); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); - return __hold.release(); -} - -template -void -__func<_Fp, _Alloc, _Rp(_A0, _A1)>::__clone(__base<_Rp(_A0, _A1)>* __p) const -{ - ::new (__p) __func(__f_.first(), __f_.second()); -} - -template -void -__func<_Fp, _Alloc, _Rp(_A0, _A1)>::destroy() -{ - __f_.~__compressed_pair<_Fp, _Alloc>(); -} - -template -void -__func<_Fp, _Alloc, _Rp(_A0, _A1)>::destroy_deallocate() -{ - typedef typename _Alloc::template rebind<__func>::other _Ap; - _Ap __a(__f_.second()); - __f_.~__compressed_pair<_Fp, _Alloc>(); - __a.deallocate(this, 1); -} - -template -_Rp -__func<_Fp, _Alloc, _Rp(_A0, _A1)>::operator()(_A0 __a0, _A1 __a1) -{ - typedef __invoke_void_return_wrapper<_Rp> _Invoker; - return _Invoker::__call(__f_.first(), __a0, __a1); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const void* -__func<_Fp, _Alloc, _Rp(_A0, _A1)>::target(const type_info& __ti) const -{ - if (__ti == typeid(_Fp)) - return &__f_.first(); - return (const void*)0; -} - -template -const std::type_info& -__func<_Fp, _Alloc, _Rp(_A0, _A1)>::target_type() const -{ - return typeid(_Fp); -} - -#endif // _LIBCPP_NO_RTTI - -template -class __func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)> - : public __base<_Rp(_A0, _A1, _A2)> -{ - __compressed_pair<_Fp, _Alloc> __f_; -public: - _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f) : __f_(_VSTD::move(__f)) {} - _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f, _Alloc __a) - : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} - virtual __base<_Rp(_A0, _A1, _A2)>* __clone() const; - virtual void __clone(__base<_Rp(_A0, _A1, _A2)>*) const; - virtual void destroy(); - virtual void destroy_deallocate(); - virtual _Rp operator()(_A0, _A1, _A2); -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const; - virtual const std::type_info& target_type() const; -#endif // _LIBCPP_NO_RTTI -}; - -template -__base<_Rp(_A0, _A1, _A2)>* -__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::__clone() const -{ - typedef typename _Alloc::template rebind<__func>::other _Ap; - _Ap __a(__f_.second()); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); - return __hold.release(); -} - -template -void -__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::__clone(__base<_Rp(_A0, _A1, _A2)>* __p) const -{ - ::new (__p) __func(__f_.first(), __f_.second()); -} - -template -void -__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::destroy() -{ - __f_.~__compressed_pair<_Fp, _Alloc>(); -} - -template -void -__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::destroy_deallocate() -{ - typedef typename _Alloc::template rebind<__func>::other _Ap; - _Ap __a(__f_.second()); - __f_.~__compressed_pair<_Fp, _Alloc>(); - __a.deallocate(this, 1); -} - -template -_Rp -__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::operator()(_A0 __a0, _A1 __a1, _A2 __a2) -{ - typedef __invoke_void_return_wrapper<_Rp> _Invoker; - return _Invoker::__call(__f_.first(), __a0, __a1, __a2); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const void* -__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::target(const type_info& __ti) const -{ - if (__ti == typeid(_Fp)) - return &__f_.first(); - return (const void*)0; -} - -template -const std::type_info& -__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::target_type() const -{ - return typeid(_Fp); -} - -#endif // _LIBCPP_NO_RTTI - -} // __function - -template -class _LIBCPP_TYPE_VIS_ONLY function<_Rp()> -{ - typedef __function::__base<_Rp()> __base; - aligned_storage<3*sizeof(void*)>::type __buf_; - __base* __f_; - - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const _Fp&) {return true;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (*__p)()) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const function<_R2()>& __p) {return __p;} -public: - typedef _Rp result_type; - - // 20.7.16.2.1, construct/copy/destroy: - _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {} - _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {} - function(const function&); - template - function(_Fp, - typename enable_if::value>::type* = 0); - - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&) : __f_(0) {} - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {} - template - function(allocator_arg_t, const _Alloc&, const function&); - template - function(allocator_arg_t, const _Alloc& __a, _Fp __f, - typename enable_if::value>::type* = 0); - - function& operator=(const function&); - function& operator=(nullptr_t); - template - typename enable_if - < - !is_integral<_Fp>::value, - function& - >::type - operator=(_Fp); - - ~function(); - - // 20.7.16.2.2, function modifiers: - void swap(function&); - template - _LIBCPP_INLINE_VISIBILITY - void assign(_Fp __f, const _Alloc& __a) - {function(allocator_arg, __a, __f).swap(*this);} - - // 20.7.16.2.3, function capacity: - _LIBCPP_INLINE_VISIBILITY operator bool() const {return __f_;} - -private: - // deleted overloads close possible hole in the type system - template - bool operator==(const function<_R2()>&) const;// = delete; - template - bool operator!=(const function<_R2()>&) const;// = delete; -public: - // 20.7.16.2.4, function invocation: - _Rp operator()() const; - -#ifndef _LIBCPP_NO_RTTI - // 20.7.16.2.5, function target access: - const std::type_info& target_type() const; - template _Tp* target(); - template const _Tp* target() const; -#endif // _LIBCPP_NO_RTTI -}; - -template -function<_Rp()>::function(const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -template -function<_Rp()>::function(allocator_arg_t, const _Alloc&, const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -template -function<_Rp()>::function(_Fp __f, - typename enable_if::value>::type*) - : __f_(0) -{ - if (__not_null(__f)) - { - typedef __function::__func<_Fp, allocator<_Fp>, _Rp()> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(__f); - } - else - { - typedef allocator<_FF> _Ap; - _Ap __a; - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(__f, allocator<_Fp>(__a)); - __f_ = __hold.release(); - } - } -} - -template -template -function<_Rp()>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, - typename enable_if::value>::type*) - : __f_(0) -{ - typedef allocator_traits<_Alloc> __alloc_traits; - if (__not_null(__f)) - { - typedef __function::__func<_Fp, _Alloc, _Rp()> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(__f); - } - else - { - typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; - _Ap __a(__a0); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(__f, _Alloc(__a)); - __f_ = __hold.release(); - } - } -} - -template -function<_Rp()>& -function<_Rp()>::operator=(const function& __f) -{ - function(__f).swap(*this); - return *this; -} - -template -function<_Rp()>& -function<_Rp()>::operator=(nullptr_t) -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); - __f_ = 0; -} - -template -template -typename enable_if -< - !is_integral<_Fp>::value, - function<_Rp()>& ->::type -function<_Rp()>::operator=(_Fp __f) -{ - function(_VSTD::move(__f)).swap(*this); - return *this; -} - -template -function<_Rp()>::~function() -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); -} - -template -void -function<_Rp()>::swap(function& __f) -{ - if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) - { - typename aligned_storage::type __tempbuf; - __base* __t = (__base*)&__tempbuf; - __f_->__clone(__t); - __f_->destroy(); - __f_ = 0; - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = 0; - __f_ = (__base*)&__buf_; - __t->__clone((__base*)&__f.__buf_); - __t->destroy(); - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f_ == (__base*)&__buf_) - { - __f_->__clone((__base*)&__f.__buf_); - __f_->destroy(); - __f_ = __f.__f_; - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = __f_; - __f_ = (__base*)&__buf_; - } - else - _VSTD::swap(__f_, __f.__f_); -} - -template -_Rp -function<_Rp()>::operator()() const -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__f_ == 0) - throw bad_function_call(); -#endif // _LIBCPP_NO_EXCEPTIONS - return (*__f_)(); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const std::type_info& -function<_Rp()>::target_type() const -{ - if (__f_ == 0) - return typeid(void); - return __f_->target_type(); -} - -template -template -_Tp* -function<_Rp()>::target() -{ - if (__f_ == 0) - return (_Tp*)0; - return (_Tp*)__f_->target(typeid(_Tp)); -} - -template -template -const _Tp* -function<_Rp()>::target() const -{ - if (__f_ == 0) - return (const _Tp*)0; - return (const _Tp*)__f_->target(typeid(_Tp)); -} - -#endif // _LIBCPP_NO_RTTI - -template -class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_A0)> - : public unary_function<_A0, _Rp> -{ - typedef __function::__base<_Rp(_A0)> __base; - aligned_storage<3*sizeof(void*)>::type __buf_; - __base* __f_; - - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const _Fp&) {return true;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (*__p)(_B0)) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)()) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)() const) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)() volatile) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)() const volatile) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const function<_R2(_B0)>& __p) {return __p;} -public: - typedef _Rp result_type; - - // 20.7.16.2.1, construct/copy/destroy: - _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {} - _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {} - function(const function&); - template - function(_Fp, - typename enable_if::value>::type* = 0); - - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&) : __f_(0) {} - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {} - template - function(allocator_arg_t, const _Alloc&, const function&); - template - function(allocator_arg_t, const _Alloc& __a, _Fp __f, - typename enable_if::value>::type* = 0); - - function& operator=(const function&); - function& operator=(nullptr_t); - template - typename enable_if - < - !is_integral<_Fp>::value, - function& - >::type - operator=(_Fp); - - ~function(); - - // 20.7.16.2.2, function modifiers: - void swap(function&); - template - _LIBCPP_INLINE_VISIBILITY - void assign(_Fp __f, const _Alloc& __a) - {function(allocator_arg, __a, __f).swap(*this);} - - // 20.7.16.2.3, function capacity: - _LIBCPP_INLINE_VISIBILITY operator bool() const {return __f_;} - -private: - // deleted overloads close possible hole in the type system - template - bool operator==(const function<_R2(_B0)>&) const;// = delete; - template - bool operator!=(const function<_R2(_B0)>&) const;// = delete; -public: - // 20.7.16.2.4, function invocation: - _Rp operator()(_A0) const; - -#ifndef _LIBCPP_NO_RTTI - // 20.7.16.2.5, function target access: - const std::type_info& target_type() const; - template _Tp* target(); - template const _Tp* target() const; -#endif // _LIBCPP_NO_RTTI -}; - -template -function<_Rp(_A0)>::function(const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -template -function<_Rp(_A0)>::function(allocator_arg_t, const _Alloc&, const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -template -function<_Rp(_A0)>::function(_Fp __f, - typename enable_if::value>::type*) - : __f_(0) -{ - if (__not_null(__f)) - { - typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_A0)> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(__f); - } - else - { - typedef allocator<_FF> _Ap; - _Ap __a; - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(__f, allocator<_Fp>(__a)); - __f_ = __hold.release(); - } - } -} - -template -template -function<_Rp(_A0)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, - typename enable_if::value>::type*) - : __f_(0) -{ - typedef allocator_traits<_Alloc> __alloc_traits; - if (__not_null(__f)) - { - typedef __function::__func<_Fp, _Alloc, _Rp(_A0)> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(__f); - } - else - { - typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; - _Ap __a(__a0); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(__f, _Alloc(__a)); - __f_ = __hold.release(); - } - } -} - -template -function<_Rp(_A0)>& -function<_Rp(_A0)>::operator=(const function& __f) -{ - function(__f).swap(*this); - return *this; -} - -template -function<_Rp(_A0)>& -function<_Rp(_A0)>::operator=(nullptr_t) -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); - __f_ = 0; -} - -template -template -typename enable_if -< - !is_integral<_Fp>::value, - function<_Rp(_A0)>& ->::type -function<_Rp(_A0)>::operator=(_Fp __f) -{ - function(_VSTD::move(__f)).swap(*this); - return *this; -} - -template -function<_Rp(_A0)>::~function() -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); -} - -template -void -function<_Rp(_A0)>::swap(function& __f) -{ - if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) - { - typename aligned_storage::type __tempbuf; - __base* __t = (__base*)&__tempbuf; - __f_->__clone(__t); - __f_->destroy(); - __f_ = 0; - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = 0; - __f_ = (__base*)&__buf_; - __t->__clone((__base*)&__f.__buf_); - __t->destroy(); - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f_ == (__base*)&__buf_) - { - __f_->__clone((__base*)&__f.__buf_); - __f_->destroy(); - __f_ = __f.__f_; - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = __f_; - __f_ = (__base*)&__buf_; - } - else - _VSTD::swap(__f_, __f.__f_); -} - -template -_Rp -function<_Rp(_A0)>::operator()(_A0 __a0) const -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__f_ == 0) - throw bad_function_call(); -#endif // _LIBCPP_NO_EXCEPTIONS - return (*__f_)(__a0); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const std::type_info& -function<_Rp(_A0)>::target_type() const -{ - if (__f_ == 0) - return typeid(void); - return __f_->target_type(); -} - -template -template -_Tp* -function<_Rp(_A0)>::target() -{ - if (__f_ == 0) - return (_Tp*)0; - return (_Tp*)__f_->target(typeid(_Tp)); -} - -template -template -const _Tp* -function<_Rp(_A0)>::target() const -{ - if (__f_ == 0) - return (const _Tp*)0; - return (const _Tp*)__f_->target(typeid(_Tp)); -} - -#endif // _LIBCPP_NO_RTTI - -template -class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_A0, _A1)> - : public binary_function<_A0, _A1, _Rp> -{ - typedef __function::__base<_Rp(_A0, _A1)> __base; - aligned_storage<3*sizeof(void*)>::type __buf_; - __base* __f_; - - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const _Fp&) {return true;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (*__p)(_B0, _B1)) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_B1)) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_B1) const) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_B1) volatile) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_B1) const volatile) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const function<_R2(_B0, _B1)>& __p) {return __p;} -public: - typedef _Rp result_type; - - // 20.7.16.2.1, construct/copy/destroy: - _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {} - _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {} - function(const function&); - template - function(_Fp, - typename enable_if::value>::type* = 0); - - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&) : __f_(0) {} - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {} - template - function(allocator_arg_t, const _Alloc&, const function&); - template - function(allocator_arg_t, const _Alloc& __a, _Fp __f, - typename enable_if::value>::type* = 0); - - function& operator=(const function&); - function& operator=(nullptr_t); - template - typename enable_if - < - !is_integral<_Fp>::value, - function& - >::type - operator=(_Fp); - - ~function(); - - // 20.7.16.2.2, function modifiers: - void swap(function&); - template - _LIBCPP_INLINE_VISIBILITY - void assign(_Fp __f, const _Alloc& __a) - {function(allocator_arg, __a, __f).swap(*this);} - - // 20.7.16.2.3, function capacity: - operator bool() const {return __f_;} - -private: - // deleted overloads close possible hole in the type system - template - bool operator==(const function<_R2(_B0, _B1)>&) const;// = delete; - template - bool operator!=(const function<_R2(_B0, _B1)>&) const;// = delete; -public: - // 20.7.16.2.4, function invocation: - _Rp operator()(_A0, _A1) const; - -#ifndef _LIBCPP_NO_RTTI - // 20.7.16.2.5, function target access: - const std::type_info& target_type() const; - template _Tp* target(); - template const _Tp* target() const; -#endif // _LIBCPP_NO_RTTI -}; - -template -function<_Rp(_A0, _A1)>::function(const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -template -function<_Rp(_A0, _A1)>::function(allocator_arg_t, const _Alloc&, const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -template -function<_Rp(_A0, _A1)>::function(_Fp __f, - typename enable_if::value>::type*) - : __f_(0) -{ - if (__not_null(__f)) - { - typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_A0, _A1)> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(__f); - } - else - { - typedef allocator<_FF> _Ap; - _Ap __a; - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(__f, allocator<_Fp>(__a)); - __f_ = __hold.release(); - } - } -} - -template -template -function<_Rp(_A0, _A1)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, - typename enable_if::value>::type*) - : __f_(0) -{ - typedef allocator_traits<_Alloc> __alloc_traits; - if (__not_null(__f)) - { - typedef __function::__func<_Fp, _Alloc, _Rp(_A0, _A1)> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(__f); - } - else - { - typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; - _Ap __a(__a0); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(__f, _Alloc(__a)); - __f_ = __hold.release(); - } - } -} - -template -function<_Rp(_A0, _A1)>& -function<_Rp(_A0, _A1)>::operator=(const function& __f) -{ - function(__f).swap(*this); - return *this; -} - -template -function<_Rp(_A0, _A1)>& -function<_Rp(_A0, _A1)>::operator=(nullptr_t) -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); - __f_ = 0; -} - -template -template -typename enable_if -< - !is_integral<_Fp>::value, - function<_Rp(_A0, _A1)>& ->::type -function<_Rp(_A0, _A1)>::operator=(_Fp __f) -{ - function(_VSTD::move(__f)).swap(*this); - return *this; -} - -template -function<_Rp(_A0, _A1)>::~function() -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); -} - -template -void -function<_Rp(_A0, _A1)>::swap(function& __f) -{ - if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) - { - typename aligned_storage::type __tempbuf; - __base* __t = (__base*)&__tempbuf; - __f_->__clone(__t); - __f_->destroy(); - __f_ = 0; - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = 0; - __f_ = (__base*)&__buf_; - __t->__clone((__base*)&__f.__buf_); - __t->destroy(); - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f_ == (__base*)&__buf_) - { - __f_->__clone((__base*)&__f.__buf_); - __f_->destroy(); - __f_ = __f.__f_; - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = __f_; - __f_ = (__base*)&__buf_; - } - else - _VSTD::swap(__f_, __f.__f_); -} - -template -_Rp -function<_Rp(_A0, _A1)>::operator()(_A0 __a0, _A1 __a1) const -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__f_ == 0) - throw bad_function_call(); -#endif // _LIBCPP_NO_EXCEPTIONS - return (*__f_)(__a0, __a1); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const std::type_info& -function<_Rp(_A0, _A1)>::target_type() const -{ - if (__f_ == 0) - return typeid(void); - return __f_->target_type(); -} - -template -template -_Tp* -function<_Rp(_A0, _A1)>::target() -{ - if (__f_ == 0) - return (_Tp*)0; - return (_Tp*)__f_->target(typeid(_Tp)); -} - -template -template -const _Tp* -function<_Rp(_A0, _A1)>::target() const -{ - if (__f_ == 0) - return (const _Tp*)0; - return (const _Tp*)__f_->target(typeid(_Tp)); -} - -#endif // _LIBCPP_NO_RTTI - -template -class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_A0, _A1, _A2)> -{ - typedef __function::__base<_Rp(_A0, _A1, _A2)> __base; - aligned_storage<3*sizeof(void*)>::type __buf_; - __base* __f_; - - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const _Fp&) {return true;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (*__p)(_B0, _B1, _B2)) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_B1, _B2)) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_B1, _B2) const) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_B1, _B2) volatile) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_B1, _B2) const volatile) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const function<_R2(_B0, _B1, _B2)>& __p) {return __p;} -public: - typedef _Rp result_type; - - // 20.7.16.2.1, construct/copy/destroy: - _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {} - _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {} - function(const function&); - template - function(_Fp, - typename enable_if::value>::type* = 0); - - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&) : __f_(0) {} - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {} - template - function(allocator_arg_t, const _Alloc&, const function&); - template - function(allocator_arg_t, const _Alloc& __a, _Fp __f, - typename enable_if::value>::type* = 0); - - function& operator=(const function&); - function& operator=(nullptr_t); - template - typename enable_if - < - !is_integral<_Fp>::value, - function& - >::type - operator=(_Fp); - - ~function(); - - // 20.7.16.2.2, function modifiers: - void swap(function&); - template - _LIBCPP_INLINE_VISIBILITY - void assign(_Fp __f, const _Alloc& __a) - {function(allocator_arg, __a, __f).swap(*this);} - - // 20.7.16.2.3, function capacity: - _LIBCPP_INLINE_VISIBILITY operator bool() const {return __f_;} - -private: - // deleted overloads close possible hole in the type system - template - bool operator==(const function<_R2(_B0, _B1, _B2)>&) const;// = delete; - template - bool operator!=(const function<_R2(_B0, _B1, _B2)>&) const;// = delete; -public: - // 20.7.16.2.4, function invocation: - _Rp operator()(_A0, _A1, _A2) const; - -#ifndef _LIBCPP_NO_RTTI - // 20.7.16.2.5, function target access: - const std::type_info& target_type() const; - template _Tp* target(); - template const _Tp* target() const; -#endif // _LIBCPP_NO_RTTI -}; - -template -function<_Rp(_A0, _A1, _A2)>::function(const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -template -function<_Rp(_A0, _A1, _A2)>::function(allocator_arg_t, const _Alloc&, - const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -template -function<_Rp(_A0, _A1, _A2)>::function(_Fp __f, - typename enable_if::value>::type*) - : __f_(0) -{ - if (__not_null(__f)) - { - typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_A0, _A1, _A2)> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(__f); - } - else - { - typedef allocator<_FF> _Ap; - _Ap __a; - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(__f, allocator<_Fp>(__a)); - __f_ = __hold.release(); - } - } -} - -template -template -function<_Rp(_A0, _A1, _A2)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, - typename enable_if::value>::type*) - : __f_(0) -{ - typedef allocator_traits<_Alloc> __alloc_traits; - if (__not_null(__f)) - { - typedef __function::__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(__f); - } - else - { - typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; - _Ap __a(__a0); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(__f, _Alloc(__a)); - __f_ = __hold.release(); - } - } -} - -template -function<_Rp(_A0, _A1, _A2)>& -function<_Rp(_A0, _A1, _A2)>::operator=(const function& __f) -{ - function(__f).swap(*this); - return *this; -} - -template -function<_Rp(_A0, _A1, _A2)>& -function<_Rp(_A0, _A1, _A2)>::operator=(nullptr_t) -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); - __f_ = 0; -} - -template -template -typename enable_if -< - !is_integral<_Fp>::value, - function<_Rp(_A0, _A1, _A2)>& ->::type -function<_Rp(_A0, _A1, _A2)>::operator=(_Fp __f) -{ - function(_VSTD::move(__f)).swap(*this); - return *this; -} - -template -function<_Rp(_A0, _A1, _A2)>::~function() -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); -} - -template -void -function<_Rp(_A0, _A1, _A2)>::swap(function& __f) -{ - if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) - { - typename aligned_storage::type __tempbuf; - __base* __t = (__base*)&__tempbuf; - __f_->__clone(__t); - __f_->destroy(); - __f_ = 0; - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = 0; - __f_ = (__base*)&__buf_; - __t->__clone((__base*)&__f.__buf_); - __t->destroy(); - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f_ == (__base*)&__buf_) - { - __f_->__clone((__base*)&__f.__buf_); - __f_->destroy(); - __f_ = __f.__f_; - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = __f_; - __f_ = (__base*)&__buf_; - } - else - _VSTD::swap(__f_, __f.__f_); -} - -template -_Rp -function<_Rp(_A0, _A1, _A2)>::operator()(_A0 __a0, _A1 __a1, _A2 __a2) const -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__f_ == 0) - throw bad_function_call(); -#endif // _LIBCPP_NO_EXCEPTIONS - return (*__f_)(__a0, __a1, __a2); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const std::type_info& -function<_Rp(_A0, _A1, _A2)>::target_type() const -{ - if (__f_ == 0) - return typeid(void); - return __f_->target_type(); -} - -template -template -_Tp* -function<_Rp(_A0, _A1, _A2)>::target() -{ - if (__f_ == 0) - return (_Tp*)0; - return (_Tp*)__f_->target(typeid(_Tp)); -} - -template -template -const _Tp* -function<_Rp(_A0, _A1, _A2)>::target() const -{ - if (__f_ == 0) - return (const _Tp*)0; - return (const _Tp*)__f_->target(typeid(_Tp)); -} - -#endif // _LIBCPP_NO_RTTI - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const function<_Fp>& __f, nullptr_t) {return !__f;} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(nullptr_t, const function<_Fp>& __f) {return !__f;} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const function<_Fp>& __f, nullptr_t) {return (bool)__f;} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(nullptr_t, const function<_Fp>& __f) {return (bool)__f;} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(function<_Fp>& __x, function<_Fp>& __y) -{return __x.swap(__y);} - -template struct __is_bind_expression : public false_type {}; -template struct _LIBCPP_TYPE_VIS_ONLY is_bind_expression - : public __is_bind_expression::type> {}; - -template struct __is_placeholder : public integral_constant {}; -template struct _LIBCPP_TYPE_VIS_ONLY is_placeholder - : public __is_placeholder::type> {}; - -namespace placeholders -{ - -template struct __ph {}; - -extern __ph<1> _1; -extern __ph<2> _2; -extern __ph<3> _3; -extern __ph<4> _4; -extern __ph<5> _5; -extern __ph<6> _6; -extern __ph<7> _7; -extern __ph<8> _8; -extern __ph<9> _9; -extern __ph<10> _10; - -} // placeholders - -template -struct __is_placeholder > - : public integral_constant {}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp& -__mu(reference_wrapper<_Tp> __t, _Uj&) -{ - return __t.get(); -} -/* -template -struct __mu_return1 {}; - -template -struct __mu_return1 -{ - typedef typename result_of<_Ti(_Uj...)>::type type; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __mu_return1::type -__mu_expand(_Ti& __ti, tuple<_Uj...>&& __uj, __tuple_indices<_Indx...>) -{ - __ti(_VSTD::forward::type>(_VSTD::get<_Indx>(__uj))...); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_bind_expression<_Ti>::value, - typename __mu_return1::value, _Ti, _Uj...>::type ->::type -__mu(_Ti& __ti, tuple<_Uj...>& __uj) -{ - typedef typename __make_tuple_indices::type __indices; - return __mu_expand(__ti, __uj, __indices()); -} - -template -struct __mu_return2 {}; - -template -struct __mu_return2 -{ - typedef typename tuple_element::value - 1, _Uj>::type type; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - 0 < is_placeholder<_Ti>::value, - typename __mu_return2<0 < is_placeholder<_Ti>::value, _Ti, _Uj>::type ->::type -__mu(_Ti&, _Uj& __uj) -{ - const size_t _Indx = is_placeholder<_Ti>::value - 1; - // compiler bug workaround - typename tuple_element<_Indx, _Uj>::type __t = _VSTD::get<_Indx>(__uj); - return __t; -// return _VSTD::forward::type>(_VSTD::get<_Indx>(__uj)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_bind_expression<_Ti>::value && - is_placeholder<_Ti>::value == 0 && - !__is_reference_wrapper<_Ti>::value, - _Ti& ->::type -__mu(_Ti& __ti, _Uj& __uj) -{ - return __ti; -} - -template -struct ____mu_return; - -template -struct ____mu_return<_Ti, true, false, tuple<_Uj...> > -{ - typedef typename result_of<_Ti(_Uj...)>::type type; -}; - -template -struct ____mu_return<_Ti, false, true, _TupleUj> -{ - typedef typename tuple_element::value - 1, - _TupleUj>::type&& type; -}; - -template -struct ____mu_return<_Ti, false, false, _TupleUj> -{ - typedef _Ti& type; -}; - -template -struct __mu_return - : public ____mu_return<_Ti, - is_bind_expression<_Ti>::value, - 0 < is_placeholder<_Ti>::value, - _TupleUj> -{ -}; - -template -struct __mu_return, _TupleUj> -{ - typedef _Ti& type; -}; - -template -struct __bind_return; - -template -struct __bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj> -{ - typedef typename __ref_return - < - _Fp&, - typename __mu_return - < - _BoundArgs, - _TupleUj - >::type... - >::type type; -}; - -template -struct __bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj> -{ - typedef typename __ref_return - < - _Fp&, - typename __mu_return - < - const _BoundArgs, - _TupleUj - >::type... - >::type type; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __bind_return<_Fp, _BoundArgs, _Args>::type -__apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>, - _Args&& __args) -{ - return __invoke(__f, __mu(_VSTD::get<_Indx>(__bound_args), __args)...); -} - -template -class __bind -{ - _Fp __f_; - tuple<_BoundArgs...> __bound_args_; - - typedef typename __make_tuple_indices::type __indices; -public: - template - explicit __bind(_Gp&& __f, _BA&& ...__bound_args) - : __f_(_VSTD::forward<_Gp>(__f)), - __bound_args_(_VSTD::forward<_BA>(__bound_args)...) {} - - template - typename __bind_return<_Fp, tuple<_BoundArgs...>, tuple<_Args&&...> >::type - operator()(_Args&& ...__args) - { - // compiler bug workaround - return __apply_functor(__f_, __bound_args_, __indices(), - tuple<_Args&&...>(__args...)); - } - - template - typename __bind_return<_Fp, tuple<_BoundArgs...>, tuple<_Args&&...> >::type - operator()(_Args&& ...__args) const - { - return __apply_functor(__f_, __bound_args_, __indices(), - tuple<_Args&&...>(__args...)); - } -}; - -template -struct __is_bind_expression<__bind<_Fp, _BoundArgs...> > : public true_type {}; - -template -class __bind_r - : public __bind<_Fp, _BoundArgs...> -{ - typedef __bind<_Fp, _BoundArgs...> base; -public: - typedef _Rp result_type; - - template - explicit __bind_r(_Gp&& __f, _BA&& ...__bound_args) - : base(_VSTD::forward<_Gp>(__f), - _VSTD::forward<_BA>(__bound_args)...) {} - - template - result_type - operator()(_Args&& ...__args) - { - return base::operator()(_VSTD::forward<_Args>(__args)...); - } - - template - result_type - operator()(_Args&& ...__args) const - { - return base::operator()(_VSTD::forward<_Args>(__args)...); - } -}; - -template -struct __is_bind_expression<__bind_r<_Rp, _Fp, _BoundArgs...> > : public true_type {}; - -template -inline _LIBCPP_INLINE_VISIBILITY -__bind::type, typename decay<_BoundArgs>::type...> -bind(_Fp&& __f, _BoundArgs&&... __bound_args) -{ - typedef __bind::type, typename decay<_BoundArgs>::type...> type; - return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__bind_r<_Rp, typename decay<_Fp>::type, typename decay<_BoundArgs>::type...> -bind(_Fp&& __f, _BoundArgs&&... __bound_args) -{ - typedef __bind_r<_Rp, typename decay<_Fp>::type, typename decay<_BoundArgs>::type...> type; - return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...); -} -*/ - -#endif // _LIBCPP_FUNCTIONAL_03 diff --git a/libcxx/include/__functional_base b/libcxx/include/__functional_base deleted file mode 100644 index 64bc93116..000000000 --- a/libcxx/include/__functional_base +++ /dev/null @@ -1,637 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_FUNCTIONAL_BASE -#define _LIBCPP_FUNCTIONAL_BASE - -#include <__config> -#include -#include -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -struct _LIBCPP_TYPE_VIS_ONLY unary_function -{ - typedef _Arg argument_type; - typedef _Result result_type; -}; - -template -struct _LIBCPP_TYPE_VIS_ONLY binary_function -{ - typedef _Arg1 first_argument_type; - typedef _Arg2 second_argument_type; - typedef _Result result_type; -}; - -template struct _LIBCPP_TYPE_VIS_ONLY hash; - -template -struct __has_result_type -{ -private: - struct __two {char __lx; char __lxx;}; - template static __two __test(...); - template static char __test(typename _Up::result_type* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY less : binary_function<_Tp, _Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x < __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY less -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - -// addressof - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp* -addressof(_Tp& __x) _NOEXCEPT -{ - return (_Tp*)&reinterpret_cast(__x); -} - -#if defined(_LIBCPP_HAS_OBJC_ARC) && !defined(_LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF) -// Objective-C++ Automatic Reference Counting uses qualified pointers -// that require special addressof() signatures. When -// _LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF is defined, the compiler -// itself is providing these definitions. Otherwise, we provide them. -template -inline _LIBCPP_INLINE_VISIBILITY -__strong _Tp* -addressof(__strong _Tp& __x) _NOEXCEPT -{ - return &__x; -} - -#ifdef _LIBCPP_HAS_OBJC_ARC_WEAK -template -inline _LIBCPP_INLINE_VISIBILITY -__weak _Tp* -addressof(__weak _Tp& __x) _NOEXCEPT -{ - return &__x; -} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -__autoreleasing _Tp* -addressof(__autoreleasing _Tp& __x) _NOEXCEPT -{ - return &__x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__unsafe_unretained _Tp* -addressof(__unsafe_unretained _Tp& __x) _NOEXCEPT -{ - return &__x; -} -#endif - -#ifdef _LIBCPP_HAS_NO_VARIADICS - -#include <__functional_base_03> - -#else // _LIBCPP_HAS_NO_VARIADICS - -// __weak_result_type - -template -struct __derives_from_unary_function -{ -private: - struct __two {char __lx; char __lxx;}; - static __two __test(...); - template - static unary_function<_Ap, _Rp> - __test(const volatile unary_function<_Ap, _Rp>*); -public: - static const bool value = !is_same::value; - typedef decltype(__test((_Tp*)0)) type; -}; - -template -struct __derives_from_binary_function -{ -private: - struct __two {char __lx; char __lxx;}; - static __two __test(...); - template - static binary_function<_A1, _A2, _Rp> - __test(const volatile binary_function<_A1, _A2, _Rp>*); -public: - static const bool value = !is_same::value; - typedef decltype(__test((_Tp*)0)) type; -}; - -template ::value> -struct __maybe_derive_from_unary_function // bool is true - : public __derives_from_unary_function<_Tp>::type -{ -}; - -template -struct __maybe_derive_from_unary_function<_Tp, false> -{ -}; - -template ::value> -struct __maybe_derive_from_binary_function // bool is true - : public __derives_from_binary_function<_Tp>::type -{ -}; - -template -struct __maybe_derive_from_binary_function<_Tp, false> -{ -}; - -template ::value> -struct __weak_result_type_imp // bool is true - : public __maybe_derive_from_unary_function<_Tp>, - public __maybe_derive_from_binary_function<_Tp> -{ - typedef typename _Tp::result_type result_type; -}; - -template -struct __weak_result_type_imp<_Tp, false> - : public __maybe_derive_from_unary_function<_Tp>, - public __maybe_derive_from_binary_function<_Tp> -{ -}; - -template -struct __weak_result_type - : public __weak_result_type_imp<_Tp> -{ -}; - -// 0 argument case - -template -struct __weak_result_type<_Rp ()> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (&)()> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (*)()> -{ - typedef _Rp result_type; -}; - -// 1 argument case - -template -struct __weak_result_type<_Rp (_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (&)(_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (*)(_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)()> - : public unary_function<_Cp*, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)() const> - : public unary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)() volatile> - : public unary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)() const volatile> - : public unary_function -{ -}; - -// 2 argument case - -template -struct __weak_result_type<_Rp (_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (*)(_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (&)(_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1)> - : public binary_function<_Cp*, _A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1) const> - : public binary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile> - : public binary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile> - : public binary_function -{ -}; - -// 3 or more arguments - -template -struct __weak_result_type<_Rp (_A1, _A2, _A3, _A4...)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (&)(_A1, _A2, _A3, _A4...)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (*)(_A1, _A2, _A3, _A4...)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) volatile> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const volatile> -{ - typedef _Rp result_type; -}; - -// __invoke - -// bullets 1 and 2 - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -auto -__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) - -> decltype((_VSTD::forward<_A0>(__a0).*__f)(_VSTD::forward<_Args>(__args)...)) -{ - return (_VSTD::forward<_A0>(__a0).*__f)(_VSTD::forward<_Args>(__args)...); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -auto -__invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) - -> decltype(((*_VSTD::forward<_A0>(__a0)).*__f)(_VSTD::forward<_Args>(__args)...)) -{ - return ((*_VSTD::forward<_A0>(__a0)).*__f)(_VSTD::forward<_Args>(__args)...); -} - -// bullets 3 and 4 - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -auto -__invoke(_Fp&& __f, _A0&& __a0) - -> decltype(_VSTD::forward<_A0>(__a0).*__f) -{ - return _VSTD::forward<_A0>(__a0).*__f; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -auto -__invoke(_Fp&& __f, _A0&& __a0) - -> decltype((*_VSTD::forward<_A0>(__a0)).*__f) -{ - return (*_VSTD::forward<_A0>(__a0)).*__f; -} - -// bullet 5 - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -auto -__invoke(_Fp&& __f, _Args&& ...__args) - -> decltype(_VSTD::forward<_Fp>(__f)(_VSTD::forward<_Args>(__args)...)) -{ - return _VSTD::forward<_Fp>(__f)(_VSTD::forward<_Args>(__args)...); -} - -template -struct __invoke_return -{ - typedef decltype(__invoke(_VSTD::declval<_Tp>(), _VSTD::declval<_Args>()...)) type; -}; - -template -struct __invoke_void_return_wrapper -{ - template - static _Ret __call(_Args&&... __args) - { - return __invoke(_VSTD::forward<_Args>(__args)...); - } -}; - -template <> -struct __invoke_void_return_wrapper -{ - template - static void __call(_Args&&... __args) - { - __invoke(_VSTD::forward<_Args>(__args)...); - } -}; - -template -class _LIBCPP_TYPE_VIS_ONLY reference_wrapper - : public __weak_result_type<_Tp> -{ -public: - // types - typedef _Tp type; -private: - type* __f_; - -public: - // construct/copy/destroy - _LIBCPP_INLINE_VISIBILITY reference_wrapper(type& __f) _NOEXCEPT - : __f_(_VSTD::addressof(__f)) {} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - private: reference_wrapper(type&&); public: // = delete; // do not bind to temps -#endif - - // access - _LIBCPP_INLINE_VISIBILITY operator type& () const _NOEXCEPT {return *__f_;} - _LIBCPP_INLINE_VISIBILITY type& get() const _NOEXCEPT {return *__f_;} - - // invoke - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_of::type - operator() (_ArgTypes&&... __args) const - { - return __invoke(get(), _VSTD::forward<_ArgTypes>(__args)...); - } -}; - -template struct __is_reference_wrapper_impl : public false_type {}; -template struct __is_reference_wrapper_impl > : public true_type {}; -template struct __is_reference_wrapper - : public __is_reference_wrapper_impl::type> {}; - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper<_Tp> -ref(_Tp& __t) _NOEXCEPT -{ - return reference_wrapper<_Tp>(__t); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper<_Tp> -ref(reference_wrapper<_Tp> __t) _NOEXCEPT -{ - return ref(__t.get()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper -cref(const _Tp& __t) _NOEXCEPT -{ - return reference_wrapper(__t); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper -cref(reference_wrapper<_Tp> __t) _NOEXCEPT -{ - return cref(__t.get()); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS - -template void ref(const _Tp&&) = delete; -template void cref(const _Tp&&) = delete; - -#else // _LIBCPP_HAS_NO_DELETED_FUNCTIONS - -template void ref(const _Tp&&);// = delete; -template void cref(const _Tp&&);// = delete; - -#endif // _LIBCPP_HAS_NO_DELETED_FUNCTIONS - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#endif // _LIBCPP_HAS_NO_VARIADICS - -#if _LIBCPP_STD_VER > 11 -template -struct __is_transparent -{ -private: - struct __two {char __lx; char __lxx;}; - template static __two __test(...); - template static char __test(typename _Up::is_transparent* = 0); -public: - static const bool value = sizeof(__test<_Tp1>(0)) == 1; -}; -#endif - -// allocator_arg_t - -struct _LIBCPP_TYPE_VIS_ONLY allocator_arg_t { }; - -#if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_MEMORY) -extern const allocator_arg_t allocator_arg; -#else -constexpr allocator_arg_t allocator_arg = allocator_arg_t(); -#endif - -// uses_allocator - -template -struct __has_allocator_type -{ -private: - struct __two {char __lx; char __lxx;}; - template static __two __test(...); - template static char __test(typename _Up::allocator_type* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - -template ::value> -struct __uses_allocator - : public integral_constant::value> -{ -}; - -template -struct __uses_allocator<_Tp, _Alloc, false> - : public false_type -{ -}; - -template -struct _LIBCPP_TYPE_VIS_ONLY uses_allocator - : public __uses_allocator<_Tp, _Alloc> -{ -}; - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -// allocator construction - -template -struct __uses_alloc_ctor_imp -{ - static const bool __ua = uses_allocator<_Tp, _Alloc>::value; - static const bool __ic = - is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value; - static const int value = __ua ? 2 - __ic : 0; -}; - -template -struct __uses_alloc_ctor - : integral_constant::value> - {}; - -template -inline _LIBCPP_INLINE_VISIBILITY -void __user_alloc_construct_impl (integral_constant, _Tp *__storage, const _Allocator &, _Args &&... __args ) -{ - new (__storage) _Tp (_VSTD::forward<_Args>(__args)...); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void __user_alloc_construct_impl (integral_constant, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) -{ - new (__storage) _Tp (allocator_arg, __a, _VSTD::forward<_Args>(__args)...); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void __user_alloc_construct_impl (integral_constant, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) -{ - new (__storage) _Tp (_VSTD::forward<_Args>(__args)..., __a); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void __user_alloc_construct (_Tp *__storage, const _Allocator &__a, _Args &&... __args) -{ - __user_alloc_construct_impl( - __uses_alloc_ctor<_Tp, _Allocator>(), - __storage, __a, _VSTD::forward<_Args>(__args)... - ); -} -#endif // _LIBCPP_HAS_NO_VARIADICS - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_FUNCTIONAL_BASE diff --git a/libcxx/include/__functional_base_03 b/libcxx/include/__functional_base_03 deleted file mode 100644 index 655027786..000000000 --- a/libcxx/include/__functional_base_03 +++ /dev/null @@ -1,1144 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_FUNCTIONAL_BASE_03 -#define _LIBCPP_FUNCTIONAL_BASE_03 - -// manual variadic expansion for - -// __weak_result_type - -template -struct __derives_from_unary_function -{ -private: - struct __two {char __lx; char __lxx;}; - static __two __test(...); - template - static unary_function<_Ap, _Rp> - __test(const volatile unary_function<_Ap, _Rp>*); -public: - static const bool value = !is_same::value; - typedef decltype(__test((_Tp*)0)) type; -}; - -template -struct __derives_from_binary_function -{ -private: - struct __two {char __lx; char __lxx;}; - static __two __test(...); - template - static binary_function<_A1, _A2, _Rp> - __test(const volatile binary_function<_A1, _A2, _Rp>*); -public: - static const bool value = !is_same::value; - typedef decltype(__test((_Tp*)0)) type; -}; - -template ::value> -struct __maybe_derive_from_unary_function // bool is true - : public __derives_from_unary_function<_Tp>::type -{ -}; - -template -struct __maybe_derive_from_unary_function<_Tp, false> -{ -}; - -template ::value> -struct __maybe_derive_from_binary_function // bool is true - : public __derives_from_binary_function<_Tp>::type -{ -}; - -template -struct __maybe_derive_from_binary_function<_Tp, false> -{ -}; - -template ::value> -struct __weak_result_type_imp // bool is true - : public __maybe_derive_from_unary_function<_Tp>, - public __maybe_derive_from_binary_function<_Tp> -{ - typedef typename _Tp::result_type result_type; -}; - -template -struct __weak_result_type_imp<_Tp, false> - : public __maybe_derive_from_unary_function<_Tp>, - public __maybe_derive_from_binary_function<_Tp> -{ -}; - -template -struct __weak_result_type - : public __weak_result_type_imp::type> -{ -}; - -// 0 argument case - -template -struct __weak_result_type<_Rp ()> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (&)()> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (*)()> -{ - typedef _Rp result_type; -}; - -// 1 argument case - -template -struct __weak_result_type<_Rp (_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (&)(_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (*)(_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)()> - : public unary_function<_Cp*, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)() const> - : public unary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)() volatile> - : public unary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)() const volatile> - : public unary_function -{ -}; - -// 2 argument case - -template -struct __weak_result_type<_Rp (_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (*)(_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (&)(_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1)> - : public binary_function<_Cp*, _A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1) const> - : public binary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile> - : public binary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile> - : public binary_function -{ -}; - -// 3 or more arguments - -template -struct __weak_result_type<_Rp (_A1, _A2, _A3)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (&)(_A1, _A2, _A3)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (*)(_A1, _A2, _A3)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2) const> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2) volatile> -{ - typedef _Rp result_type; -}; - -// __invoke - -// __ref_return0 -// -// template -// struct ________ref_return0 // _HasResultType is true -// { -// typedef typename _Tp::result_type type; -// }; -// -// template -// struct ________ref_return0<_Tp, false> -// { -// typedef void type; -// }; -// -// template -// struct ____ref_return0 // _IsClass is true -// : public ________ref_return0<_Tp, __has_result_type::type>::value> -// { -// }; -// -// template -// struct ______ref_return0 // _HasResultType is true -// { -// typedef typename __callable_type<_Tp>::result_type type; -// }; -// -// template -// struct ______ref_return0<_Tp, false> // pointer to member data -// { -// typedef void type; -// }; -// -// template -// struct ____ref_return0<_Tp, false> -// : public ______ref_return0::type, -// __has_result_type<__callable_type::type> >::value> -// { -// }; -// -// template -// struct __ref_return0 -// : public ____ref_return0::type, -// is_class::type>::value> -// { -// }; -// -// __ref_return1 -// -// template -// struct ____ref_return1 // _IsClass is true -// { -// typedef typename result_of<_Tp(_A0)>::type type; -// }; -// -// template -// struct ______ref_return1 // _HasResultType is true -// { -// typedef typename __callable_type<_Tp>::result_type type; -// }; -// -// template -// struct __ref_return1_member_data1; -// -// template -// struct __ref_return1_member_data1<_Rp _Cp::*, _A0, true> -// { -// typedef typename __apply_cv<_A0, _Rp>::type& type; -// }; -// -// template -// struct __ref_return1_member_data1<_Rp _Cp::*, _A0, false> -// { -// static _A0 __a; -// typedef typename __apply_cv::type& type; -// }; -// -// template -// struct __ref_return1_member_data; -// -// template -// struct __ref_return1_member_data<_Rp _Cp::*, _A0> -// : public __ref_return1_member_data1<_Rp _Cp::*, _A0, -// is_same::type, -// typename remove_cv::type>::type>::value> -// { -// }; -// -// template -// struct ______ref_return1<_Tp, false, _A0> // pointer to member data -// : public __ref_return1_member_data::type, _A0> -// { -// }; -// -// template -// struct ____ref_return1<_Tp, false, _A0> -// : public ______ref_return1::type, -// __has_result_type<__callable_type::type> >::value, _A0> -// { -// }; -// -// template -// struct __ref_return1 -// : public ____ref_return1::type, -// is_class::type>::value, _A0> -// { -// }; -// -// __ref_return2 -// -// template -// struct ____ref_return2 // _IsClass is true -// { -// typedef typename result_of<_Tp(_A0, _A1)>::type type; -// }; -// -// template -// struct ______ref_return2 // _HasResultType is true -// { -// typedef typename __callable_type<_Tp>::result_type type; -// }; -// -// template -// struct ______ref_return2<_Tp, false, class _A0, class _A1> // pointer to member data -// { -// static_assert(sizeof(_Tp) == 0, "An attempt has been made to `call` a pointer" -// " to member data with too many arguments."); -// }; -// -// template -// struct ____ref_return2<_Tp, false, _A0, _A1> -// : public ______ref_return2::type, -// __has_result_type<__callable_type::type> >::value, _A0, _A1> -// { -// }; -// -// template -// struct __ref_return2 -// : public ____ref_return2::type, -// is_class::type>::value, _A0, _A1> -// { -// }; -// -// __ref_return3 -// -// template -// struct ____ref_return3 // _IsClass is true -// { -// typedef typename result_of<_Tp(_A0, _A1, _A2)>::type type; -// }; -// -// template -// struct ______ref_return3 // _HasResultType is true -// { -// typedef typename __callable_type<_Tp>::result_type type; -// }; -// -// template -// struct ______ref_return3<_Tp, false, class _A0, class _A1, class _A2> // pointer to member data -// { -// static_assert(sizeof(_Tp) == 0, "An attempt has been made to `call` a pointer" -// " to member data with too many arguments."); -// }; -// -// template -// struct ____ref_return3<_Tp, false, _A0, _A1, _A2> -// : public ______ref_return3::type, -// __has_result_type<__callable_type::type> >::value, _A0, _A1, _A2> -// { -// }; -// -// template -// struct __ref_return3 -// : public ____ref_return3::type, -// is_class::type>::value, _A0, _A1, _A2> -// { -// }; - -// first bullet - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(), _T1& __t1) -{ - return (__t1.*__f)(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0), _T1& __t1, _A0& __a0) -{ - return (__t1.*__f)(__a0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1), _T1& __t1, _A0& __a0, _A1& __a1) -{ - return (__t1.*__f)(__a0, __a1); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1, _A2), _T1& __t1, _A0& __a0, _A1& __a1, _A2& __a2) -{ - return (__t1.*__f)(__a0, __a1, __a2); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)() const, _T1& __t1) -{ - return (__t1.*__f)(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0) const, _T1& __t1, _A0& __a0) -{ - return (__t1.*__f)(__a0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1) const, _T1& __t1, _A0& __a0, _A1& __a1) -{ - return (__t1.*__f)(__a0, __a1); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1, _A2) const, _T1& __t1, _A0& __a0, _A1& __a1, _A2& __a2) -{ - return (__t1.*__f)(__a0, __a1, __a2); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)() volatile, _T1& __t1) -{ - return (__t1.*__f)(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0) volatile, _T1& __t1, _A0& __a0) -{ - return (__t1.*__f)(__a0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1) volatile, _T1& __t1, _A0& __a0, _A1& __a1) -{ - return (__t1.*__f)(__a0, __a1); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1, _A2) volatile, _T1& __t1, _A0& __a0, _A1& __a1, _A2& __a2) -{ - return (__t1.*__f)(__a0, __a1, __a2); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)() const volatile, _T1& __t1) -{ - return (__t1.*__f)(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0) const volatile, _T1& __t1, _A0& __a0) -{ - return (__t1.*__f)(__a0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1) const volatile, _T1& __t1, _A0& __a0, _A1& __a1) -{ - return (__t1.*__f)(__a0, __a1); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1, _A2) const volatile, _T1& __t1, _A0& __a0, _A1& __a1, _A2& __a2) -{ - return (__t1.*__f)(__a0, __a1, __a2); -} - -// second bullet - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(), _T1 __t1) -{ - return ((*__t1).*__f)(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0), _T1 __t1, _A0& __a0) -{ - return ((*__t1).*__f)(__a0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1), _T1 __t1, _A0& __a0, _A1& __a1) -{ - return ((*__t1).*__f)(__a0, __a1); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1, _A2), _T1 __t1, _A0& __a0, _A1& __a1, _A2& __a2) -{ - return ((*__t1).*__f)(__a0, __a1, __a2); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)() const, _T1 __t1) -{ - return ((*__t1).*__f)(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0) const, _T1 __t1, _A0& __a0) -{ - return ((*__t1).*__f)(__a0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1) const, _T1 __t1, _A0& __a0, _A1& __a1) -{ - return ((*__t1).*__f)(__a0, __a1); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1, _A2) const, _T1 __t1, _A0& __a0, _A1& __a1, _A2& __a2) -{ - return ((*__t1).*__f)(__a0, __a1, __a2); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)() volatile, _T1 __t1) -{ - return ((*__t1).*__f)(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0) volatile, _T1 __t1, _A0& __a0) -{ - return ((*__t1).*__f)(__a0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1) volatile, _T1 __t1, _A0& __a0, _A1& __a1) -{ - return ((*__t1).*__f)(__a0, __a1); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1, _A2) volatile, _T1 __t1, _A0& __a0, _A1& __a1, _A2& __a2) -{ - return ((*__t1).*__f)(__a0, __a1, __a2); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)() const volatile, _T1 __t1) -{ - return ((*__t1).*__f)(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0) const volatile, _T1 __t1, _A0& __a0) -{ - return ((*__t1).*__f)(__a0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1) const volatile, _T1 __t1, _A0& __a0, _A1& __a1) -{ - return ((*__t1).*__f)(__a0, __a1); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - _Rp ->::type -__invoke(_Rp (_Tp::*__f)(_A0, _A1, _A2) const volatile, _T1 __t1, _A0& __a0, _A1& __a1, _A2& __a2) -{ - return ((*__t1).*__f)(__a0, __a1, __a2); -} - -// third bullet - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_base_of<_Tp, typename remove_reference<_T1>::type>::value, - typename __apply_cv<_T1, _Rp>::type& ->::type -__invoke(_Rp _Tp::* __f, _T1& __t1) -{ - return __t1.*__f; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__invoke(_Rp _Tp::*) -{ -} - -// template -// inline _LIBCPP_INLINE_VISIBILITY -// typename enable_if -// < -// is_base_of<_Tp, typename remove_reference<_T1>::type>::value, -// typename __ref_return1<_Rp _Tp::*, _T1>::type -// >::type -// __invoke(_Rp _Tp::* __f, _T1& __t1) -// { -// return __t1.*__f; -// } - -// forth bullet - -template -struct __4th_helper -{ -}; - -template -struct __4th_helper<_T1, _Rp, true> -{ - typedef typename __apply_cv()), _Rp>::type type; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __4th_helper<_T1, _Rp, - !is_base_of<_Tp, - typename remove_reference<_T1>::type - >::value - >::type& -__invoke(_Rp _Tp::* __f, _T1& __t1) -{ - return (*__t1).*__f; -} - -// template -// inline _LIBCPP_INLINE_VISIBILITY -// typename enable_if -// < -// !is_base_of<_Tp, typename remove_reference<_T1>::type>::value, -// typename __ref_return1<_Rp _Tp::*, _T1>::type -// >::type -// __invoke(_Rp _Tp::* __f, _T1 __t1) -// { -// return (*__t1).*__f; -// } - -// fifth bullet - -template -inline _LIBCPP_INLINE_VISIBILITY -decltype(declval<_Fp>()()) -__invoke(_Fp __f) -{ - return __f(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -decltype(declval<_Fp>()(declval<_A0&>())) -__invoke(_Fp __f, _A0& __a0) -{ - return __f(__a0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -decltype(declval<_Fp>()(declval<_A0&>(), declval<_A1&>())) -__invoke(_Fp __f, _A0& __a0, _A1& __a1) -{ - return __f(__a0, __a1); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -decltype(declval<_Fp>()(declval<_A0&>(), declval<_A1&>(), declval<_A2&>())) -__invoke(_Fp __f, _A0& __a0, _A1& __a1, _A2& __a2) -{ - return __f(__a0, __a1, __a2); -} - -// template -// inline _LIBCPP_INLINE_VISIBILITY -// _Rp -// __invoke(_Fp& __f) -// { -// return __f(); -// } -// -// template -// inline _LIBCPP_INLINE_VISIBILITY -// typename enable_if -// < -// !is_member_pointer<_Fp>::value, -// _Rp -// >::type -// __invoke(_Fp& __f, _A0& __a0) -// { -// return __f(__a0); -// } -// -// template -// inline _LIBCPP_INLINE_VISIBILITY -// _Rp -// __invoke(_Fp& __f, _A0& __a0, _A1& __a1) -// { -// return __f(__a0, __a1); -// } -// -// template -// inline _LIBCPP_INLINE_VISIBILITY -// _Rp -// __invoke(_Fp& __f, _A0& __a0, _A1& __a1, _A2& __a2) -// { -// return __f(__a0, __a1, __a2); -// } - -template -struct __has_type -{ -private: - struct __two {char __lx; char __lxx;}; - template static __two __test(...); - template static char __test(typename _Up::type* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - -template >::value> -struct __invoke_return -{ - typedef typename __weak_result_type<_Fp>::result_type type; -}; - -template -struct __invoke_return<_Fp, false> -{ - typedef decltype(__invoke(_VSTD::declval<_Fp>())) type; -}; - -template -struct __invoke_return0 -{ - typedef decltype(__invoke(_VSTD::declval<_Tp>(), _VSTD::declval<_A0>())) type; -}; - -template -struct __invoke_return0<_Rp _Tp::*, _A0> -{ - typedef typename __apply_cv<_A0, _Rp>::type& type; -}; - -template -struct __invoke_return0<_Rp _Tp::*, _A0*> -{ - typedef typename __apply_cv<_A0, _Rp>::type& type; -}; - -template -struct __invoke_return1 -{ - typedef decltype(__invoke(_VSTD::declval<_Tp>(), _VSTD::declval<_A0>(), - _VSTD::declval<_A1>())) type; -}; - -template -struct __invoke_return2 -{ - typedef decltype(__invoke(_VSTD::declval<_Tp>(), _VSTD::declval<_A0>(), - _VSTD::declval<_A1>(), - _VSTD::declval<_A2>())) type; -}; - -template -struct __invoke_void_return_wrapper -{ - template - static _Ret __call(_Fn __f) - { - return __invoke(__f); - } - - template - static _Ret __call(_Fn __f, _A0& __a0) - { - return __invoke(__f, __a0); - } - - template - static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1) - { - return __invoke(__f, __a0, __a1); - } - - template - static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2) - { - return __invoke(__f, __a0, __a1, __a2); - } -}; - - -template <> -struct __invoke_void_return_wrapper -{ - template - static void __call(_Fn __f) - { - __invoke(__f); - } - - template - static void __call(_Fn __f, _A0& __a0) - { - __invoke(__f, __a0); - } - - template - static void __call(_Fn __f, _A0& __a0, _A1& __a1) - { - __invoke(__f, __a0, __a1); - } - - template - static void __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2) - { - __invoke(__f, __a0, __a1, __a2); - } -}; - -template -class _LIBCPP_TYPE_VIS_ONLY reference_wrapper - : public __weak_result_type<_Tp> -{ -public: - // types - typedef _Tp type; -private: - type* __f_; - -public: - // construct/copy/destroy - _LIBCPP_INLINE_VISIBILITY reference_wrapper(type& __f) : __f_(&__f) {} - - // access - _LIBCPP_INLINE_VISIBILITY operator type& () const {return *__f_;} - _LIBCPP_INLINE_VISIBILITY type& get() const {return *__f_;} - - // invoke - - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return::type - operator() () const - { - return __invoke(get()); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return0::type - operator() (_A0& __a0) const - { - return __invoke(get(), __a0); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return1::type - operator() (_A0& __a0, _A1& __a1) const - { - return __invoke(get(), __a0, __a1); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return2::type - operator() (_A0& __a0, _A1& __a1, _A2& __a2) const - { - return __invoke(get(), __a0, __a1, __a2); - } -}; - -template struct __is_reference_wrapper_impl : public false_type {}; -template struct __is_reference_wrapper_impl > : public true_type {}; -template struct __is_reference_wrapper - : public __is_reference_wrapper_impl::type> {}; - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper<_Tp> -ref(_Tp& __t) -{ - return reference_wrapper<_Tp>(__t); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper<_Tp> -ref(reference_wrapper<_Tp> __t) -{ - return ref(__t.get()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper -cref(const _Tp& __t) -{ - return reference_wrapper(__t); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper -cref(reference_wrapper<_Tp> __t) -{ - return cref(__t.get()); -} - -#endif // _LIBCPP_FUNCTIONAL_BASE_03 diff --git a/libcxx/include/__hash_table b/libcxx/include/__hash_table deleted file mode 100644 index e41ccf293..000000000 --- a/libcxx/include/__hash_table +++ /dev/null @@ -1,2440 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP__HASH_TABLE -#define _LIBCPP__HASH_TABLE - -#include <__config> -#include -#include -#include -#include -#include - -#include <__undef_min_max> -#include <__undef___deallocate> - -#include <__debug> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -_LIBCPP_FUNC_VIS -size_t __next_prime(size_t __n); - -template -struct __hash_node_base -{ - typedef __hash_node_base __first_node; - - _NodePtr __next_; - - _LIBCPP_INLINE_VISIBILITY __hash_node_base() _NOEXCEPT : __next_(nullptr) {} -}; - -template -struct __hash_node - : public __hash_node_base - < - typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__hash_node<_Tp, _VoidPtr> > -#else - rebind<__hash_node<_Tp, _VoidPtr> >::other -#endif - > -{ - typedef _Tp value_type; - - size_t __hash_; - value_type __value_; -}; - -inline _LIBCPP_INLINE_VISIBILITY -bool -__is_hash_power2(size_t __bc) -{ - return __bc > 2 && !(__bc & (__bc - 1)); -} - -inline _LIBCPP_INLINE_VISIBILITY -size_t -__constrain_hash(size_t __h, size_t __bc) -{ - return !(__bc & (__bc - 1)) ? __h & (__bc - 1) : __h % __bc; -} - -inline _LIBCPP_INLINE_VISIBILITY -size_t -__next_hash_pow2(size_t __n) -{ - return size_t(1) << (std::numeric_limits::digits - __clz(__n-1)); -} - -template class __hash_table; -template class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; -template class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator; -template class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; - -template -class _LIBCPP_TYPE_VIS_ONLY __hash_iterator -{ - typedef _NodePtr __node_pointer; - - __node_pointer __node_; - -public: - typedef forward_iterator_tag iterator_category; - typedef typename pointer_traits<__node_pointer>::element_type::value_type value_type; - typedef typename pointer_traits<__node_pointer>::difference_type difference_type; - typedef value_type& reference; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY __hash_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER > 11 - : __node_(nullptr) -#endif - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_i(this); -#endif - } - -#if _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - __hash_iterator(const __hash_iterator& __i) - : __node_(__i.__node_) - { - __get_db()->__iterator_copy(this, &__i); - } - - _LIBCPP_INLINE_VISIBILITY - ~__hash_iterator() - { - __get_db()->__erase_i(this); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_iterator& operator=(const __hash_iterator& __i) - { - if (this != &__i) - { - __get_db()->__iterator_copy(this, &__i); - __node_ = __i.__node_; - } - return *this; - } - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container iterator"); -#endif - return __node_->__value_; - } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container iterator"); -#endif - return pointer_traits::pointer_to(__node_->__value_); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_iterator& operator++() - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable unordered container iterator"); -#endif - __node_ = __node_->__next_; - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - __hash_iterator operator++(int) - { - __hash_iterator __t(*this); - ++(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_iterator& __x, const __hash_iterator& __y) - { - return __x.__node_ == __y.__node_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_iterator& __x, const __hash_iterator& __y) - {return !(__x == __y);} - -private: -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY - __hash_iterator(__node_pointer __node, const void* __c) _NOEXCEPT - : __node_(__node) - { - __get_db()->__insert_ic(this, __c); - } -#else - _LIBCPP_INLINE_VISIBILITY - __hash_iterator(__node_pointer __node) _NOEXCEPT - : __node_(__node) - {} -#endif - - template friend class __hash_table; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator; - template friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; - template friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator -{ - typedef _ConstNodePtr __node_pointer; - - __node_pointer __node_; - - typedef typename remove_const< - typename pointer_traits<__node_pointer>::element_type - >::type __node; - -public: - typedef forward_iterator_tag iterator_category; - typedef typename __node::value_type value_type; - typedef typename pointer_traits<__node_pointer>::difference_type difference_type; - typedef const value_type& reference; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__node> -#else - rebind<__node>::other -#endif - __non_const_node_pointer; - typedef __hash_iterator<__non_const_node_pointer> __non_const_iterator; - - _LIBCPP_INLINE_VISIBILITY __hash_const_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER > 11 - : __node_(nullptr) -#endif - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_i(this); -#endif - } - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator(const __non_const_iterator& __x) _NOEXCEPT - : __node_(__x.__node_) - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__iterator_copy(this, &__x); -#endif - } - -#if _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator(const __hash_const_iterator& __i) - : __node_(__i.__node_) - { - __get_db()->__iterator_copy(this, &__i); - } - - _LIBCPP_INLINE_VISIBILITY - ~__hash_const_iterator() - { - __get_db()->__erase_i(this); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator& operator=(const __hash_const_iterator& __i) - { - if (this != &__i) - { - __get_db()->__iterator_copy(this, &__i); - __node_ = __i.__node_; - } - return *this; - } - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container const_iterator"); -#endif - return __node_->__value_; - } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container const_iterator"); -#endif - return pointer_traits::pointer_to(__node_->__value_); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator& operator++() - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable unordered container const_iterator"); -#endif - __node_ = __node_->__next_; - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator operator++(int) - { - __hash_const_iterator __t(*this); - ++(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_const_iterator& __x, const __hash_const_iterator& __y) - { - return __x.__node_ == __y.__node_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_const_iterator& __x, const __hash_const_iterator& __y) - {return !(__x == __y);} - -private: -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator(__node_pointer __node, const void* __c) _NOEXCEPT - : __node_(__node) - { - __get_db()->__insert_ic(this, __c); - } -#else - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator(__node_pointer __node) _NOEXCEPT - : __node_(__node) - {} -#endif - - template friend class __hash_table; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; - template friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; - template friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; -}; - -template class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; - -template -class _LIBCPP_TYPE_VIS_ONLY __hash_local_iterator -{ - typedef _NodePtr __node_pointer; - - __node_pointer __node_; - size_t __bucket_; - size_t __bucket_count_; - - typedef pointer_traits<__node_pointer> __pointer_traits; -public: - typedef forward_iterator_tag iterator_category; - typedef typename __pointer_traits::element_type::value_type value_type; - typedef typename __pointer_traits::difference_type difference_type; - typedef value_type& reference; - typedef typename __pointer_traits::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY __hash_local_iterator() _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_i(this); -#endif - } - -#if _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator(const __hash_local_iterator& __i) - : __node_(__i.__node_), - __bucket_(__i.__bucket_), - __bucket_count_(__i.__bucket_count_) - { - __get_db()->__iterator_copy(this, &__i); - } - - _LIBCPP_INLINE_VISIBILITY - ~__hash_local_iterator() - { - __get_db()->__erase_i(this); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator& operator=(const __hash_local_iterator& __i) - { - if (this != &__i) - { - __get_db()->__iterator_copy(this, &__i); - __node_ = __i.__node_; - __bucket_ = __i.__bucket_; - __bucket_count_ = __i.__bucket_count_; - } - return *this; - } - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container local_iterator"); -#endif - return __node_->__value_; - } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container local_iterator"); -#endif - return pointer_traits::pointer_to(__node_->__value_); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator& operator++() - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable unordered container local_iterator"); -#endif - __node_ = __node_->__next_; - if (__node_ != nullptr && __constrain_hash(__node_->__hash_, __bucket_count_) != __bucket_) - __node_ = nullptr; - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator operator++(int) - { - __hash_local_iterator __t(*this); - ++(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_local_iterator& __x, const __hash_local_iterator& __y) - { - return __x.__node_ == __y.__node_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_local_iterator& __x, const __hash_local_iterator& __y) - {return !(__x == __y);} - -private: -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator(__node_pointer __node, size_t __bucket, - size_t __bucket_count, const void* __c) _NOEXCEPT - : __node_(__node), - __bucket_(__bucket), - __bucket_count_(__bucket_count) - { - __get_db()->__insert_ic(this, __c); - if (__node_ != nullptr) - __node_ = __node_->__next_; - } -#else - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator(__node_pointer __node, size_t __bucket, - size_t __bucket_count) _NOEXCEPT - : __node_(__node), - __bucket_(__bucket), - __bucket_count_(__bucket_count) - { - if (__node_ != nullptr) - __node_ = __node_->__next_; - } -#endif - template friend class __hash_table; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator -{ - typedef _ConstNodePtr __node_pointer; - - __node_pointer __node_; - size_t __bucket_; - size_t __bucket_count_; - - typedef pointer_traits<__node_pointer> __pointer_traits; - typedef typename __pointer_traits::element_type __node; - typedef typename remove_const<__node>::type __non_const_node; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__non_const_node> -#else - rebind<__non_const_node>::other -#endif - __non_const_node_pointer; - typedef __hash_local_iterator<__non_const_node_pointer> - __non_const_iterator; -public: - typedef forward_iterator_tag iterator_category; - typedef typename remove_const< - typename __pointer_traits::element_type::value_type - >::type value_type; - typedef typename __pointer_traits::difference_type difference_type; - typedef const value_type& reference; - typedef typename __pointer_traits::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY __hash_const_local_iterator() _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_i(this); -#endif - } - - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator(const __non_const_iterator& __x) _NOEXCEPT - : __node_(__x.__node_), - __bucket_(__x.__bucket_), - __bucket_count_(__x.__bucket_count_) - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__iterator_copy(this, &__x); -#endif - } - -#if _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator(const __hash_const_local_iterator& __i) - : __node_(__i.__node_), - __bucket_(__i.__bucket_), - __bucket_count_(__i.__bucket_count_) - { - __get_db()->__iterator_copy(this, &__i); - } - - _LIBCPP_INLINE_VISIBILITY - ~__hash_const_local_iterator() - { - __get_db()->__erase_i(this); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator& operator=(const __hash_const_local_iterator& __i) - { - if (this != &__i) - { - __get_db()->__iterator_copy(this, &__i); - __node_ = __i.__node_; - __bucket_ = __i.__bucket_; - __bucket_count_ = __i.__bucket_count_; - } - return *this; - } - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); -#endif - return __node_->__value_; - } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); -#endif - return pointer_traits::pointer_to(__node_->__value_); - } - - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator& operator++() - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable unordered container const_local_iterator"); -#endif - __node_ = __node_->__next_; - if (__node_ != nullptr && __constrain_hash(__node_->__hash_, __bucket_count_) != __bucket_) - __node_ = nullptr; - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator operator++(int) - { - __hash_const_local_iterator __t(*this); - ++(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_const_local_iterator& __x, const __hash_const_local_iterator& __y) - { - return __x.__node_ == __y.__node_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_const_local_iterator& __x, const __hash_const_local_iterator& __y) - {return !(__x == __y);} - -private: -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator(__node_pointer __node, size_t __bucket, - size_t __bucket_count, const void* __c) _NOEXCEPT - : __node_(__node), - __bucket_(__bucket), - __bucket_count_(__bucket_count) - { - __get_db()->__insert_ic(this, __c); - if (__node_ != nullptr) - __node_ = __node_->__next_; - } -#else - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator(__node_pointer __node, size_t __bucket, - size_t __bucket_count) _NOEXCEPT - : __node_(__node), - __bucket_(__bucket), - __bucket_count_(__bucket_count) - { - if (__node_ != nullptr) - __node_ = __node_->__next_; - } -#endif - template friend class __hash_table; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; -}; - -template -class __bucket_list_deallocator -{ - typedef _Alloc allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename __alloc_traits::size_type size_type; - - __compressed_pair __data_; -public: - typedef typename __alloc_traits::pointer pointer; - - _LIBCPP_INLINE_VISIBILITY - __bucket_list_deallocator() - _NOEXCEPT_(is_nothrow_default_constructible::value) - : __data_(0) {} - - _LIBCPP_INLINE_VISIBILITY - __bucket_list_deallocator(const allocator_type& __a, size_type __size) - _NOEXCEPT_(is_nothrow_copy_constructible::value) - : __data_(__size, __a) {} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - _LIBCPP_INLINE_VISIBILITY - __bucket_list_deallocator(__bucket_list_deallocator&& __x) - _NOEXCEPT_(is_nothrow_move_constructible::value) - : __data_(_VSTD::move(__x.__data_)) - { - __x.size() = 0; - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - _LIBCPP_INLINE_VISIBILITY - size_type& size() _NOEXCEPT {return __data_.first();} - _LIBCPP_INLINE_VISIBILITY - size_type size() const _NOEXCEPT {return __data_.first();} - - _LIBCPP_INLINE_VISIBILITY - allocator_type& __alloc() _NOEXCEPT {return __data_.second();} - _LIBCPP_INLINE_VISIBILITY - const allocator_type& __alloc() const _NOEXCEPT {return __data_.second();} - - _LIBCPP_INLINE_VISIBILITY - void operator()(pointer __p) _NOEXCEPT - { - __alloc_traits::deallocate(__alloc(), __p, size()); - } -}; - -template class __hash_map_node_destructor; - -template -class __hash_node_destructor -{ - typedef _Alloc allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename __alloc_traits::value_type::value_type value_type; -public: - typedef typename __alloc_traits::pointer pointer; -private: - - allocator_type& __na_; - - __hash_node_destructor& operator=(const __hash_node_destructor&); - -public: - bool __value_constructed; - - _LIBCPP_INLINE_VISIBILITY - explicit __hash_node_destructor(allocator_type& __na, - bool __constructed = false) _NOEXCEPT - : __na_(__na), - __value_constructed(__constructed) - {} - - _LIBCPP_INLINE_VISIBILITY - void operator()(pointer __p) _NOEXCEPT - { - if (__value_constructed) - __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_)); - if (__p) - __alloc_traits::deallocate(__na_, __p, 1); - } - - template friend class __hash_map_node_destructor; -}; - -template -class __hash_table -{ -public: - typedef _Tp value_type; - typedef _Hash hasher; - typedef _Equal key_equal; - typedef _Alloc allocator_type; - -private: - typedef allocator_traits __alloc_traits; -public: - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; - typedef typename __alloc_traits::size_type size_type; - typedef typename __alloc_traits::difference_type difference_type; -public: - // Create __node - typedef __hash_node __node; - typedef typename __rebind_alloc_helper<__alloc_traits, __node>::type __node_allocator; - typedef allocator_traits<__node_allocator> __node_traits; - typedef typename __node_traits::pointer __node_pointer; - typedef typename __node_traits::pointer __node_const_pointer; - typedef __hash_node_base<__node_pointer> __first_node; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__first_node> -#else - rebind<__first_node>::other -#endif - __node_base_pointer; - -private: - - typedef typename __rebind_alloc_helper<__node_traits, __node_pointer>::type __pointer_allocator; - typedef __bucket_list_deallocator<__pointer_allocator> __bucket_list_deleter; - typedef unique_ptr<__node_pointer[], __bucket_list_deleter> __bucket_list; - typedef allocator_traits<__pointer_allocator> __pointer_alloc_traits; - typedef typename __bucket_list_deleter::pointer __node_pointer_pointer; - - // --- Member data begin --- - __bucket_list __bucket_list_; - __compressed_pair<__first_node, __node_allocator> __p1_; - __compressed_pair __p2_; - __compressed_pair __p3_; - // --- Member data end --- - - _LIBCPP_INLINE_VISIBILITY - size_type& size() _NOEXCEPT {return __p2_.first();} -public: - _LIBCPP_INLINE_VISIBILITY - size_type size() const _NOEXCEPT {return __p2_.first();} - - _LIBCPP_INLINE_VISIBILITY - hasher& hash_function() _NOEXCEPT {return __p2_.second();} - _LIBCPP_INLINE_VISIBILITY - const hasher& hash_function() const _NOEXCEPT {return __p2_.second();} - - _LIBCPP_INLINE_VISIBILITY - float& max_load_factor() _NOEXCEPT {return __p3_.first();} - _LIBCPP_INLINE_VISIBILITY - float max_load_factor() const _NOEXCEPT {return __p3_.first();} - - _LIBCPP_INLINE_VISIBILITY - key_equal& key_eq() _NOEXCEPT {return __p3_.second();} - _LIBCPP_INLINE_VISIBILITY - const key_equal& key_eq() const _NOEXCEPT {return __p3_.second();} - - _LIBCPP_INLINE_VISIBILITY - __node_allocator& __node_alloc() _NOEXCEPT {return __p1_.second();} - _LIBCPP_INLINE_VISIBILITY - const __node_allocator& __node_alloc() const _NOEXCEPT - {return __p1_.second();} - -public: - typedef __hash_iterator<__node_pointer> iterator; - typedef __hash_const_iterator<__node_pointer> const_iterator; - typedef __hash_local_iterator<__node_pointer> local_iterator; - typedef __hash_const_local_iterator<__node_pointer> const_local_iterator; - - __hash_table() - _NOEXCEPT_( - is_nothrow_default_constructible<__bucket_list>::value && - is_nothrow_default_constructible<__first_node>::value && - is_nothrow_default_constructible<__node_allocator>::value && - is_nothrow_default_constructible::value && - is_nothrow_default_constructible::value); - __hash_table(const hasher& __hf, const key_equal& __eql); - __hash_table(const hasher& __hf, const key_equal& __eql, - const allocator_type& __a); - explicit __hash_table(const allocator_type& __a); - __hash_table(const __hash_table& __u); - __hash_table(const __hash_table& __u, const allocator_type& __a); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - __hash_table(__hash_table&& __u) - _NOEXCEPT_( - is_nothrow_move_constructible<__bucket_list>::value && - is_nothrow_move_constructible<__first_node>::value && - is_nothrow_move_constructible<__node_allocator>::value && - is_nothrow_move_constructible::value && - is_nothrow_move_constructible::value); - __hash_table(__hash_table&& __u, const allocator_type& __a); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~__hash_table(); - - __hash_table& operator=(const __hash_table& __u); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - __hash_table& operator=(__hash_table&& __u) - _NOEXCEPT_( - __node_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable<__node_allocator>::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value); -#endif - template - void __assign_unique(_InputIterator __first, _InputIterator __last); - template - void __assign_multi(_InputIterator __first, _InputIterator __last); - - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const _NOEXCEPT - { - return allocator_traits<__pointer_allocator>::max_size( - __bucket_list_.get_deleter().__alloc()); - } - - pair __node_insert_unique(__node_pointer __nd); - iterator __node_insert_multi(__node_pointer __nd); - iterator __node_insert_multi(const_iterator __p, - __node_pointer __nd); - -#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - template - pair __emplace_unique(_Args&&... __args); - template - iterator __emplace_multi(_Args&&... __args); - template - iterator __emplace_hint_multi(const_iterator __p, _Args&&... __args); -#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - - pair __insert_unique(const value_type& __x); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template - pair __insert_unique(_Pp&& __x); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template - iterator __insert_multi(_Pp&& __x); - template - iterator __insert_multi(const_iterator __p, _Pp&& __x); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - iterator __insert_multi(const value_type& __x); - iterator __insert_multi(const_iterator __p, const value_type& __x); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - void clear() _NOEXCEPT; - void rehash(size_type __n); - _LIBCPP_INLINE_VISIBILITY void reserve(size_type __n) - {rehash(static_cast(ceil(__n / max_load_factor())));} - - _LIBCPP_INLINE_VISIBILITY - size_type bucket_count() const _NOEXCEPT - { - return __bucket_list_.get_deleter().size(); - } - - iterator begin() _NOEXCEPT; - iterator end() _NOEXCEPT; - const_iterator begin() const _NOEXCEPT; - const_iterator end() const _NOEXCEPT; - - template - _LIBCPP_INLINE_VISIBILITY - size_type bucket(const _Key& __k) const - { - _LIBCPP_ASSERT(bucket_count() > 0, - "unordered container::bucket(key) called when bucket_count() == 0"); - return __constrain_hash(hash_function()(__k), bucket_count()); - } - - template - iterator find(const _Key& __x); - template - const_iterator find(const _Key& __x) const; - - typedef __hash_node_destructor<__node_allocator> _Dp; - typedef unique_ptr<__node, _Dp> __node_holder; - - iterator erase(const_iterator __p); - iterator erase(const_iterator __first, const_iterator __last); - template - size_type __erase_unique(const _Key& __k); - template - size_type __erase_multi(const _Key& __k); - __node_holder remove(const_iterator __p) _NOEXCEPT; - - template - size_type __count_unique(const _Key& __k) const; - template - size_type __count_multi(const _Key& __k) const; - - template - pair - __equal_range_unique(const _Key& __k); - template - pair - __equal_range_unique(const _Key& __k) const; - - template - pair - __equal_range_multi(const _Key& __k); - template - pair - __equal_range_multi(const _Key& __k) const; - - void swap(__hash_table& __u) - _NOEXCEPT_( - (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value || - __is_nothrow_swappable<__pointer_allocator>::value) && - (!__node_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value) && - __is_nothrow_swappable::value && - __is_nothrow_swappable::value); - - _LIBCPP_INLINE_VISIBILITY - size_type max_bucket_count() const _NOEXCEPT - {return __pointer_alloc_traits::max_size(__bucket_list_.get_deleter().__alloc());} - size_type bucket_size(size_type __n) const; - _LIBCPP_INLINE_VISIBILITY float load_factor() const _NOEXCEPT - { - size_type __bc = bucket_count(); - return __bc != 0 ? (float)size() / __bc : 0.f; - } - _LIBCPP_INLINE_VISIBILITY void max_load_factor(float __mlf) _NOEXCEPT - { - _LIBCPP_ASSERT(__mlf > 0, - "unordered container::max_load_factor(lf) called with lf <= 0"); - max_load_factor() = _VSTD::max(__mlf, load_factor()); - } - - _LIBCPP_INLINE_VISIBILITY - local_iterator - begin(size_type __n) - { - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::begin(n) called with n >= bucket_count()"); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return local_iterator(__bucket_list_[__n], __n, bucket_count(), this); -#else - return local_iterator(__bucket_list_[__n], __n, bucket_count()); -#endif - } - - _LIBCPP_INLINE_VISIBILITY - local_iterator - end(size_type __n) - { - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::end(n) called with n >= bucket_count()"); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return local_iterator(nullptr, __n, bucket_count(), this); -#else - return local_iterator(nullptr, __n, bucket_count()); -#endif - } - - _LIBCPP_INLINE_VISIBILITY - const_local_iterator - cbegin(size_type __n) const - { - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::cbegin(n) called with n >= bucket_count()"); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return const_local_iterator(__bucket_list_[__n], __n, bucket_count(), this); -#else - return const_local_iterator(__bucket_list_[__n], __n, bucket_count()); -#endif - } - - _LIBCPP_INLINE_VISIBILITY - const_local_iterator - cend(size_type __n) const - { - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::cend(n) called with n >= bucket_count()"); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return const_local_iterator(nullptr, __n, bucket_count(), this); -#else - return const_local_iterator(nullptr, __n, bucket_count()); -#endif - } - -#if _LIBCPP_DEBUG_LEVEL >= 2 - - bool __dereferenceable(const const_iterator* __i) const; - bool __decrementable(const const_iterator* __i) const; - bool __addable(const const_iterator* __i, ptrdiff_t __n) const; - bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const; - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - -private: - void __rehash(size_type __n); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - template - __node_holder __construct_node(_Args&& ...__args); -#endif // _LIBCPP_HAS_NO_VARIADICS - __node_holder __construct_node(value_type&& __v, size_t __hash); -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - __node_holder __construct_node(const value_type& __v); -#endif - __node_holder __construct_node(const value_type& __v, size_t __hash); - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __hash_table& __u) - {__copy_assign_alloc(__u, integral_constant());} - void __copy_assign_alloc(const __hash_table& __u, true_type); - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __hash_table&, false_type) {} - - void __move_assign(__hash_table& __u, false_type); - void __move_assign(__hash_table& __u, true_type) - _NOEXCEPT_( - is_nothrow_move_assignable<__node_allocator>::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value); - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__hash_table& __u) - _NOEXCEPT_( - !__node_traits::propagate_on_container_move_assignment::value || - (is_nothrow_move_assignable<__pointer_allocator>::value && - is_nothrow_move_assignable<__node_allocator>::value)) - {__move_assign_alloc(__u, integral_constant());} - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__hash_table& __u, true_type) - _NOEXCEPT_( - is_nothrow_move_assignable<__pointer_allocator>::value && - is_nothrow_move_assignable<__node_allocator>::value) - { - __bucket_list_.get_deleter().__alloc() = - _VSTD::move(__u.__bucket_list_.get_deleter().__alloc()); - __node_alloc() = _VSTD::move(__u.__node_alloc()); - } - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__hash_table&, false_type) _NOEXCEPT {} - - template - _LIBCPP_INLINE_VISIBILITY - static - void - __swap_alloc(_Ap& __x, _Ap& __y) - _NOEXCEPT_( - !allocator_traits<_Ap>::propagate_on_container_swap::value || - __is_nothrow_swappable<_Ap>::value) - { - __swap_alloc(__x, __y, - integral_constant::propagate_on_container_swap::value - >()); - } - - template - _LIBCPP_INLINE_VISIBILITY - static - void - __swap_alloc(_Ap& __x, _Ap& __y, true_type) - _NOEXCEPT_(__is_nothrow_swappable<_Ap>::value) - { - using _VSTD::swap; - swap(__x, __y); - } - - template - _LIBCPP_INLINE_VISIBILITY - static - void - __swap_alloc(_Ap&, _Ap&, false_type) _NOEXCEPT {} - - void __deallocate(__node_pointer __np) _NOEXCEPT; - __node_pointer __detach() _NOEXCEPT; - - template friend class _LIBCPP_TYPE_VIS_ONLY unordered_map; - template friend class _LIBCPP_TYPE_VIS_ONLY unordered_multimap; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table() - _NOEXCEPT_( - is_nothrow_default_constructible<__bucket_list>::value && - is_nothrow_default_constructible<__first_node>::value && - is_nothrow_default_constructible::value && - is_nothrow_default_constructible::value) - : __p2_(0), - __p3_(1.0f) -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const hasher& __hf, - const key_equal& __eql) - : __bucket_list_(nullptr, __bucket_list_deleter()), - __p1_(), - __p2_(0, __hf), - __p3_(1.0f, __eql) -{ -} - -template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const hasher& __hf, - const key_equal& __eql, - const allocator_type& __a) - : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), - __p1_(__node_allocator(__a)), - __p2_(0, __hf), - __p3_(1.0f, __eql) -{ -} - -template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const allocator_type& __a) - : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), - __p1_(__node_allocator(__a)), - __p2_(0), - __p3_(1.0f) -{ -} - -template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u) - : __bucket_list_(nullptr, - __bucket_list_deleter(allocator_traits<__pointer_allocator>:: - select_on_container_copy_construction( - __u.__bucket_list_.get_deleter().__alloc()), 0)), - __p1_(allocator_traits<__node_allocator>:: - select_on_container_copy_construction(__u.__node_alloc())), - __p2_(0, __u.hash_function()), - __p3_(__u.__p3_) -{ -} - -template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u, - const allocator_type& __a) - : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), - __p1_(__node_allocator(__a)), - __p2_(0, __u.hash_function()), - __p3_(__u.__p3_) -{ -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u) - _NOEXCEPT_( - is_nothrow_move_constructible<__bucket_list>::value && - is_nothrow_move_constructible<__first_node>::value && - is_nothrow_move_constructible::value && - is_nothrow_move_constructible::value) - : __bucket_list_(_VSTD::move(__u.__bucket_list_)), - __p1_(_VSTD::move(__u.__p1_)), - __p2_(_VSTD::move(__u.__p2_)), - __p3_(_VSTD::move(__u.__p3_)) -{ - if (size() > 0) - { - __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash_, bucket_count())] = - static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__p1_.first())); - __u.__p1_.first().__next_ = nullptr; - __u.size() = 0; - } -} - -template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u, - const allocator_type& __a) - : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), - __p1_(__node_allocator(__a)), - __p2_(0, _VSTD::move(__u.hash_function())), - __p3_(_VSTD::move(__u.__p3_)) -{ - if (__a == allocator_type(__u.__node_alloc())) - { - __bucket_list_.reset(__u.__bucket_list_.release()); - __bucket_list_.get_deleter().size() = __u.__bucket_list_.get_deleter().size(); - __u.__bucket_list_.get_deleter().size() = 0; - if (__u.size() > 0) - { - __p1_.first().__next_ = __u.__p1_.first().__next_; - __u.__p1_.first().__next_ = nullptr; - __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash_, bucket_count())] = - static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__p1_.first())); - size() = __u.size(); - __u.size() = 0; - } - } -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -__hash_table<_Tp, _Hash, _Equal, _Alloc>::~__hash_table() -{ - __deallocate(__p1_.first().__next_); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__erase_c(this); -#endif -} - -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__copy_assign_alloc( - const __hash_table& __u, true_type) -{ - if (__node_alloc() != __u.__node_alloc()) - { - clear(); - __bucket_list_.reset(); - __bucket_list_.get_deleter().size() = 0; - } - __bucket_list_.get_deleter().__alloc() = __u.__bucket_list_.get_deleter().__alloc(); - __node_alloc() = __u.__node_alloc(); -} - -template -__hash_table<_Tp, _Hash, _Equal, _Alloc>& -__hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(const __hash_table& __u) -{ - if (this != &__u) - { - __copy_assign_alloc(__u); - hash_function() = __u.hash_function(); - key_eq() = __u.key_eq(); - max_load_factor() = __u.max_load_factor(); - __assign_multi(__u.begin(), __u.end()); - } - return *this; -} - -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__deallocate(__node_pointer __np) - _NOEXCEPT -{ - __node_allocator& __na = __node_alloc(); - while (__np != nullptr) - { - __node_pointer __next = __np->__next_; -#if _LIBCPP_DEBUG_LEVEL >= 2 - __c_node* __c = __get_db()->__find_c_and_lock(this); - for (__i_node** __p = __c->end_; __p != __c->beg_; ) - { - --__p; - iterator* __i = static_cast((*__p)->__i_); - if (__i->__node_ == __np) - { - (*__p)->__c_ = nullptr; - if (--__c->end_ != __p) - memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); - } - } - __get_db()->unlock(); -#endif - __node_traits::destroy(__na, _VSTD::addressof(__np->__value_)); - __node_traits::deallocate(__na, __np, 1); - __np = __next; - } -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_pointer -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__detach() _NOEXCEPT -{ - size_type __bc = bucket_count(); - for (size_type __i = 0; __i < __bc; ++__i) - __bucket_list_[__i] = nullptr; - size() = 0; - __node_pointer __cache = __p1_.first().__next_; - __p1_.first().__next_ = nullptr; - return __cache; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( - __hash_table& __u, true_type) - _NOEXCEPT_( - is_nothrow_move_assignable<__node_allocator>::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value) -{ - clear(); - __bucket_list_.reset(__u.__bucket_list_.release()); - __bucket_list_.get_deleter().size() = __u.__bucket_list_.get_deleter().size(); - __u.__bucket_list_.get_deleter().size() = 0; - __move_assign_alloc(__u); - size() = __u.size(); - hash_function() = _VSTD::move(__u.hash_function()); - max_load_factor() = __u.max_load_factor(); - key_eq() = _VSTD::move(__u.key_eq()); - __p1_.first().__next_ = __u.__p1_.first().__next_; - if (size() > 0) - { - __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash_, bucket_count())] = - static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__p1_.first())); - __u.__p1_.first().__next_ = nullptr; - __u.size() = 0; - } -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->swap(this, &__u); -#endif -} - -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( - __hash_table& __u, false_type) -{ - if (__node_alloc() == __u.__node_alloc()) - __move_assign(__u, true_type()); - else - { - hash_function() = _VSTD::move(__u.hash_function()); - key_eq() = _VSTD::move(__u.key_eq()); - max_load_factor() = __u.max_load_factor(); - if (bucket_count() != 0) - { - __node_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - const_iterator __i = __u.begin(); - while (__cache != nullptr && __u.size() != 0) - { - __cache->__value_ = _VSTD::move(__u.remove(__i++)->__value_); - __node_pointer __next = __cache->__next_; - __node_insert_multi(__cache); - __cache = __next; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __deallocate(__cache); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __deallocate(__cache); - } - const_iterator __i = __u.begin(); - while (__u.size() != 0) - { - __node_holder __h = - __construct_node(_VSTD::move(__u.remove(__i++)->__value_)); - __node_insert_multi(__h.get()); - __h.release(); - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__hash_table<_Tp, _Hash, _Equal, _Alloc>& -__hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(__hash_table&& __u) - _NOEXCEPT_( - __node_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable<__node_allocator>::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value) -{ - __move_assign(__u, integral_constant()); - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_unique(_InputIterator __first, - _InputIterator __last) -{ - if (bucket_count() != 0) - { - __node_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __cache != nullptr && __first != __last; ++__first) - { - __cache->__value_ = *__first; - __node_pointer __next = __cache->__next_; - __node_insert_unique(__cache); - __cache = __next; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __deallocate(__cache); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __deallocate(__cache); - } - for (; __first != __last; ++__first) - __insert_unique(*__first); -} - -template -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_multi(_InputIterator __first, - _InputIterator __last) -{ - if (bucket_count() != 0) - { - __node_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __cache != nullptr && __first != __last; ++__first) - { - __cache->__value_ = *__first; - __node_pointer __next = __cache->__next_; - __node_insert_multi(__cache); - __cache = __next; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __deallocate(__cache); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __deallocate(__cache); - } - for (; __first != __last; ++__first) - __insert_multi(*__first); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() _NOEXCEPT -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__p1_.first().__next_, this); -#else - return iterator(__p1_.first().__next_); -#endif -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::end() _NOEXCEPT -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(nullptr, this); -#else - return iterator(nullptr); -#endif -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() const _NOEXCEPT -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - return const_iterator(__p1_.first().__next_, this); -#else - return const_iterator(__p1_.first().__next_); -#endif -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::end() const _NOEXCEPT -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - return const_iterator(nullptr, this); -#else - return const_iterator(nullptr); -#endif -} - -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::clear() _NOEXCEPT -{ - if (size() > 0) - { - __deallocate(__p1_.first().__next_); - __p1_.first().__next_ = nullptr; - size_type __bc = bucket_count(); - for (size_type __i = 0; __i < __bc; ++__i) - __bucket_list_[__i] = nullptr; - size() = 0; - } -} - -template -pair::iterator, bool> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique(__node_pointer __nd) -{ - __nd->__hash_ = hash_function()(__nd->__value_); - size_type __bc = bucket_count(); - bool __inserted = false; - __node_pointer __ndptr; - size_t __chash; - if (__bc != 0) - { - __chash = __constrain_hash(__nd->__hash_, __bc); - __ndptr = __bucket_list_[__chash]; - if (__ndptr != nullptr) - { - for (__ndptr = __ndptr->__next_; __ndptr != nullptr && - __constrain_hash(__ndptr->__hash_, __bc) == __chash; - __ndptr = __ndptr->__next_) - { - if (key_eq()(__ndptr->__value_, __nd->__value_)) - goto __done; - } - } - } - { - if (size()+1 > __bc * max_load_factor() || __bc == 0) - { - rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), - size_type(ceil(float(size() + 1) / max_load_factor())))); - __bc = bucket_count(); - __chash = __constrain_hash(__nd->__hash_, __bc); - } - // insert_after __bucket_list_[__chash], or __first_node if bucket is null - __node_pointer __pn = __bucket_list_[__chash]; - if (__pn == nullptr) - { - __pn = static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__p1_.first())); - __nd->__next_ = __pn->__next_; - __pn->__next_ = __nd; - // fix up __bucket_list_ - __bucket_list_[__chash] = __pn; - if (__nd->__next_ != nullptr) - __bucket_list_[__constrain_hash(__nd->__next_->__hash_, __bc)] = __nd; - } - else - { - __nd->__next_ = __pn->__next_; - __pn->__next_ = __nd; - } - __ndptr = __nd; - // increment size - ++size(); - __inserted = true; - } -__done: -#if _LIBCPP_DEBUG_LEVEL >= 2 - return pair(iterator(__ndptr, this), __inserted); -#else - return pair(iterator(__ndptr), __inserted); -#endif -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi(__node_pointer __cp) -{ - __cp->__hash_ = hash_function()(__cp->__value_); - size_type __bc = bucket_count(); - if (size()+1 > __bc * max_load_factor() || __bc == 0) - { - rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), - size_type(ceil(float(size() + 1) / max_load_factor())))); - __bc = bucket_count(); - } - size_t __chash = __constrain_hash(__cp->__hash_, __bc); - __node_pointer __pn = __bucket_list_[__chash]; - if (__pn == nullptr) - { - __pn = static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__p1_.first())); - __cp->__next_ = __pn->__next_; - __pn->__next_ = __cp; - // fix up __bucket_list_ - __bucket_list_[__chash] = __pn; - if (__cp->__next_ != nullptr) - __bucket_list_[__constrain_hash(__cp->__next_->__hash_, __bc)] = __cp; - } - else - { - for (bool __found = false; __pn->__next_ != nullptr && - __constrain_hash(__pn->__next_->__hash_, __bc) == __chash; - __pn = __pn->__next_) - { - // __found key_eq() action - // false false loop - // true true loop - // false true set __found to true - // true false break - if (__found != (__pn->__next_->__hash_ == __cp->__hash_ && - key_eq()(__pn->__next_->__value_, __cp->__value_))) - { - if (!__found) - __found = true; - else - break; - } - } - __cp->__next_ = __pn->__next_; - __pn->__next_ = __cp; - if (__cp->__next_ != nullptr) - { - size_t __nhash = __constrain_hash(__cp->__next_->__hash_, __bc); - if (__nhash != __chash) - __bucket_list_[__nhash] = __cp; - } - } - ++size(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__cp, this); -#else - return iterator(__cp); -#endif -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi( - const_iterator __p, __node_pointer __cp) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" - " referring to this unordered container"); -#endif - if (__p != end() && key_eq()(*__p, __cp->__value_)) - { - __node_pointer __np = __p.__node_; - __cp->__hash_ = __np->__hash_; - size_type __bc = bucket_count(); - if (size()+1 > __bc * max_load_factor() || __bc == 0) - { - rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), - size_type(ceil(float(size() + 1) / max_load_factor())))); - __bc = bucket_count(); - } - size_t __chash = __constrain_hash(__cp->__hash_, __bc); - __node_pointer __pp = __bucket_list_[__chash]; - while (__pp->__next_ != __np) - __pp = __pp->__next_; - __cp->__next_ = __np; - __pp->__next_ = __cp; - ++size(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__cp, this); -#else - return iterator(__cp); -#endif - } - return __node_insert_multi(__cp); -} - -template -pair::iterator, bool> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_unique(const value_type& __x) -{ - size_t __hash = hash_function()(__x); - size_type __bc = bucket_count(); - bool __inserted = false; - __node_pointer __nd; - size_t __chash; - if (__bc != 0) - { - __chash = __constrain_hash(__hash, __bc); - __nd = __bucket_list_[__chash]; - if (__nd != nullptr) - { - for (__nd = __nd->__next_; __nd != nullptr && - __constrain_hash(__nd->__hash_, __bc) == __chash; - __nd = __nd->__next_) - { - if (key_eq()(__nd->__value_, __x)) - goto __done; - } - } - } - { - __node_holder __h = __construct_node(__x, __hash); - if (size()+1 > __bc * max_load_factor() || __bc == 0) - { - rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), - size_type(ceil(float(size() + 1) / max_load_factor())))); - __bc = bucket_count(); - __chash = __constrain_hash(__hash, __bc); - } - // insert_after __bucket_list_[__chash], or __first_node if bucket is null - __node_pointer __pn = __bucket_list_[__chash]; - if (__pn == nullptr) - { - __pn = static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__p1_.first())); - __h->__next_ = __pn->__next_; - __pn->__next_ = __h.get(); - // fix up __bucket_list_ - __bucket_list_[__chash] = __pn; - if (__h->__next_ != nullptr) - __bucket_list_[__constrain_hash(__h->__next_->__hash_, __bc)] = __h.get(); - } - else - { - __h->__next_ = __pn->__next_; - __pn->__next_ = __h.get(); - } - __nd = __h.release(); - // increment size - ++size(); - __inserted = true; - } -__done: -#if _LIBCPP_DEBUG_LEVEL >= 2 - return pair(iterator(__nd, this), __inserted); -#else - return pair(iterator(__nd), __inserted); -#endif -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -pair::iterator, bool> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique(_Args&&... __args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - pair __r = __node_insert_unique(__h.get()); - if (__r.second) - __h.release(); - return __r; -} - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_multi(_Args&&... __args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - iterator __r = __node_insert_multi(__h.get()); - __h.release(); - return __r; -} - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_hint_multi( - const_iterator __p, _Args&&... __args) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" - " referring to this unordered container"); -#endif - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - iterator __r = __node_insert_multi(__p, __h.get()); - __h.release(); - return __r; -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -template -template -pair::iterator, bool> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_unique(_Pp&& __x) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Pp>(__x)); - pair __r = __node_insert_unique(__h.get()); - if (__r.second) - __h.release(); - return __r; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_multi(_Pp&& __x) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Pp>(__x)); - iterator __r = __node_insert_multi(__h.get()); - __h.release(); - return __r; -} - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_multi(const_iterator __p, - _Pp&& __x) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "unordered container::insert(const_iterator, rvalue) called with an iterator not" - " referring to this unordered container"); -#endif - __node_holder __h = __construct_node(_VSTD::forward<_Pp>(__x)); - iterator __r = __node_insert_multi(__p, __h.get()); - __h.release(); - return __r; -} - -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_multi(const value_type& __x) -{ - __node_holder __h = __construct_node(__x); - iterator __r = __node_insert_multi(__h.get()); - __h.release(); - return __r; -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_multi(const_iterator __p, - const value_type& __x) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "unordered container::insert(const_iterator, lvalue) called with an iterator not" - " referring to this unordered container"); -#endif - __node_holder __h = __construct_node(__x); - iterator __r = __node_insert_multi(__p, __h.get()); - __h.release(); - return __r; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::rehash(size_type __n) -{ - if (__n == 1) - __n = 2; - else if (__n & (__n - 1)) - __n = __next_prime(__n); - size_type __bc = bucket_count(); - if (__n > __bc) - __rehash(__n); - else if (__n < __bc) - { - __n = _VSTD::max - ( - __n, - __is_hash_power2(__bc) ? __next_hash_pow2(size_t(ceil(float(size()) / max_load_factor()))) : - __next_prime(size_t(ceil(float(size()) / max_load_factor()))) - ); - if (__n < __bc) - __rehash(__n); - } -} - -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__rehash(size_type __nbc) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__invalidate_all(this); -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - __pointer_allocator& __npa = __bucket_list_.get_deleter().__alloc(); - __bucket_list_.reset(__nbc > 0 ? - __pointer_alloc_traits::allocate(__npa, __nbc) : nullptr); - __bucket_list_.get_deleter().size() = __nbc; - if (__nbc > 0) - { - for (size_type __i = 0; __i < __nbc; ++__i) - __bucket_list_[__i] = nullptr; - __node_pointer __pp(static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__p1_.first()))); - __node_pointer __cp = __pp->__next_; - if (__cp != nullptr) - { - size_type __chash = __constrain_hash(__cp->__hash_, __nbc); - __bucket_list_[__chash] = __pp; - size_type __phash = __chash; - for (__pp = __cp, __cp = __cp->__next_; __cp != nullptr; - __cp = __pp->__next_) - { - __chash = __constrain_hash(__cp->__hash_, __nbc); - if (__chash == __phash) - __pp = __cp; - else - { - if (__bucket_list_[__chash] == nullptr) - { - __bucket_list_[__chash] = __pp; - __pp = __cp; - __phash = __chash; - } - else - { - __node_pointer __np = __cp; - for (; __np->__next_ != nullptr && - key_eq()(__cp->__value_, __np->__next_->__value_); - __np = __np->__next_) - ; - __pp->__next_ = __np->__next_; - __np->__next_ = __bucket_list_[__chash]->__next_; - __bucket_list_[__chash]->__next_ = __cp; - - } - } - } - } - } -} - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) -{ - size_t __hash = hash_function()(__k); - size_type __bc = bucket_count(); - if (__bc != 0) - { - size_t __chash = __constrain_hash(__hash, __bc); - __node_pointer __nd = __bucket_list_[__chash]; - if (__nd != nullptr) - { - for (__nd = __nd->__next_; __nd != nullptr && - __constrain_hash(__nd->__hash_, __bc) == __chash; - __nd = __nd->__next_) - { - if (key_eq()(__nd->__value_, __k)) -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__nd, this); -#else - return iterator(__nd); -#endif - } - } - } - return end(); -} - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) const -{ - size_t __hash = hash_function()(__k); - size_type __bc = bucket_count(); - if (__bc != 0) - { - size_t __chash = __constrain_hash(__hash, __bc); - __node_const_pointer __nd = __bucket_list_[__chash]; - if (__nd != nullptr) - { - for (__nd = __nd->__next_; __nd != nullptr && - __constrain_hash(__nd->__hash_, __bc) == __chash; - __nd = __nd->__next_) - { - if (key_eq()(__nd->__value_, __k)) -#if _LIBCPP_DEBUG_LEVEL >= 2 - return const_iterator(__nd, this); -#else - return const_iterator(__nd); -#endif - } - } - - } - return end(); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node(_Args&& ...__args) -{ - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), _VSTD::forward<_Args>(__args)...); - __h.get_deleter().__value_constructed = true; - __h->__hash_ = hash_function()(__h->__value_); - __h->__next_ = nullptr; - return __h; -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node(value_type&& __v, - size_t __hash) -{ - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), _VSTD::move(__v)); - __h.get_deleter().__value_constructed = true; - __h->__hash_ = __hash; - __h->__next_ = nullptr; - return __h; -} - -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node(const value_type& __v) -{ - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), __v); - __h.get_deleter().__value_constructed = true; - __h->__hash_ = hash_function()(__h->__value_); - __h->__next_ = nullptr; - return _VSTD::move(__h); // explicitly moved for C++03 -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node(const value_type& __v, - size_t __hash) -{ - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), __v); - __h.get_deleter().__value_constructed = true; - __h->__hash_ = __hash; - __h->__next_ = nullptr; - return _VSTD::move(__h); // explicitly moved for C++03 -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __p) -{ - __node_pointer __np = __p.__node_; -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "unordered container erase(iterator) called with an iterator not" - " referring to this container"); - _LIBCPP_ASSERT(__p != end(), - "unordered container erase(iterator) called with a non-dereferenceable iterator"); - iterator __r(__np, this); -#else - iterator __r(__np); -#endif - ++__r; - remove(__p); - return __r; -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __first, - const_iterator __last) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__first) == this, - "unodered container::erase(iterator, iterator) called with an iterator not" - " referring to this unodered container"); - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__last) == this, - "unodered container::erase(iterator, iterator) called with an iterator not" - " referring to this unodered container"); -#endif - for (const_iterator __p = __first; __first != __last; __p = __first) - { - ++__first; - erase(__p); - } - __node_pointer __np = __last.__node_; -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator (__np, this); -#else - return iterator (__np); -#endif -} - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__erase_unique(const _Key& __k) -{ - iterator __i = find(__k); - if (__i == end()) - return 0; - erase(__i); - return 1; -} - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__erase_multi(const _Key& __k) -{ - size_type __r = 0; - iterator __i = find(__k); - if (__i != end()) - { - iterator __e = end(); - do - { - erase(__i++); - ++__r; - } while (__i != __e && key_eq()(*__i, __k)); - } - return __r; -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::remove(const_iterator __p) _NOEXCEPT -{ - // current node - __node_pointer __cn = __p.__node_; - size_type __bc = bucket_count(); - size_t __chash = __constrain_hash(__cn->__hash_, __bc); - // find previous node - __node_pointer __pn = __bucket_list_[__chash]; - for (; __pn->__next_ != __cn; __pn = __pn->__next_) - ; - // Fix up __bucket_list_ - // if __pn is not in same bucket (before begin is not in same bucket) && - // if __cn->__next_ is not in same bucket (nullptr is not in same bucket) - if (__pn == static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__p1_.first())) - || __constrain_hash(__pn->__hash_, __bc) != __chash) - { - if (__cn->__next_ == nullptr || __constrain_hash(__cn->__next_->__hash_, __bc) != __chash) - __bucket_list_[__chash] = nullptr; - } - // if __cn->__next_ is not in same bucket (nullptr is in same bucket) - if (__cn->__next_ != nullptr) - { - size_t __nhash = __constrain_hash(__cn->__next_->__hash_, __bc); - if (__nhash != __chash) - __bucket_list_[__nhash] = __pn; - } - // remove __cn - __pn->__next_ = __cn->__next_; - __cn->__next_ = nullptr; - --size(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __c_node* __c = __get_db()->__find_c_and_lock(this); - for (__i_node** __p = __c->end_; __p != __c->beg_; ) - { - --__p; - iterator* __i = static_cast((*__p)->__i_); - if (__i->__node_ == __cn) - { - (*__p)->__c_ = nullptr; - if (--__c->end_ != __p) - memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); - } - } - __get_db()->unlock(); -#endif - return __node_holder(__cn, _Dp(__node_alloc(), true)); -} - -template -template -inline _LIBCPP_INLINE_VISIBILITY -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__count_unique(const _Key& __k) const -{ - return static_cast(find(__k) != end()); -} - -template -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__count_multi(const _Key& __k) const -{ - size_type __r = 0; - const_iterator __i = find(__k); - if (__i != end()) - { - const_iterator __e = end(); - do - { - ++__i; - ++__r; - } while (__i != __e && key_eq()(*__i, __k)); - } - return __r; -} - -template -template -pair::iterator, - typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_unique( - const _Key& __k) -{ - iterator __i = find(__k); - iterator __j = __i; - if (__i != end()) - ++__j; - return pair(__i, __j); -} - -template -template -pair::const_iterator, - typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_unique( - const _Key& __k) const -{ - const_iterator __i = find(__k); - const_iterator __j = __i; - if (__i != end()) - ++__j; - return pair(__i, __j); -} - -template -template -pair::iterator, - typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_multi( - const _Key& __k) -{ - iterator __i = find(__k); - iterator __j = __i; - if (__i != end()) - { - iterator __e = end(); - do - { - ++__j; - } while (__j != __e && key_eq()(*__j, __k)); - } - return pair(__i, __j); -} - -template -template -pair::const_iterator, - typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_multi( - const _Key& __k) const -{ - const_iterator __i = find(__k); - const_iterator __j = __i; - if (__i != end()) - { - const_iterator __e = end(); - do - { - ++__j; - } while (__j != __e && key_eq()(*__j, __k)); - } - return pair(__i, __j); -} - -template -void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::swap(__hash_table& __u) - _NOEXCEPT_( - (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value || - __is_nothrow_swappable<__pointer_allocator>::value) && - (!__node_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value) && - __is_nothrow_swappable::value && - __is_nothrow_swappable::value) -{ - { - __node_pointer_pointer __npp = __bucket_list_.release(); - __bucket_list_.reset(__u.__bucket_list_.release()); - __u.__bucket_list_.reset(__npp); - } - _VSTD::swap(__bucket_list_.get_deleter().size(), __u.__bucket_list_.get_deleter().size()); - __swap_alloc(__bucket_list_.get_deleter().__alloc(), - __u.__bucket_list_.get_deleter().__alloc()); - __swap_alloc(__node_alloc(), __u.__node_alloc()); - _VSTD::swap(__p1_.first().__next_, __u.__p1_.first().__next_); - __p2_.swap(__u.__p2_); - __p3_.swap(__u.__p3_); - if (size() > 0) - __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash_, bucket_count())] = - static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__p1_.first())); - if (__u.size() > 0) - __u.__bucket_list_[__constrain_hash(__u.__p1_.first().__next_->__hash_, __u.bucket_count())] = - static_cast<__node_pointer>(pointer_traits<__node_base_pointer>::pointer_to(__u.__p1_.first())); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->swap(this, &__u); -#endif -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type -__hash_table<_Tp, _Hash, _Equal, _Alloc>::bucket_size(size_type __n) const -{ - _LIBCPP_ASSERT(__n < bucket_count(), - "unordered container::bucket_size(n) called with n >= bucket_count()"); - __node_const_pointer __np = __bucket_list_[__n]; - size_type __bc = bucket_count(); - size_type __r = 0; - if (__np != nullptr) - { - for (__np = __np->__next_; __np != nullptr && - __constrain_hash(__np->__hash_, __bc) == __n; - __np = __np->__next_, ++__r) - ; - } - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(__hash_table<_Tp, _Hash, _Equal, _Alloc>& __x, - __hash_table<_Tp, _Hash, _Equal, _Alloc>& __y) - _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) -{ - __x.swap(__y); -} - -#if _LIBCPP_DEBUG_LEVEL >= 2 - -template -bool -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__dereferenceable(const const_iterator* __i) const -{ - return __i->__node_ != nullptr; -} - -template -bool -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__decrementable(const const_iterator*) const -{ - return false; -} - -template -bool -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__addable(const const_iterator*, ptrdiff_t) const -{ - return false; -} - -template -bool -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__subscriptable(const const_iterator*, ptrdiff_t) const -{ - return false; -} - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP__HASH_TABLE diff --git a/libcxx/include/__locale b/libcxx/include/__locale deleted file mode 100644 index 19895582c..000000000 --- a/libcxx/include/__locale +++ /dev/null @@ -1,1475 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___LOCALE -#define _LIBCPP___LOCALE - -#include <__config> -#include -#include -#include -#include -#include -#include -#include -#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__) -# include -#elif defined(_AIX) -# include -#elif defined(__ANDROID__) -// Android gained the locale aware functions in L (API level 21) -# include -# if __ANDROID_API__ <= 20 -# include -# endif -#elif defined(__sun__) -# include -# include -#elif defined(_NEWLIB_VERSION) -# include -#elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \ - || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)) -# include -#endif // __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun__ || __EMSCRIPTEN__ || __IBMCPP__ - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -class _LIBCPP_TYPE_VIS locale; - -template -_LIBCPP_INLINE_VISIBILITY -bool -has_facet(const locale&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY -const _Facet& -use_facet(const locale&); - -class _LIBCPP_TYPE_VIS locale -{ -public: - // types: - class _LIBCPP_TYPE_VIS facet; - class _LIBCPP_TYPE_VIS id; - - typedef int category; - static const category // values assigned here are for exposition only - none = 0, - collate = LC_COLLATE_MASK, - ctype = LC_CTYPE_MASK, - monetary = LC_MONETARY_MASK, - numeric = LC_NUMERIC_MASK, - time = LC_TIME_MASK, - messages = LC_MESSAGES_MASK, - all = collate | ctype | monetary | numeric | time | messages; - - // construct/copy/destroy: - locale() _NOEXCEPT; - locale(const locale&) _NOEXCEPT; - explicit locale(const char*); - explicit locale(const string&); - locale(const locale&, const char*, category); - locale(const locale&, const string&, category); - template - _LIBCPP_INLINE_VISIBILITY locale(const locale&, _Facet*); - locale(const locale&, const locale&, category); - - ~locale(); - - const locale& operator=(const locale&) _NOEXCEPT; - - template locale combine(const locale&) const; - - // locale operations: - string name() const; - bool operator==(const locale&) const; - bool operator!=(const locale& __y) const {return !(*this == __y);} - template - bool operator()(const basic_string<_CharT, _Traits, _Allocator>&, - const basic_string<_CharT, _Traits, _Allocator>&) const; - - // global locale objects: - static locale global(const locale&); - static const locale& classic(); - -private: - class __imp; - __imp* __locale_; - - void __install_ctor(const locale&, facet*, long); - static locale& __global(); - bool has_facet(id&) const; - const facet* use_facet(id&) const; - - template friend bool has_facet(const locale&) _NOEXCEPT; - template friend const _Facet& use_facet(const locale&); -}; - -class _LIBCPP_TYPE_VIS locale::facet - : public __shared_count -{ -protected: - _LIBCPP_INLINE_VISIBILITY - explicit facet(size_t __refs = 0) - : __shared_count(static_cast(__refs)-1) {} - - virtual ~facet(); - -// facet(const facet&) = delete; // effectively done in __shared_count -// void operator=(const facet&) = delete; -private: - virtual void __on_zero_shared() _NOEXCEPT; -}; - -class _LIBCPP_TYPE_VIS locale::id -{ - once_flag __flag_; - int32_t __id_; - - static int32_t __next_id; -public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR id() :__id_(0) {} -private: - void __init(); - void operator=(const id&); // = delete; - id(const id&); // = delete; -public: // only needed for tests - long __get(); - - friend class locale; - friend class locale::__imp; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -locale::locale(const locale& __other, _Facet* __f) -{ - __install_ctor(__other, __f, __f ? __f->id.__get() : 0); -} - -template -locale -locale::combine(const locale& __other) const -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (!_VSTD::has_facet<_Facet>(__other)) - throw runtime_error("locale::combine: locale missing facet"); -#endif // _LIBCPP_NO_EXCEPTIONS - return locale(*this, &const_cast<_Facet&>(_VSTD::use_facet<_Facet>(__other))); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -has_facet(const locale& __l) _NOEXCEPT -{ - return __l.has_facet(_Facet::id); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -const _Facet& -use_facet(const locale& __l) -{ - return static_cast(*__l.use_facet(_Facet::id)); -} - -// template class collate; - -template -class _LIBCPP_TYPE_VIS_ONLY collate - : public locale::facet -{ -public: - typedef _CharT char_type; - typedef basic_string string_type; - - _LIBCPP_INLINE_VISIBILITY - explicit collate(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_INLINE_VISIBILITY - int compare(const char_type* __lo1, const char_type* __hi1, - const char_type* __lo2, const char_type* __hi2) const - { - return do_compare(__lo1, __hi1, __lo2, __hi2); - } - - _LIBCPP_INLINE_VISIBILITY - string_type transform(const char_type* __lo, const char_type* __hi) const - { - return do_transform(__lo, __hi); - } - - _LIBCPP_INLINE_VISIBILITY - long hash(const char_type* __lo, const char_type* __hi) const - { - return do_hash(__lo, __hi); - } - - static locale::id id; - -protected: - ~collate(); - virtual int do_compare(const char_type* __lo1, const char_type* __hi1, - const char_type* __lo2, const char_type* __hi2) const; - virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const - {return string_type(__lo, __hi);} - virtual long do_hash(const char_type* __lo, const char_type* __hi) const; -}; - -template locale::id collate<_CharT>::id; - -template -collate<_CharT>::~collate() -{ -} - -template -int -collate<_CharT>::do_compare(const char_type* __lo1, const char_type* __hi1, - const char_type* __lo2, const char_type* __hi2) const -{ - for (; __lo2 != __hi2; ++__lo1, ++__lo2) - { - if (__lo1 == __hi1 || *__lo1 < *__lo2) - return -1; - if (*__lo2 < *__lo1) - return 1; - } - return __lo1 != __hi1; -} - -template -long -collate<_CharT>::do_hash(const char_type* __lo, const char_type* __hi) const -{ - size_t __h = 0; - const size_t __sr = __CHAR_BIT__ * sizeof(size_t) - 8; - const size_t __mask = size_t(0xF) << (__sr + 4); - for(const char_type* __p = __lo; __p != __hi; ++__p) - { - __h = (__h << 4) + static_cast(*__p); - size_t __g = __h & __mask; - __h ^= __g | (__g >> __sr); - } - return static_cast(__h); -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS collate) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS collate) - -// template class collate_byname; - -template class _LIBCPP_TYPE_VIS_ONLY collate_byname; - -template <> -class _LIBCPP_TYPE_VIS collate_byname - : public collate -{ - locale_t __l; -public: - typedef char char_type; - typedef basic_string string_type; - - explicit collate_byname(const char* __n, size_t __refs = 0); - explicit collate_byname(const string& __n, size_t __refs = 0); - -protected: - ~collate_byname(); - virtual int do_compare(const char_type* __lo1, const char_type* __hi1, - const char_type* __lo2, const char_type* __hi2) const; - virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const; -}; - -template <> -class _LIBCPP_TYPE_VIS collate_byname - : public collate -{ - locale_t __l; -public: - typedef wchar_t char_type; - typedef basic_string string_type; - - explicit collate_byname(const char* __n, size_t __refs = 0); - explicit collate_byname(const string& __n, size_t __refs = 0); - -protected: - ~collate_byname(); - - virtual int do_compare(const char_type* __lo1, const char_type* __hi1, - const char_type* __lo2, const char_type* __hi2) const; - virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const; -}; - -template -bool -locale::operator()(const basic_string<_CharT, _Traits, _Allocator>& __x, - const basic_string<_CharT, _Traits, _Allocator>& __y) const -{ - return _VSTD::use_facet<_VSTD::collate<_CharT> >(*this).compare( - __x.data(), __x.data() + __x.size(), - __y.data(), __y.data() + __y.size()) < 0; -} - -// template class ctype - -class _LIBCPP_TYPE_VIS ctype_base -{ -public: -#ifdef __GLIBC__ - typedef unsigned short mask; - static const mask space = _ISspace; - static const mask print = _ISprint; - static const mask cntrl = _IScntrl; - static const mask upper = _ISupper; - static const mask lower = _ISlower; - static const mask alpha = _ISalpha; - static const mask digit = _ISdigit; - static const mask punct = _ISpunct; - static const mask xdigit = _ISxdigit; - static const mask blank = _ISblank; -#elif defined(_WIN32) - typedef unsigned short mask; - static const mask space = _SPACE; - static const mask print = _BLANK|_PUNCT|_ALPHA|_DIGIT; - static const mask cntrl = _CONTROL; - static const mask upper = _UPPER; - static const mask lower = _LOWER; - static const mask alpha = _ALPHA; - static const mask digit = _DIGIT; - static const mask punct = _PUNCT; - static const mask xdigit = _HEX; - static const mask blank = _BLANK; -# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_PRINT -#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__EMSCRIPTEN__) || defined(__NetBSD__) -# ifdef __APPLE__ - typedef __uint32_t mask; -# elif defined(__FreeBSD__) - typedef unsigned long mask; -# elif defined(__EMSCRIPTEN__) || defined(__NetBSD__) - typedef unsigned short mask; -# endif - static const mask space = _CTYPE_S; - static const mask print = _CTYPE_R; - static const mask cntrl = _CTYPE_C; - static const mask upper = _CTYPE_U; - static const mask lower = _CTYPE_L; - static const mask alpha = _CTYPE_A; - static const mask digit = _CTYPE_D; - static const mask punct = _CTYPE_P; - static const mask xdigit = _CTYPE_X; - -# if defined(__NetBSD__) - static const mask blank = _CTYPE_BL; -# else - static const mask blank = _CTYPE_B; -# endif -#elif defined(__sun__) || defined(_AIX) - typedef unsigned int mask; - static const mask space = _ISSPACE; - static const mask print = _ISPRINT; - static const mask cntrl = _ISCNTRL; - static const mask upper = _ISUPPER; - static const mask lower = _ISLOWER; - static const mask alpha = _ISALPHA; - static const mask digit = _ISDIGIT; - static const mask punct = _ISPUNCT; - static const mask xdigit = _ISXDIGIT; - static const mask blank = _ISBLANK; -#elif defined(_NEWLIB_VERSION) - // Same type as Newlib's _ctype_ array in newlib/libc/include/ctype.h. - typedef char mask; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask cntrl = _C; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask punct = _P; - static const mask xdigit = _X | _N; - static const mask blank = _B; -# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_PRINT -# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_ALPHA -# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_XDIGIT -#else - typedef unsigned long mask; - static const mask space = 1<<0; - static const mask print = 1<<1; - static const mask cntrl = 1<<2; - static const mask upper = 1<<3; - static const mask lower = 1<<4; - static const mask alpha = 1<<5; - static const mask digit = 1<<6; - static const mask punct = 1<<7; - static const mask xdigit = 1<<8; - static const mask blank = 1<<9; -#endif - static const mask alnum = alpha | digit; - static const mask graph = alnum | punct; - - _LIBCPP_ALWAYS_INLINE ctype_base() {} -}; - -template class _LIBCPP_TYPE_VIS_ONLY ctype; - -template <> -class _LIBCPP_TYPE_VIS ctype - : public locale::facet, - public ctype_base -{ -public: - typedef wchar_t char_type; - - _LIBCPP_ALWAYS_INLINE - explicit ctype(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - bool is(mask __m, char_type __c) const - { - return do_is(__m, __c); - } - - _LIBCPP_ALWAYS_INLINE - const char_type* is(const char_type* __low, const char_type* __high, mask* __vec) const - { - return do_is(__low, __high, __vec); - } - - _LIBCPP_ALWAYS_INLINE - const char_type* scan_is(mask __m, const char_type* __low, const char_type* __high) const - { - return do_scan_is(__m, __low, __high); - } - - _LIBCPP_ALWAYS_INLINE - const char_type* scan_not(mask __m, const char_type* __low, const char_type* __high) const - { - return do_scan_not(__m, __low, __high); - } - - _LIBCPP_ALWAYS_INLINE - char_type toupper(char_type __c) const - { - return do_toupper(__c); - } - - _LIBCPP_ALWAYS_INLINE - const char_type* toupper(char_type* __low, const char_type* __high) const - { - return do_toupper(__low, __high); - } - - _LIBCPP_ALWAYS_INLINE - char_type tolower(char_type __c) const - { - return do_tolower(__c); - } - - _LIBCPP_ALWAYS_INLINE - const char_type* tolower(char_type* __low, const char_type* __high) const - { - return do_tolower(__low, __high); - } - - _LIBCPP_ALWAYS_INLINE - char_type widen(char __c) const - { - return do_widen(__c); - } - - _LIBCPP_ALWAYS_INLINE - const char* widen(const char* __low, const char* __high, char_type* __to) const - { - return do_widen(__low, __high, __to); - } - - _LIBCPP_ALWAYS_INLINE - char narrow(char_type __c, char __dfault) const - { - return do_narrow(__c, __dfault); - } - - _LIBCPP_ALWAYS_INLINE - const char_type* narrow(const char_type* __low, const char_type* __high, char __dfault, char* __to) const - { - return do_narrow(__low, __high, __dfault, __to); - } - - static locale::id id; - -protected: - ~ctype(); - virtual bool do_is(mask __m, char_type __c) const; - virtual const char_type* do_is(const char_type* __low, const char_type* __high, mask* __vec) const; - virtual const char_type* do_scan_is(mask __m, const char_type* __low, const char_type* __high) const; - virtual const char_type* do_scan_not(mask __m, const char_type* __low, const char_type* __high) const; - virtual char_type do_toupper(char_type) const; - virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const; - virtual char_type do_tolower(char_type) const; - virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const; - virtual char_type do_widen(char) const; - virtual const char* do_widen(const char* __low, const char* __high, char_type* __dest) const; - virtual char do_narrow(char_type, char __dfault) const; - virtual const char_type* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __dest) const; -}; - -template <> -class _LIBCPP_TYPE_VIS ctype - : public locale::facet, public ctype_base -{ - const mask* __tab_; - bool __del_; -public: - typedef char char_type; - - explicit ctype(const mask* __tab = 0, bool __del = false, size_t __refs = 0); - - _LIBCPP_ALWAYS_INLINE - bool is(mask __m, char_type __c) const - { - return isascii(__c) ? (__tab_[static_cast(__c)] & __m) !=0 : false; - } - - _LIBCPP_ALWAYS_INLINE - const char_type* is(const char_type* __low, const char_type* __high, mask* __vec) const - { - for (; __low != __high; ++__low, ++__vec) - *__vec = isascii(*__low) ? __tab_[static_cast(*__low)] : 0; - return __low; - } - - _LIBCPP_ALWAYS_INLINE - const char_type* scan_is (mask __m, const char_type* __low, const char_type* __high) const - { - for (; __low != __high; ++__low) - if (isascii(*__low) && (__tab_[static_cast(*__low)] & __m)) - break; - return __low; - } - - _LIBCPP_ALWAYS_INLINE - const char_type* scan_not(mask __m, const char_type* __low, const char_type* __high) const - { - for (; __low != __high; ++__low) - if (!(isascii(*__low) && (__tab_[static_cast(*__low)] & __m))) - break; - return __low; - } - - _LIBCPP_ALWAYS_INLINE - char_type toupper(char_type __c) const - { - return do_toupper(__c); - } - - _LIBCPP_ALWAYS_INLINE - const char_type* toupper(char_type* __low, const char_type* __high) const - { - return do_toupper(__low, __high); - } - - _LIBCPP_ALWAYS_INLINE - char_type tolower(char_type __c) const - { - return do_tolower(__c); - } - - _LIBCPP_ALWAYS_INLINE - const char_type* tolower(char_type* __low, const char_type* __high) const - { - return do_tolower(__low, __high); - } - - _LIBCPP_ALWAYS_INLINE - char_type widen(char __c) const - { - return do_widen(__c); - } - - _LIBCPP_ALWAYS_INLINE - const char* widen(const char* __low, const char* __high, char_type* __to) const - { - return do_widen(__low, __high, __to); - } - - _LIBCPP_ALWAYS_INLINE - char narrow(char_type __c, char __dfault) const - { - return do_narrow(__c, __dfault); - } - - _LIBCPP_ALWAYS_INLINE - const char* narrow(const char_type* __low, const char_type* __high, char __dfault, char* __to) const - { - return do_narrow(__low, __high, __dfault, __to); - } - - static locale::id id; - -#ifdef _CACHED_RUNES - static const size_t table_size = _CACHED_RUNES; -#else - static const size_t table_size = 256; // FIXME: Don't hardcode this. -#endif - _LIBCPP_ALWAYS_INLINE const mask* table() const _NOEXCEPT {return __tab_;} - static const mask* classic_table() _NOEXCEPT; -#if defined(__GLIBC__) || defined(__EMSCRIPTEN__) - static const int* __classic_upper_table() _NOEXCEPT; - static const int* __classic_lower_table() _NOEXCEPT; -#endif -#if defined(__NetBSD__) - static const short* __classic_upper_table() _NOEXCEPT; - static const short* __classic_lower_table() _NOEXCEPT; -#endif - -protected: - ~ctype(); - virtual char_type do_toupper(char_type __c) const; - virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const; - virtual char_type do_tolower(char_type __c) const; - virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const; - virtual char_type do_widen(char __c) const; - virtual const char* do_widen(const char* __low, const char* __high, char_type* __to) const; - virtual char do_narrow(char_type __c, char __dfault) const; - virtual const char* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __to) const; -}; - -// template class ctype_byname; - -template class _LIBCPP_TYPE_VIS_ONLY ctype_byname; - -template <> -class _LIBCPP_TYPE_VIS ctype_byname - : public ctype -{ - locale_t __l; - -public: - explicit ctype_byname(const char*, size_t = 0); - explicit ctype_byname(const string&, size_t = 0); - -protected: - ~ctype_byname(); - virtual char_type do_toupper(char_type) const; - virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const; - virtual char_type do_tolower(char_type) const; - virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const; -}; - -template <> -class _LIBCPP_TYPE_VIS ctype_byname - : public ctype -{ - locale_t __l; - -public: - explicit ctype_byname(const char*, size_t = 0); - explicit ctype_byname(const string&, size_t = 0); - -protected: - ~ctype_byname(); - virtual bool do_is(mask __m, char_type __c) const; - virtual const char_type* do_is(const char_type* __low, const char_type* __high, mask* __vec) const; - virtual const char_type* do_scan_is(mask __m, const char_type* __low, const char_type* __high) const; - virtual const char_type* do_scan_not(mask __m, const char_type* __low, const char_type* __high) const; - virtual char_type do_toupper(char_type) const; - virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const; - virtual char_type do_tolower(char_type) const; - virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const; - virtual char_type do_widen(char) const; - virtual const char* do_widen(const char* __low, const char* __high, char_type* __dest) const; - virtual char do_narrow(char_type, char __dfault) const; - virtual const char_type* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __dest) const; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -isspace(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::space, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -isprint(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::print, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -iscntrl(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::cntrl, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -isupper(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::upper, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -islower(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::lower, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -isalpha(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::alpha, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -isdigit(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::digit, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -ispunct(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::punct, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -isxdigit(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::xdigit, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -isalnum(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::alnum, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -isgraph(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).is(ctype_base::graph, __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_CharT -toupper(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).toupper(__c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_CharT -tolower(_CharT __c, const locale& __loc) -{ - return use_facet >(__loc).tolower(__c); -} - -// codecvt_base - -class _LIBCPP_TYPE_VIS codecvt_base -{ -public: - _LIBCPP_ALWAYS_INLINE codecvt_base() {} - enum result {ok, partial, error, noconv}; -}; - -// template class codecvt; - -template class _LIBCPP_TYPE_VIS_ONLY codecvt; - -// template <> class codecvt - -template <> -class _LIBCPP_TYPE_VIS codecvt - : public locale::facet, - public codecvt_base -{ -public: - typedef char intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit codecvt(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - result out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const - { - return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - result unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const - { - return do_unshift(__st, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - result in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const - { - return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - int encoding() const _NOEXCEPT - { - return do_encoding(); - } - - _LIBCPP_ALWAYS_INLINE - bool always_noconv() const _NOEXCEPT - { - return do_always_noconv(); - } - - _LIBCPP_ALWAYS_INLINE - int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const - { - return do_length(__st, __frm, __end, __mx); - } - - _LIBCPP_ALWAYS_INLINE - int max_length() const _NOEXCEPT - { - return do_max_length(); - } - - static locale::id id; - -protected: - _LIBCPP_ALWAYS_INLINE - explicit codecvt(const char*, size_t __refs = 0) - : locale::facet(__refs) {} - - ~codecvt(); - - virtual result do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const _NOEXCEPT; - virtual bool do_always_noconv() const _NOEXCEPT; - virtual int do_length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const; - virtual int do_max_length() const _NOEXCEPT; -}; - -// template <> class codecvt - -template <> -class _LIBCPP_TYPE_VIS codecvt - : public locale::facet, - public codecvt_base -{ - locale_t __l; -public: - typedef wchar_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - explicit codecvt(size_t __refs = 0); - - _LIBCPP_ALWAYS_INLINE - result out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const - { - return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - result unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const - { - return do_unshift(__st, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - result in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const - { - return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - int encoding() const _NOEXCEPT - { - return do_encoding(); - } - - _LIBCPP_ALWAYS_INLINE - bool always_noconv() const _NOEXCEPT - { - return do_always_noconv(); - } - - _LIBCPP_ALWAYS_INLINE - int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const - { - return do_length(__st, __frm, __end, __mx); - } - - _LIBCPP_ALWAYS_INLINE - int max_length() const _NOEXCEPT - { - return do_max_length(); - } - - static locale::id id; - -protected: - explicit codecvt(const char*, size_t __refs = 0); - - ~codecvt(); - - virtual result do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const _NOEXCEPT; - virtual bool do_always_noconv() const _NOEXCEPT; - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const; - virtual int do_max_length() const _NOEXCEPT; -}; - -// template <> class codecvt - -template <> -class _LIBCPP_TYPE_VIS codecvt - : public locale::facet, - public codecvt_base -{ -public: - typedef char16_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit codecvt(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - result out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const - { - return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - result unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const - { - return do_unshift(__st, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - result in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const - { - return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - int encoding() const _NOEXCEPT - { - return do_encoding(); - } - - _LIBCPP_ALWAYS_INLINE - bool always_noconv() const _NOEXCEPT - { - return do_always_noconv(); - } - - _LIBCPP_ALWAYS_INLINE - int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const - { - return do_length(__st, __frm, __end, __mx); - } - - _LIBCPP_ALWAYS_INLINE - int max_length() const _NOEXCEPT - { - return do_max_length(); - } - - static locale::id id; - -protected: - _LIBCPP_ALWAYS_INLINE - explicit codecvt(const char*, size_t __refs = 0) - : locale::facet(__refs) {} - - ~codecvt(); - - virtual result do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const _NOEXCEPT; - virtual bool do_always_noconv() const _NOEXCEPT; - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const; - virtual int do_max_length() const _NOEXCEPT; -}; - -// template <> class codecvt - -template <> -class _LIBCPP_TYPE_VIS codecvt - : public locale::facet, - public codecvt_base -{ -public: - typedef char32_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit codecvt(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - result out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const - { - return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - result unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const - { - return do_unshift(__st, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - result in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const - { - return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); - } - - _LIBCPP_ALWAYS_INLINE - int encoding() const _NOEXCEPT - { - return do_encoding(); - } - - _LIBCPP_ALWAYS_INLINE - bool always_noconv() const _NOEXCEPT - { - return do_always_noconv(); - } - - _LIBCPP_ALWAYS_INLINE - int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const - { - return do_length(__st, __frm, __end, __mx); - } - - _LIBCPP_ALWAYS_INLINE - int max_length() const _NOEXCEPT - { - return do_max_length(); - } - - static locale::id id; - -protected: - _LIBCPP_ALWAYS_INLINE - explicit codecvt(const char*, size_t __refs = 0) - : locale::facet(__refs) {} - - ~codecvt(); - - virtual result do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const _NOEXCEPT; - virtual bool do_always_noconv() const _NOEXCEPT; - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const; - virtual int do_max_length() const _NOEXCEPT; -}; - -// template class codecvt_byname - -template -class _LIBCPP_TYPE_VIS_ONLY codecvt_byname - : public codecvt<_InternT, _ExternT, _StateT> -{ -public: - _LIBCPP_ALWAYS_INLINE - explicit codecvt_byname(const char* __nm, size_t __refs = 0) - : codecvt<_InternT, _ExternT, _StateT>(__nm, __refs) {} - _LIBCPP_ALWAYS_INLINE - explicit codecvt_byname(const string& __nm, size_t __refs = 0) - : codecvt<_InternT, _ExternT, _StateT>(__nm.c_str(), __refs) {} -protected: - ~codecvt_byname(); -}; - -template -codecvt_byname<_InternT, _ExternT, _StateT>::~codecvt_byname() -{ -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS codecvt_byname) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS codecvt_byname) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS codecvt_byname) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS codecvt_byname) - -_LIBCPP_FUNC_VIS void __throw_runtime_error(const char*); - -template -struct __narrow_to_utf8 -{ - template - _OutputIterator - operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const; -}; - -template <> -struct __narrow_to_utf8<8> -{ - template - _LIBCPP_ALWAYS_INLINE - _OutputIterator - operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const - { - for (; __wb < __we; ++__wb, ++__s) - *__s = *__wb; - return __s; - } -}; - -template <> -struct __narrow_to_utf8<16> - : public codecvt -{ - _LIBCPP_ALWAYS_INLINE - __narrow_to_utf8() : codecvt(1) {} - - ~__narrow_to_utf8(); - - template - _LIBCPP_ALWAYS_INLINE - _OutputIterator - operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const - { - result __r = ok; - mbstate_t __mb; - while (__wb < __we && __r != error) - { - const int __sz = 32; - char __buf[__sz]; - char* __bn; - const char16_t* __wn = (const char16_t*)__wb; - __r = do_out(__mb, (const char16_t*)__wb, (const char16_t*)__we, __wn, - __buf, __buf+__sz, __bn); - if (__r == codecvt_base::error || __wn == (const char16_t*)__wb) - __throw_runtime_error("locale not supported"); - for (const char* __p = __buf; __p < __bn; ++__p, ++__s) - *__s = *__p; - __wb = (const _CharT*)__wn; - } - return __s; - } -}; - -template <> -struct __narrow_to_utf8<32> - : public codecvt -{ - _LIBCPP_ALWAYS_INLINE - __narrow_to_utf8() : codecvt(1) {} - - ~__narrow_to_utf8(); - - template - _LIBCPP_ALWAYS_INLINE - _OutputIterator - operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const - { - result __r = ok; - mbstate_t __mb; - while (__wb < __we && __r != error) - { - const int __sz = 32; - char __buf[__sz]; - char* __bn; - const char32_t* __wn = (const char32_t*)__wb; - __r = do_out(__mb, (const char32_t*)__wb, (const char32_t*)__we, __wn, - __buf, __buf+__sz, __bn); - if (__r == codecvt_base::error || __wn == (const char32_t*)__wb) - __throw_runtime_error("locale not supported"); - for (const char* __p = __buf; __p < __bn; ++__p, ++__s) - *__s = *__p; - __wb = (const _CharT*)__wn; - } - return __s; - } -}; - -template -struct __widen_from_utf8 -{ - template - _OutputIterator - operator()(_OutputIterator __s, const char* __nb, const char* __ne) const; -}; - -template <> -struct __widen_from_utf8<8> -{ - template - _LIBCPP_ALWAYS_INLINE - _OutputIterator - operator()(_OutputIterator __s, const char* __nb, const char* __ne) const - { - for (; __nb < __ne; ++__nb, ++__s) - *__s = *__nb; - return __s; - } -}; - -template <> -struct __widen_from_utf8<16> - : public codecvt -{ - _LIBCPP_ALWAYS_INLINE - __widen_from_utf8() : codecvt(1) {} - - ~__widen_from_utf8(); - - template - _LIBCPP_ALWAYS_INLINE - _OutputIterator - operator()(_OutputIterator __s, const char* __nb, const char* __ne) const - { - result __r = ok; - mbstate_t __mb; - while (__nb < __ne && __r != error) - { - const int __sz = 32; - char16_t __buf[__sz]; - char16_t* __bn; - const char* __nn = __nb; - __r = do_in(__mb, __nb, __ne - __nb > __sz ? __nb+__sz : __ne, __nn, - __buf, __buf+__sz, __bn); - if (__r == codecvt_base::error || __nn == __nb) - __throw_runtime_error("locale not supported"); - for (const char16_t* __p = __buf; __p < __bn; ++__p, ++__s) - *__s = (wchar_t)*__p; - __nb = __nn; - } - return __s; - } -}; - -template <> -struct __widen_from_utf8<32> - : public codecvt -{ - _LIBCPP_ALWAYS_INLINE - __widen_from_utf8() : codecvt(1) {} - - ~__widen_from_utf8(); - - template - _LIBCPP_ALWAYS_INLINE - _OutputIterator - operator()(_OutputIterator __s, const char* __nb, const char* __ne) const - { - result __r = ok; - mbstate_t __mb; - while (__nb < __ne && __r != error) - { - const int __sz = 32; - char32_t __buf[__sz]; - char32_t* __bn; - const char* __nn = __nb; - __r = do_in(__mb, __nb, __ne - __nb > __sz ? __nb+__sz : __ne, __nn, - __buf, __buf+__sz, __bn); - if (__r == codecvt_base::error || __nn == __nb) - __throw_runtime_error("locale not supported"); - for (const char32_t* __p = __buf; __p < __bn; ++__p, ++__s) - *__s = (wchar_t)*__p; - __nb = __nn; - } - return __s; - } -}; - -// template class numpunct - -template class _LIBCPP_TYPE_VIS_ONLY numpunct; - -template <> -class _LIBCPP_TYPE_VIS numpunct - : public locale::facet -{ -public: - typedef char char_type; - typedef basic_string string_type; - - explicit numpunct(size_t __refs = 0); - - _LIBCPP_ALWAYS_INLINE char_type decimal_point() const {return do_decimal_point();} - _LIBCPP_ALWAYS_INLINE char_type thousands_sep() const {return do_thousands_sep();} - _LIBCPP_ALWAYS_INLINE string grouping() const {return do_grouping();} - _LIBCPP_ALWAYS_INLINE string_type truename() const {return do_truename();} - _LIBCPP_ALWAYS_INLINE string_type falsename() const {return do_falsename();} - - static locale::id id; - -protected: - ~numpunct(); - virtual char_type do_decimal_point() const; - virtual char_type do_thousands_sep() const; - virtual string do_grouping() const; - virtual string_type do_truename() const; - virtual string_type do_falsename() const; - - char_type __decimal_point_; - char_type __thousands_sep_; - string __grouping_; -}; - -template <> -class _LIBCPP_TYPE_VIS numpunct - : public locale::facet -{ -public: - typedef wchar_t char_type; - typedef basic_string string_type; - - explicit numpunct(size_t __refs = 0); - - _LIBCPP_ALWAYS_INLINE char_type decimal_point() const {return do_decimal_point();} - _LIBCPP_ALWAYS_INLINE char_type thousands_sep() const {return do_thousands_sep();} - _LIBCPP_ALWAYS_INLINE string grouping() const {return do_grouping();} - _LIBCPP_ALWAYS_INLINE string_type truename() const {return do_truename();} - _LIBCPP_ALWAYS_INLINE string_type falsename() const {return do_falsename();} - - static locale::id id; - -protected: - ~numpunct(); - virtual char_type do_decimal_point() const; - virtual char_type do_thousands_sep() const; - virtual string do_grouping() const; - virtual string_type do_truename() const; - virtual string_type do_falsename() const; - - char_type __decimal_point_; - char_type __thousands_sep_; - string __grouping_; -}; - -// template class numpunct_byname - -template class _LIBCPP_TYPE_VIS_ONLY numpunct_byname; - -template <> -class _LIBCPP_TYPE_VIS numpunct_byname -: public numpunct -{ -public: - typedef char char_type; - typedef basic_string string_type; - - explicit numpunct_byname(const char* __nm, size_t __refs = 0); - explicit numpunct_byname(const string& __nm, size_t __refs = 0); - -protected: - ~numpunct_byname(); - -private: - void __init(const char*); -}; - -template <> -class _LIBCPP_TYPE_VIS numpunct_byname -: public numpunct -{ -public: - typedef wchar_t char_type; - typedef basic_string string_type; - - explicit numpunct_byname(const char* __nm, size_t __refs = 0); - explicit numpunct_byname(const string& __nm, size_t __refs = 0); - -protected: - ~numpunct_byname(); - -private: - void __init(const char*); -}; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___LOCALE diff --git a/libcxx/include/__mutex_base b/libcxx/include/__mutex_base deleted file mode 100644 index d5ece7c14..000000000 --- a/libcxx/include/__mutex_base +++ /dev/null @@ -1,407 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___MUTEX_BASE -#define _LIBCPP___MUTEX_BASE - -#include <__config> -#include -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -#ifndef _LIBCPP_HAS_NO_THREADS - -class _LIBCPP_TYPE_VIS mutex -{ - pthread_mutex_t __m_; - -public: - _LIBCPP_INLINE_VISIBILITY -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - constexpr mutex() _NOEXCEPT : __m_(PTHREAD_MUTEX_INITIALIZER) {} -#else - mutex() _NOEXCEPT {__m_ = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;} -#endif - ~mutex(); - -private: - mutex(const mutex&);// = delete; - mutex& operator=(const mutex&);// = delete; - -public: - void lock(); - bool try_lock() _NOEXCEPT; - void unlock() _NOEXCEPT; - - typedef pthread_mutex_t* native_handle_type; - _LIBCPP_INLINE_VISIBILITY native_handle_type native_handle() {return &__m_;} -}; - -struct _LIBCPP_TYPE_VIS defer_lock_t {}; -struct _LIBCPP_TYPE_VIS try_to_lock_t {}; -struct _LIBCPP_TYPE_VIS adopt_lock_t {}; - -#if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_MUTEX) - -extern const defer_lock_t defer_lock; -extern const try_to_lock_t try_to_lock; -extern const adopt_lock_t adopt_lock; - -#else - -constexpr defer_lock_t defer_lock = defer_lock_t(); -constexpr try_to_lock_t try_to_lock = try_to_lock_t(); -constexpr adopt_lock_t adopt_lock = adopt_lock_t(); - -#endif - -template -class _LIBCPP_TYPE_VIS_ONLY lock_guard -{ -public: - typedef _Mutex mutex_type; - -private: - mutex_type& __m_; -public: - - _LIBCPP_INLINE_VISIBILITY - explicit lock_guard(mutex_type& __m) - : __m_(__m) {__m_.lock();} - _LIBCPP_INLINE_VISIBILITY - lock_guard(mutex_type& __m, adopt_lock_t) - : __m_(__m) {} - _LIBCPP_INLINE_VISIBILITY - ~lock_guard() {__m_.unlock();} - -private: - lock_guard(lock_guard const&);// = delete; - lock_guard& operator=(lock_guard const&);// = delete; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY unique_lock -{ -public: - typedef _Mutex mutex_type; - -private: - mutex_type* __m_; - bool __owns_; - -public: - _LIBCPP_INLINE_VISIBILITY - unique_lock() _NOEXCEPT : __m_(nullptr), __owns_(false) {} - _LIBCPP_INLINE_VISIBILITY - explicit unique_lock(mutex_type& __m) - : __m_(&__m), __owns_(true) {__m_->lock();} - _LIBCPP_INLINE_VISIBILITY - unique_lock(mutex_type& __m, defer_lock_t) _NOEXCEPT - : __m_(&__m), __owns_(false) {} - _LIBCPP_INLINE_VISIBILITY - unique_lock(mutex_type& __m, try_to_lock_t) - : __m_(&__m), __owns_(__m.try_lock()) {} - _LIBCPP_INLINE_VISIBILITY - unique_lock(mutex_type& __m, adopt_lock_t) - : __m_(&__m), __owns_(true) {} - template - _LIBCPP_INLINE_VISIBILITY - unique_lock(mutex_type& __m, const chrono::time_point<_Clock, _Duration>& __t) - : __m_(&__m), __owns_(__m.try_lock_until(__t)) {} - template - _LIBCPP_INLINE_VISIBILITY - unique_lock(mutex_type& __m, const chrono::duration<_Rep, _Period>& __d) - : __m_(&__m), __owns_(__m.try_lock_for(__d)) {} - _LIBCPP_INLINE_VISIBILITY - ~unique_lock() - { - if (__owns_) - __m_->unlock(); - } - -private: - unique_lock(unique_lock const&); // = delete; - unique_lock& operator=(unique_lock const&); // = delete; - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - unique_lock(unique_lock&& __u) _NOEXCEPT - : __m_(__u.__m_), __owns_(__u.__owns_) - {__u.__m_ = nullptr; __u.__owns_ = false;} - _LIBCPP_INLINE_VISIBILITY - unique_lock& operator=(unique_lock&& __u) _NOEXCEPT - { - if (__owns_) - __m_->unlock(); - __m_ = __u.__m_; - __owns_ = __u.__owns_; - __u.__m_ = nullptr; - __u.__owns_ = false; - return *this; - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - void lock(); - bool try_lock(); - - template - bool try_lock_for(const chrono::duration<_Rep, _Period>& __d); - template - bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t); - - void unlock(); - - _LIBCPP_INLINE_VISIBILITY - void swap(unique_lock& __u) _NOEXCEPT - { - _VSTD::swap(__m_, __u.__m_); - _VSTD::swap(__owns_, __u.__owns_); - } - _LIBCPP_INLINE_VISIBILITY - mutex_type* release() _NOEXCEPT - { - mutex_type* __m = __m_; - __m_ = nullptr; - __owns_ = false; - return __m; - } - - _LIBCPP_INLINE_VISIBILITY - bool owns_lock() const _NOEXCEPT {return __owns_;} - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_EXPLICIT - operator bool () const _NOEXCEPT {return __owns_;} - _LIBCPP_INLINE_VISIBILITY - mutex_type* mutex() const _NOEXCEPT {return __m_;} -}; - -template -void -unique_lock<_Mutex>::lock() -{ - if (__m_ == nullptr) - __throw_system_error(EPERM, "unique_lock::lock: references null mutex"); - if (__owns_) - __throw_system_error(EDEADLK, "unique_lock::lock: already locked"); - __m_->lock(); - __owns_ = true; -} - -template -bool -unique_lock<_Mutex>::try_lock() -{ - if (__m_ == nullptr) - __throw_system_error(EPERM, "unique_lock::try_lock: references null mutex"); - if (__owns_) - __throw_system_error(EDEADLK, "unique_lock::try_lock: already locked"); - __owns_ = __m_->try_lock(); - return __owns_; -} - -template -template -bool -unique_lock<_Mutex>::try_lock_for(const chrono::duration<_Rep, _Period>& __d) -{ - if (__m_ == nullptr) - __throw_system_error(EPERM, "unique_lock::try_lock_for: references null mutex"); - if (__owns_) - __throw_system_error(EDEADLK, "unique_lock::try_lock_for: already locked"); - __owns_ = __m_->try_lock_for(__d); - return __owns_; -} - -template -template -bool -unique_lock<_Mutex>::try_lock_until(const chrono::time_point<_Clock, _Duration>& __t) -{ - if (__m_ == nullptr) - __throw_system_error(EPERM, "unique_lock::try_lock_until: references null mutex"); - if (__owns_) - __throw_system_error(EDEADLK, "unique_lock::try_lock_until: already locked"); - __owns_ = __m_->try_lock_until(__t); - return __owns_; -} - -template -void -unique_lock<_Mutex>::unlock() -{ - if (!__owns_) - __throw_system_error(EPERM, "unique_lock::unlock: not locked"); - __m_->unlock(); - __owns_ = false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) _NOEXCEPT - {__x.swap(__y);} - -//enum class cv_status -_LIBCPP_DECLARE_STRONG_ENUM(cv_status) -{ - no_timeout, - timeout -}; -_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(cv_status) - -class _LIBCPP_TYPE_VIS condition_variable -{ - pthread_cond_t __cv_; -public: - _LIBCPP_INLINE_VISIBILITY -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - constexpr condition_variable() : __cv_(PTHREAD_COND_INITIALIZER) {} -#else - condition_variable() {__cv_ = (pthread_cond_t)PTHREAD_COND_INITIALIZER;} -#endif - ~condition_variable(); - -private: - condition_variable(const condition_variable&); // = delete; - condition_variable& operator=(const condition_variable&); // = delete; - -public: - void notify_one() _NOEXCEPT; - void notify_all() _NOEXCEPT; - - void wait(unique_lock& __lk) _NOEXCEPT; - template - void wait(unique_lock& __lk, _Predicate __pred); - - template - cv_status - wait_until(unique_lock& __lk, - const chrono::time_point<_Clock, _Duration>& __t); - - template - bool - wait_until(unique_lock& __lk, - const chrono::time_point<_Clock, _Duration>& __t, - _Predicate __pred); - - template - cv_status - wait_for(unique_lock& __lk, - const chrono::duration<_Rep, _Period>& __d); - - template - bool - wait_for(unique_lock& __lk, - const chrono::duration<_Rep, _Period>& __d, - _Predicate __pred); - - typedef pthread_cond_t* native_handle_type; - _LIBCPP_INLINE_VISIBILITY native_handle_type native_handle() {return &__cv_;} - -private: - void __do_timed_wait(unique_lock& __lk, - chrono::time_point) _NOEXCEPT; -}; -#endif // !_LIBCPP_HAS_NO_THREADS - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - chrono::__is_duration<_To>::value, - _To ->::type -__ceil(chrono::duration<_Rep, _Period> __d) -{ - using namespace chrono; - _To __r = duration_cast<_To>(__d); - if (__r < __d) - ++__r; - return __r; -} - -#ifndef _LIBCPP_HAS_NO_THREADS -template -void -condition_variable::wait(unique_lock& __lk, _Predicate __pred) -{ - while (!__pred()) - wait(__lk); -} - -template -cv_status -condition_variable::wait_until(unique_lock& __lk, - const chrono::time_point<_Clock, _Duration>& __t) -{ - using namespace chrono; - wait_for(__lk, __t - _Clock::now()); - return _Clock::now() < __t ? cv_status::no_timeout : cv_status::timeout; -} - -template -bool -condition_variable::wait_until(unique_lock& __lk, - const chrono::time_point<_Clock, _Duration>& __t, - _Predicate __pred) -{ - while (!__pred()) - { - if (wait_until(__lk, __t) == cv_status::timeout) - return __pred(); - } - return true; -} - -template -cv_status -condition_variable::wait_for(unique_lock& __lk, - const chrono::duration<_Rep, _Period>& __d) -{ - using namespace chrono; - if (__d <= __d.zero()) - return cv_status::timeout; - typedef time_point > __sys_tpf; - typedef time_point __sys_tpi; - __sys_tpf _Max = __sys_tpi::max(); - system_clock::time_point __s_now = system_clock::now(); - steady_clock::time_point __c_now = steady_clock::now(); - if (_Max - __d > __s_now) - __do_timed_wait(__lk, __s_now + __ceil(__d)); - else - __do_timed_wait(__lk, __sys_tpi::max()); - return steady_clock::now() - __c_now < __d ? cv_status::no_timeout : - cv_status::timeout; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -condition_variable::wait_for(unique_lock& __lk, - const chrono::duration<_Rep, _Period>& __d, - _Predicate __pred) -{ - return wait_until(__lk, chrono::steady_clock::now() + __d, - _VSTD::move(__pred)); -} - -#endif // !_LIBCPP_HAS_NO_THREADS - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___MUTEX_BASE diff --git a/libcxx/include/__refstring b/libcxx/include/__refstring deleted file mode 100644 index 61ccc7512..000000000 --- a/libcxx/include/__refstring +++ /dev/null @@ -1,139 +0,0 @@ -//===------------------------ __refstring ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___REFSTRING -#define _LIBCPP___REFSTRING - -#include <__config> -#include -#include -#ifdef __APPLE__ -#include -#include -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -class _LIBCPP_HIDDEN __libcpp_refstring -{ -private: - const char* str_; - - typedef int count_t; - - struct _Rep_base - { - std::size_t len; - std::size_t cap; - count_t count; - }; - - static - _Rep_base* - rep_from_data(const char *data_) _NOEXCEPT - { - char *data = const_cast(data_); - return reinterpret_cast<_Rep_base *>(data - sizeof(_Rep_base)); - } - static - char * - data_from_rep(_Rep_base *rep) _NOEXCEPT - { - char *data = reinterpret_cast(rep); - return data + sizeof(*rep); - } - -#ifdef __APPLE__ - static - const char* - compute_gcc_empty_string_storage() _NOEXCEPT - { - void* handle = dlopen("/usr/lib/libstdc++.6.dylib", RTLD_NOLOAD); - if (handle == nullptr) - return nullptr; - void* sym = dlsym(handle, "_ZNSs4_Rep20_S_empty_rep_storageE"); - if (sym == nullptr) - return nullptr; - return data_from_rep(reinterpret_cast<_Rep_base *>(sym)); - } - - static - const char* - get_gcc_empty_string_storage() _NOEXCEPT - { - static const char* p = compute_gcc_empty_string_storage(); - return p; - } - - bool - uses_refcount() const - { - return str_ != get_gcc_empty_string_storage(); - } -#else - bool - uses_refcount() const - { - return true; - } -#endif - -public: - explicit __libcpp_refstring(const char* msg) { - std::size_t len = strlen(msg); - _Rep_base* rep = static_cast<_Rep_base *>(::operator new(sizeof(*rep) + len + 1)); - rep->len = len; - rep->cap = len; - rep->count = 0; - char *data = data_from_rep(rep); - std::memcpy(data, msg, len + 1); - str_ = data; - } - - __libcpp_refstring(const __libcpp_refstring& s) _NOEXCEPT : str_(s.str_) - { - if (uses_refcount()) - __sync_add_and_fetch(&rep_from_data(str_)->count, 1); - } - - __libcpp_refstring& operator=(const __libcpp_refstring& s) _NOEXCEPT - { - bool adjust_old_count = uses_refcount(); - struct _Rep_base *old_rep = rep_from_data(str_); - str_ = s.str_; - if (uses_refcount()) - __sync_add_and_fetch(&rep_from_data(str_)->count, 1); - if (adjust_old_count) - { - if (__sync_add_and_fetch(&old_rep->count, count_t(-1)) < 0) - { - ::operator delete(old_rep); - } - } - return *this; - } - - ~__libcpp_refstring() - { - if (uses_refcount()) - { - _Rep_base* rep = rep_from_data(str_); - if (__sync_add_and_fetch(&rep->count, count_t(-1)) < 0) - { - ::operator delete(rep); - } - } - } - - const char* c_str() const _NOEXCEPT {return str_;} -}; - -_LIBCPP_END_NAMESPACE_STD - -#endif //_LIBCPP___REFSTRING diff --git a/libcxx/include/__split_buffer b/libcxx/include/__split_buffer deleted file mode 100644 index 1d529cbe2..000000000 --- a/libcxx/include/__split_buffer +++ /dev/null @@ -1,654 +0,0 @@ -// -*- C++ -*- -#ifndef _LIBCPP_SPLIT_BUFFER -#define _LIBCPP_SPLIT_BUFFER - -#include <__config> -#include -#include - -#include <__undef_min_max> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -class __split_buffer_common -{ -protected: - void __throw_length_error() const; - void __throw_out_of_range() const; -}; - -template > -struct __split_buffer - : private __split_buffer_common -{ -private: - __split_buffer(const __split_buffer&); - __split_buffer& operator=(const __split_buffer&); -public: - typedef _Tp value_type; - typedef _Allocator allocator_type; - typedef typename remove_reference::type __alloc_rr; - typedef allocator_traits<__alloc_rr> __alloc_traits; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename __alloc_traits::size_type size_type; - typedef typename __alloc_traits::difference_type difference_type; - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; - typedef pointer iterator; - typedef const_pointer const_iterator; - - pointer __first_; - pointer __begin_; - pointer __end_; - __compressed_pair __end_cap_; - - typedef typename add_lvalue_reference::type __alloc_ref; - typedef typename add_lvalue_reference::type __alloc_const_ref; - - _LIBCPP_INLINE_VISIBILITY __alloc_rr& __alloc() _NOEXCEPT {return __end_cap_.second();} - _LIBCPP_INLINE_VISIBILITY const __alloc_rr& __alloc() const _NOEXCEPT {return __end_cap_.second();} - _LIBCPP_INLINE_VISIBILITY pointer& __end_cap() _NOEXCEPT {return __end_cap_.first();} - _LIBCPP_INLINE_VISIBILITY const pointer& __end_cap() const _NOEXCEPT {return __end_cap_.first();} - - __split_buffer() - _NOEXCEPT_(is_nothrow_default_constructible::value); - explicit __split_buffer(__alloc_rr& __a); - explicit __split_buffer(const __alloc_rr& __a); - __split_buffer(size_type __cap, size_type __start, __alloc_rr& __a); - ~__split_buffer(); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - __split_buffer(__split_buffer&& __c) - _NOEXCEPT_(is_nothrow_move_constructible::value); - __split_buffer(__split_buffer&& __c, const __alloc_rr& __a); - __split_buffer& operator=(__split_buffer&& __c) - _NOEXCEPT_((__alloc_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value) || - !__alloc_traits::propagate_on_container_move_assignment::value); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - _LIBCPP_INLINE_VISIBILITY iterator begin() _NOEXCEPT {return __begin_;} - _LIBCPP_INLINE_VISIBILITY const_iterator begin() const _NOEXCEPT {return __begin_;} - _LIBCPP_INLINE_VISIBILITY iterator end() _NOEXCEPT {return __end_;} - _LIBCPP_INLINE_VISIBILITY const_iterator end() const _NOEXCEPT {return __end_;} - - _LIBCPP_INLINE_VISIBILITY - void clear() _NOEXCEPT - {__destruct_at_end(__begin_);} - _LIBCPP_INLINE_VISIBILITY size_type size() const {return static_cast(__end_ - __begin_);} - _LIBCPP_INLINE_VISIBILITY bool empty() const {return __end_ == __begin_;} - _LIBCPP_INLINE_VISIBILITY size_type capacity() const {return static_cast(__end_cap() - __first_);} - _LIBCPP_INLINE_VISIBILITY size_type __front_spare() const {return static_cast(__begin_ - __first_);} - _LIBCPP_INLINE_VISIBILITY size_type __back_spare() const {return static_cast(__end_cap() - __end_);} - - _LIBCPP_INLINE_VISIBILITY reference front() {return *__begin_;} - _LIBCPP_INLINE_VISIBILITY const_reference front() const {return *__begin_;} - _LIBCPP_INLINE_VISIBILITY reference back() {return *(__end_ - 1);} - _LIBCPP_INLINE_VISIBILITY const_reference back() const {return *(__end_ - 1);} - - void reserve(size_type __n); - void shrink_to_fit() _NOEXCEPT; - void push_front(const_reference __x); - _LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x); -#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) - void push_front(value_type&& __x); - void push_back(value_type&& __x); -#if !defined(_LIBCPP_HAS_NO_VARIADICS) - template - void emplace_back(_Args&&... __args); -#endif // !defined(_LIBCPP_HAS_NO_VARIADICS) -#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) - - _LIBCPP_INLINE_VISIBILITY void pop_front() {__destruct_at_begin(__begin_+1);} - _LIBCPP_INLINE_VISIBILITY void pop_back() {__destruct_at_end(__end_-1);} - - void __construct_at_end(size_type __n); - void __construct_at_end(size_type __n, const_reference __x); - template - typename enable_if - < - __is_input_iterator<_InputIter>::value && - !__is_forward_iterator<_InputIter>::value, - void - >::type - __construct_at_end(_InputIter __first, _InputIter __last); - template - typename enable_if - < - __is_forward_iterator<_ForwardIterator>::value, - void - >::type - __construct_at_end(_ForwardIterator __first, _ForwardIterator __last); - - _LIBCPP_INLINE_VISIBILITY void __destruct_at_begin(pointer __new_begin) - {__destruct_at_begin(__new_begin, is_trivially_destructible());} - void __destruct_at_begin(pointer __new_begin, false_type); - void __destruct_at_begin(pointer __new_begin, true_type); - - _LIBCPP_INLINE_VISIBILITY - void __destruct_at_end(pointer __new_last) _NOEXCEPT - {__destruct_at_end(__new_last, false_type());} - _LIBCPP_INLINE_VISIBILITY - void __destruct_at_end(pointer __new_last, false_type) _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY - void __destruct_at_end(pointer __new_last, true_type) _NOEXCEPT; - - void swap(__split_buffer& __x) - _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value|| - __is_nothrow_swappable<__alloc_rr>::value); - - bool __invariants() const; - -private: - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__split_buffer& __c, true_type) - _NOEXCEPT_(is_nothrow_move_assignable::value) - { - __alloc() = _VSTD::move(__c.__alloc()); - } - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__split_buffer&, false_type) _NOEXCEPT - {} - - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__alloc_rr& __x, __alloc_rr& __y) - _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value|| - __is_nothrow_swappable<__alloc_rr>::value) - {__swap_alloc(__x, __y, integral_constant());} - - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__alloc_rr& __x, __alloc_rr& __y, true_type) - _NOEXCEPT_(__is_nothrow_swappable<__alloc_rr>::value) - { - using _VSTD::swap; - swap(__x, __y); - } - - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__alloc_rr&, __alloc_rr&, false_type) _NOEXCEPT - {} -}; - -template -bool -__split_buffer<_Tp, _Allocator>::__invariants() const -{ - if (__first_ == nullptr) - { - if (__begin_ != nullptr) - return false; - if (__end_ != nullptr) - return false; - if (__end_cap() != nullptr) - return false; - } - else - { - if (__begin_ < __first_) - return false; - if (__end_ < __begin_) - return false; - if (__end_cap() < __end_) - return false; - } - return true; -} - -// Default constructs __n objects starting at __end_ -// throws if construction throws -// Precondition: __n > 0 -// Precondition: size() + __n <= capacity() -// Postcondition: size() == size() + __n -template -void -__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n) -{ - __alloc_rr& __a = this->__alloc(); - do - { - __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_)); - ++this->__end_; - --__n; - } while (__n > 0); -} - -// Copy constructs __n objects starting at __end_ from __x -// throws if construction throws -// Precondition: __n > 0 -// Precondition: size() + __n <= capacity() -// Postcondition: size() == old size() + __n -// Postcondition: [i] == __x for all i in [size() - __n, __n) -template -void -__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x) -{ - __alloc_rr& __a = this->__alloc(); - do - { - __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_), __x); - ++this->__end_; - --__n; - } while (__n > 0); -} - -template -template -typename enable_if -< - __is_input_iterator<_InputIter>::value && - !__is_forward_iterator<_InputIter>::value, - void ->::type -__split_buffer<_Tp, _Allocator>::__construct_at_end(_InputIter __first, _InputIter __last) -{ - __alloc_rr& __a = this->__alloc(); - for (; __first != __last; ++__first) - { - if (__end_ == __end_cap()) - { - size_type __old_cap = __end_cap() - __first_; - size_type __new_cap = _VSTD::max(2 * __old_cap, 8); - __split_buffer __buf(__new_cap, 0, __a); - for (pointer __p = __begin_; __p != __end_; ++__p, ++__buf.__end_) - __alloc_traits::construct(__buf.__alloc(), - _VSTD::__to_raw_pointer(__buf.__end_), _VSTD::move(*__p)); - swap(__buf); - } - __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_), *__first); - ++this->__end_; - } -} - -template -template -typename enable_if -< - __is_forward_iterator<_ForwardIterator>::value, - void ->::type -__split_buffer<_Tp, _Allocator>::__construct_at_end(_ForwardIterator __first, _ForwardIterator __last) -{ - __alloc_rr& __a = this->__alloc(); - for (; __first != __last; ++__first) - { - __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_), *__first); - ++this->__end_; - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, false_type) -{ - while (__begin_ != __new_begin) - __alloc_traits::destroy(__alloc(), __to_raw_pointer(__begin_++)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, true_type) -{ - __begin_ = __new_begin; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, false_type) _NOEXCEPT -{ - while (__new_last != __end_) - __alloc_traits::destroy(__alloc(), __to_raw_pointer(--__end_)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, true_type) _NOEXCEPT -{ - __end_ = __new_last; -} - -template -__split_buffer<_Tp, _Allocator>::__split_buffer(size_type __cap, size_type __start, __alloc_rr& __a) - : __end_cap_(nullptr, __a) -{ - __first_ = __cap != 0 ? __alloc_traits::allocate(__alloc(), __cap) : nullptr; - __begin_ = __end_ = __first_ + __start; - __end_cap() = __first_ + __cap; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__split_buffer<_Tp, _Allocator>::__split_buffer() - _NOEXCEPT_(is_nothrow_default_constructible::value) - : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr) -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__split_buffer<_Tp, _Allocator>::__split_buffer(__alloc_rr& __a) - : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr, __a) -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__split_buffer<_Tp, _Allocator>::__split_buffer(const __alloc_rr& __a) - : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr, __a) -{ -} - -template -__split_buffer<_Tp, _Allocator>::~__split_buffer() -{ - clear(); - if (__first_) - __alloc_traits::deallocate(__alloc(), __first_, capacity()); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -__split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c) - _NOEXCEPT_(is_nothrow_move_constructible::value) - : __first_(_VSTD::move(__c.__first_)), - __begin_(_VSTD::move(__c.__begin_)), - __end_(_VSTD::move(__c.__end_)), - __end_cap_(_VSTD::move(__c.__end_cap_)) -{ - __c.__first_ = nullptr; - __c.__begin_ = nullptr; - __c.__end_ = nullptr; - __c.__end_cap() = nullptr; -} - -template -__split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c, const __alloc_rr& __a) - : __end_cap_(__a) -{ - if (__a == __c.__alloc()) - { - __first_ = __c.__first_; - __begin_ = __c.__begin_; - __end_ = __c.__end_; - __end_cap() = __c.__end_cap(); - __c.__first_ = nullptr; - __c.__begin_ = nullptr; - __c.__end_ = nullptr; - __c.__end_cap() = nullptr; - } - else - { - size_type __cap = __c.size(); - __first_ = __alloc_traits::allocate(__alloc(), __cap); - __begin_ = __end_ = __first_; - __end_cap() = __first_ + __cap; - typedef move_iterator _Ip; - __construct_at_end(_Ip(__c.begin()), _Ip(__c.end())); - } -} - -template -__split_buffer<_Tp, _Allocator>& -__split_buffer<_Tp, _Allocator>::operator=(__split_buffer&& __c) - _NOEXCEPT_((__alloc_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value) || - !__alloc_traits::propagate_on_container_move_assignment::value) -{ - clear(); - shrink_to_fit(); - __first_ = __c.__first_; - __begin_ = __c.__begin_; - __end_ = __c.__end_; - __end_cap() = __c.__end_cap(); - __move_assign_alloc(__c, - integral_constant()); - __c.__first_ = __c.__begin_ = __c.__end_ = __c.__end_cap() = nullptr; - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__split_buffer<_Tp, _Allocator>::swap(__split_buffer& __x) - _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value|| - __is_nothrow_swappable<__alloc_rr>::value) -{ - _VSTD::swap(__first_, __x.__first_); - _VSTD::swap(__begin_, __x.__begin_); - _VSTD::swap(__end_, __x.__end_); - _VSTD::swap(__end_cap(), __x.__end_cap()); - __swap_alloc(__alloc(), __x.__alloc()); -} - -template -void -__split_buffer<_Tp, _Allocator>::reserve(size_type __n) -{ - if (__n < capacity()) - { - __split_buffer __t(__n, 0, __alloc()); - __t.__construct_at_end(move_iterator(__begin_), - move_iterator(__end_)); - _VSTD::swap(__first_, __t.__first_); - _VSTD::swap(__begin_, __t.__begin_); - _VSTD::swap(__end_, __t.__end_); - _VSTD::swap(__end_cap(), __t.__end_cap()); - } -} - -template -void -__split_buffer<_Tp, _Allocator>::shrink_to_fit() _NOEXCEPT -{ - if (capacity() > size()) - { -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - __split_buffer __t(size(), 0, __alloc()); - __t.__construct_at_end(move_iterator(__begin_), - move_iterator(__end_)); - __t.__end_ = __t.__begin_ + (__end_ - __begin_); - _VSTD::swap(__first_, __t.__first_); - _VSTD::swap(__begin_, __t.__begin_); - _VSTD::swap(__end_, __t.__end_); - _VSTD::swap(__end_cap(), __t.__end_cap()); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - } -#endif // _LIBCPP_NO_EXCEPTIONS - } -} - -template -void -__split_buffer<_Tp, _Allocator>::push_front(const_reference __x) -{ - if (__begin_ == __first_) - { - if (__end_ < __end_cap()) - { - difference_type __d = __end_cap() - __end_; - __d = (__d + 1) / 2; - __begin_ = _VSTD::move_backward(__begin_, __end_, __end_ + __d); - __end_ += __d; - } - else - { - size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); - __split_buffer __t(__c, (__c + 3) / 4, __alloc()); - __t.__construct_at_end(move_iterator(__begin_), - move_iterator(__end_)); - _VSTD::swap(__first_, __t.__first_); - _VSTD::swap(__begin_, __t.__begin_); - _VSTD::swap(__end_, __t.__end_); - _VSTD::swap(__end_cap(), __t.__end_cap()); - } - } - __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__begin_-1), __x); - --__begin_; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__split_buffer<_Tp, _Allocator>::push_front(value_type&& __x) -{ - if (__begin_ == __first_) - { - if (__end_ < __end_cap()) - { - difference_type __d = __end_cap() - __end_; - __d = (__d + 1) / 2; - __begin_ = _VSTD::move_backward(__begin_, __end_, __end_ + __d); - __end_ += __d; - } - else - { - size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); - __split_buffer __t(__c, (__c + 3) / 4, __alloc()); - __t.__construct_at_end(move_iterator(__begin_), - move_iterator(__end_)); - _VSTD::swap(__first_, __t.__first_); - _VSTD::swap(__begin_, __t.__begin_); - _VSTD::swap(__end_, __t.__end_); - _VSTD::swap(__end_cap(), __t.__end_cap()); - } - } - __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__begin_-1), - _VSTD::move(__x)); - --__begin_; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__split_buffer<_Tp, _Allocator>::push_back(const_reference __x) -{ - if (__end_ == __end_cap()) - { - if (__begin_ > __first_) - { - difference_type __d = __begin_ - __first_; - __d = (__d + 1) / 2; - __end_ = _VSTD::move(__begin_, __end_, __begin_ - __d); - __begin_ -= __d; - } - else - { - size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); - __split_buffer __t(__c, __c / 4, __alloc()); - __t.__construct_at_end(move_iterator(__begin_), - move_iterator(__end_)); - _VSTD::swap(__first_, __t.__first_); - _VSTD::swap(__begin_, __t.__begin_); - _VSTD::swap(__end_, __t.__end_); - _VSTD::swap(__end_cap(), __t.__end_cap()); - } - } - __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__end_), __x); - ++__end_; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__split_buffer<_Tp, _Allocator>::push_back(value_type&& __x) -{ - if (__end_ == __end_cap()) - { - if (__begin_ > __first_) - { - difference_type __d = __begin_ - __first_; - __d = (__d + 1) / 2; - __end_ = _VSTD::move(__begin_, __end_, __begin_ - __d); - __begin_ -= __d; - } - else - { - size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); - __split_buffer __t(__c, __c / 4, __alloc()); - __t.__construct_at_end(move_iterator(__begin_), - move_iterator(__end_)); - _VSTD::swap(__first_, __t.__first_); - _VSTD::swap(__begin_, __t.__begin_); - _VSTD::swap(__end_, __t.__end_); - _VSTD::swap(__end_cap(), __t.__end_cap()); - } - } - __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__end_), - _VSTD::move(__x)); - ++__end_; -} - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -void -__split_buffer<_Tp, _Allocator>::emplace_back(_Args&&... __args) -{ - if (__end_ == __end_cap()) - { - if (__begin_ > __first_) - { - difference_type __d = __begin_ - __first_; - __d = (__d + 1) / 2; - __end_ = _VSTD::move(__begin_, __end_, __begin_ - __d); - __begin_ -= __d; - } - else - { - size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); - __split_buffer __t(__c, __c / 4, __alloc()); - __t.__construct_at_end(move_iterator(__begin_), - move_iterator(__end_)); - _VSTD::swap(__first_, __t.__first_); - _VSTD::swap(__begin_, __t.__begin_); - _VSTD::swap(__end_, __t.__end_); - _VSTD::swap(__end_cap(), __t.__end_cap()); - } - } - __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__end_), - _VSTD::forward<_Args>(__args)...); - ++__end_; -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(__split_buffer<_Tp, _Allocator>& __x, __split_buffer<_Tp, _Allocator>& __y) - _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) -{ - __x.swap(__y); -} - - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_SPLIT_BUFFER diff --git a/libcxx/include/__sso_allocator b/libcxx/include/__sso_allocator deleted file mode 100644 index ca3b937c0..000000000 --- a/libcxx/include/__sso_allocator +++ /dev/null @@ -1,79 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___SSO_ALLOCATOR -#define _LIBCPP___SSO_ALLOCATOR - -#include <__config> -#include -#include - -#include <__undef___deallocate> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template class _LIBCPP_HIDDEN __sso_allocator; - -template -class _LIBCPP_HIDDEN __sso_allocator -{ -public: - typedef const void* const_pointer; - typedef void value_type; -}; - -template -class _LIBCPP_HIDDEN __sso_allocator -{ - typename aligned_storage::type buf_; - bool __allocated_; -public: - typedef size_t size_type; - typedef _Tp* pointer; - typedef _Tp value_type; - - _LIBCPP_INLINE_VISIBILITY __sso_allocator() throw() : __allocated_(false) {} - _LIBCPP_INLINE_VISIBILITY __sso_allocator(const __sso_allocator&) throw() : __allocated_(false) {} - template _LIBCPP_INLINE_VISIBILITY __sso_allocator(const __sso_allocator<_Up, _Np>&) throw() - : __allocated_(false) {} -private: - __sso_allocator& operator=(const __sso_allocator&); -public: - _LIBCPP_INLINE_VISIBILITY pointer allocate(size_type __n, typename __sso_allocator::const_pointer = 0) - { - if (!__allocated_ && __n <= _Np) - { - __allocated_ = true; - return (pointer)&buf_; - } - return static_cast(_VSTD::__allocate(__n * sizeof(_Tp))); - } - _LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type) - { - if (__p == (pointer)&buf_) - __allocated_ = false; - else - _VSTD::__deallocate(__p); - } - _LIBCPP_INLINE_VISIBILITY size_type max_size() const throw() {return size_type(~0) / sizeof(_Tp);} - - _LIBCPP_INLINE_VISIBILITY - bool operator==(__sso_allocator& __a) const {return &buf_ == &__a.buf_;} - _LIBCPP_INLINE_VISIBILITY - bool operator!=(__sso_allocator& __a) const {return &buf_ != &__a.buf_;} -}; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___SSO_ALLOCATOR diff --git a/libcxx/include/__std_stream b/libcxx/include/__std_stream deleted file mode 100644 index 5403adabc..000000000 --- a/libcxx/include/__std_stream +++ /dev/null @@ -1,359 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___STD_STREAM -#define _LIBCPP___STD_STREAM - -#include <__config> -#include -#include -#include <__locale> -#include - -#include <__undef_min_max> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -static const int __limit = 8; - -// __stdinbuf - -template -class _LIBCPP_HIDDEN __stdinbuf - : public basic_streambuf<_CharT, char_traits<_CharT> > -{ -public: - typedef _CharT char_type; - typedef char_traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - typedef typename traits_type::state_type state_type; - - __stdinbuf(FILE* __fp, state_type* __st); - -protected: - virtual int_type underflow(); - virtual int_type uflow(); - virtual int_type pbackfail(int_type __c = traits_type::eof()); - virtual void imbue(const locale& __loc); - -private: - - FILE* __file_; - const codecvt* __cv_; - state_type* __st_; - int __encoding_; - int_type __last_consumed_; - bool __last_consumed_is_next_; - bool __always_noconv_; - - __stdinbuf(const __stdinbuf&); - __stdinbuf& operator=(const __stdinbuf&); - - int_type __getchar(bool __consume); -}; - -template -__stdinbuf<_CharT>::__stdinbuf(FILE* __fp, state_type* __st) - : __file_(__fp), - __st_(__st), - __last_consumed_(traits_type::eof()), - __last_consumed_is_next_(false) -{ - imbue(this->getloc()); -} - -template -void -__stdinbuf<_CharT>::imbue(const locale& __loc) -{ - __cv_ = &use_facet >(__loc); - __encoding_ = __cv_->encoding(); - __always_noconv_ = __cv_->always_noconv(); - if (__encoding_ > __limit) - __throw_runtime_error("unsupported locale for standard input"); -} - -template -typename __stdinbuf<_CharT>::int_type -__stdinbuf<_CharT>::underflow() -{ - return __getchar(false); -} - -template -typename __stdinbuf<_CharT>::int_type -__stdinbuf<_CharT>::uflow() -{ - return __getchar(true); -} - -template -typename __stdinbuf<_CharT>::int_type -__stdinbuf<_CharT>::__getchar(bool __consume) -{ - if (__last_consumed_is_next_) - { - int_type __result = __last_consumed_; - if (__consume) - { - __last_consumed_ = traits_type::eof(); - __last_consumed_is_next_ = false; - } - return __result; - } - char __extbuf[__limit]; - int __nread = _VSTD::max(1, __encoding_); - for (int __i = 0; __i < __nread; ++__i) - { - int __c = getc(__file_); - if (__c == EOF) - return traits_type::eof(); - __extbuf[__i] = static_cast(__c); - } - char_type __1buf; - if (__always_noconv_) - __1buf = static_cast(__extbuf[0]); - else - { - const char* __enxt; - char_type* __inxt; - codecvt_base::result __r; - do - { - state_type __sv_st = *__st_; - __r = __cv_->in(*__st_, __extbuf, __extbuf + __nread, __enxt, - &__1buf, &__1buf + 1, __inxt); - switch (__r) - { - case _VSTD::codecvt_base::ok: - break; - case codecvt_base::partial: - *__st_ = __sv_st; - if (__nread == sizeof(__extbuf)) - return traits_type::eof(); - { - int __c = getc(__file_); - if (__c == EOF) - return traits_type::eof(); - __extbuf[__nread] = static_cast(__c); - } - ++__nread; - break; - case codecvt_base::error: - return traits_type::eof(); - case _VSTD::codecvt_base::noconv: - __1buf = static_cast(__extbuf[0]); - break; - } - } while (__r == _VSTD::codecvt_base::partial); - } - if (!__consume) - { - for (int __i = __nread; __i > 0;) - { - if (ungetc(traits_type::to_int_type(__extbuf[--__i]), __file_) == EOF) - return traits_type::eof(); - } - } - else - __last_consumed_ = traits_type::to_int_type(__1buf); - return traits_type::to_int_type(__1buf); -} - -template -typename __stdinbuf<_CharT>::int_type -__stdinbuf<_CharT>::pbackfail(int_type __c) -{ - if (traits_type::eq_int_type(__c, traits_type::eof())) - { - if (!__last_consumed_is_next_) - { - __c = __last_consumed_; - __last_consumed_is_next_ = !traits_type::eq_int_type(__last_consumed_, - traits_type::eof()); - } - return __c; - } - if (__last_consumed_is_next_) - { - char __extbuf[__limit]; - char* __enxt; - const char_type __ci = traits_type::to_char_type(__last_consumed_); - const char_type* __inxt; - switch (__cv_->out(*__st_, &__ci, &__ci + 1, __inxt, - __extbuf, __extbuf + sizeof(__extbuf), __enxt)) - { - case _VSTD::codecvt_base::ok: - break; - case _VSTD::codecvt_base::noconv: - __extbuf[0] = static_cast(__last_consumed_); - __enxt = __extbuf + 1; - break; - case codecvt_base::partial: - case codecvt_base::error: - return traits_type::eof(); - } - while (__enxt > __extbuf) - if (ungetc(*--__enxt, __file_) == EOF) - return traits_type::eof(); - } - __last_consumed_ = __c; - __last_consumed_is_next_ = true; - return __c; -} - -// __stdoutbuf - -template -class _LIBCPP_HIDDEN __stdoutbuf - : public basic_streambuf<_CharT, char_traits<_CharT> > -{ -public: - typedef _CharT char_type; - typedef char_traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - typedef typename traits_type::state_type state_type; - - __stdoutbuf(FILE* __fp, state_type* __st); - -protected: - virtual int_type overflow (int_type __c = traits_type::eof()); - virtual streamsize xsputn(const char_type* __s, streamsize __n); - virtual int sync(); - virtual void imbue(const locale& __loc); - -private: - FILE* __file_; - const codecvt* __cv_; - state_type* __st_; - bool __always_noconv_; - - __stdoutbuf(const __stdoutbuf&); - __stdoutbuf& operator=(const __stdoutbuf&); -}; - -template -__stdoutbuf<_CharT>::__stdoutbuf(FILE* __fp, state_type* __st) - : __file_(__fp), - __cv_(&use_facet >(this->getloc())), - __st_(__st), - __always_noconv_(__cv_->always_noconv()) -{ -} - -template -typename __stdoutbuf<_CharT>::int_type -__stdoutbuf<_CharT>::overflow(int_type __c) -{ - char __extbuf[__limit]; - char_type __1buf; - if (!traits_type::eq_int_type(__c, traits_type::eof())) - { - __1buf = traits_type::to_char_type(__c); - if (__always_noconv_) - { - if (fwrite(&__1buf, sizeof(char_type), 1, __file_) != 1) - return traits_type::eof(); - } - else - { - char* __extbe = __extbuf; - codecvt_base::result __r; - char_type* pbase = &__1buf; - char_type* pptr = pbase + 1; - char_type* epptr = pptr; - do - { - const char_type* __e; - __r = __cv_->out(*__st_, pbase, pptr, __e, - __extbuf, - __extbuf + sizeof(__extbuf), - __extbe); - if (__e == pbase) - return traits_type::eof(); - if (__r == codecvt_base::noconv) - { - if (fwrite(pbase, 1, 1, __file_) != 1) - return traits_type::eof(); - } - else if (__r == codecvt_base::ok || __r == codecvt_base::partial) - { - size_t __nmemb = static_cast(__extbe - __extbuf); - if (fwrite(__extbuf, 1, __nmemb, __file_) != __nmemb) - return traits_type::eof(); - if (__r == codecvt_base::partial) - { - pbase = (char_type*)__e; - } - } - else - return traits_type::eof(); - } while (__r == codecvt_base::partial); - } - } - return traits_type::not_eof(__c); -} - -template -streamsize -__stdoutbuf<_CharT>::xsputn(const char_type* __s, streamsize __n) -{ - if (__always_noconv_) - return fwrite(__s, sizeof(char_type), __n, __file_); - streamsize __i = 0; - for (; __i < __n; ++__i, ++__s) - if (overflow(traits_type::to_int_type(*__s)) == traits_type::eof()) - break; - return __i; -} - -template -int -__stdoutbuf<_CharT>::sync() -{ - char __extbuf[__limit]; - codecvt_base::result __r; - do - { - char* __extbe; - __r = __cv_->unshift(*__st_, __extbuf, - __extbuf + sizeof(__extbuf), - __extbe); - size_t __nmemb = static_cast(__extbe - __extbuf); - if (fwrite(__extbuf, 1, __nmemb, __file_) != __nmemb) - return -1; - } while (__r == codecvt_base::partial); - if (__r == codecvt_base::error) - return -1; - if (fflush(__file_)) - return -1; - return 0; -} - -template -void -__stdoutbuf<_CharT>::imbue(const locale& __loc) -{ - sync(); - __cv_ = &use_facet >(__loc); - __always_noconv_ = __cv_->always_noconv(); -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___STD_STREAM diff --git a/libcxx/include/__tree b/libcxx/include/__tree deleted file mode 100644 index 588f43807..000000000 --- a/libcxx/include/__tree +++ /dev/null @@ -1,2310 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___TREE -#define _LIBCPP___TREE - -#include <__config> -#include -#include -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template class __tree; -template - class _LIBCPP_TYPE_VIS_ONLY __tree_iterator; -template - class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator; - -/* - -_NodePtr algorithms - -The algorithms taking _NodePtr are red black tree algorithms. Those -algorithms taking a parameter named __root should assume that __root -points to a proper red black tree (unless otherwise specified). - -Each algorithm herein assumes that __root->__parent_ points to a non-null -structure which has a member __left_ which points back to __root. No other -member is read or written to at __root->__parent_. - -__root->__parent_ will be referred to below (in comments only) as end_node. -end_node->__left_ is an externably accessible lvalue for __root, and can be -changed by node insertion and removal (without explicit reference to end_node). - -All nodes (with the exception of end_node), even the node referred to as -__root, have a non-null __parent_ field. - -*/ - -// Returns: true if __x is a left child of its parent, else false -// Precondition: __x != nullptr. -template -inline _LIBCPP_INLINE_VISIBILITY -bool -__tree_is_left_child(_NodePtr __x) _NOEXCEPT -{ - return __x == __x->__parent_->__left_; -} - -// Determintes if the subtree rooted at __x is a proper red black subtree. If -// __x is a proper subtree, returns the black height (null counts as 1). If -// __x is an improper subtree, returns 0. -template -unsigned -__tree_sub_invariant(_NodePtr __x) -{ - if (__x == nullptr) - return 1; - // parent consistency checked by caller - // check __x->__left_ consistency - if (__x->__left_ != nullptr && __x->__left_->__parent_ != __x) - return 0; - // check __x->__right_ consistency - if (__x->__right_ != nullptr && __x->__right_->__parent_ != __x) - return 0; - // check __x->__left_ != __x->__right_ unless both are nullptr - if (__x->__left_ == __x->__right_ && __x->__left_ != nullptr) - return 0; - // If this is red, neither child can be red - if (!__x->__is_black_) - { - if (__x->__left_ && !__x->__left_->__is_black_) - return 0; - if (__x->__right_ && !__x->__right_->__is_black_) - return 0; - } - unsigned __h = __tree_sub_invariant(__x->__left_); - if (__h == 0) - return 0; // invalid left subtree - if (__h != __tree_sub_invariant(__x->__right_)) - return 0; // invalid or different height right subtree - return __h + __x->__is_black_; // return black height of this node -} - -// Determintes if the red black tree rooted at __root is a proper red black tree. -// __root == nullptr is a proper tree. Returns true is __root is a proper -// red black tree, else returns false. -template -bool -__tree_invariant(_NodePtr __root) -{ - if (__root == nullptr) - return true; - // check __x->__parent_ consistency - if (__root->__parent_ == nullptr) - return false; - if (!__tree_is_left_child(__root)) - return false; - // root must be black - if (!__root->__is_black_) - return false; - // do normal node checks - return __tree_sub_invariant(__root) != 0; -} - -// Returns: pointer to the left-most node under __x. -// Precondition: __x != nullptr. -template -inline _LIBCPP_INLINE_VISIBILITY -_NodePtr -__tree_min(_NodePtr __x) _NOEXCEPT -{ - while (__x->__left_ != nullptr) - __x = __x->__left_; - return __x; -} - -// Returns: pointer to the right-most node under __x. -// Precondition: __x != nullptr. -template -inline _LIBCPP_INLINE_VISIBILITY -_NodePtr -__tree_max(_NodePtr __x) _NOEXCEPT -{ - while (__x->__right_ != nullptr) - __x = __x->__right_; - return __x; -} - -// Returns: pointer to the next in-order node after __x. -// Precondition: __x != nullptr. -template -_NodePtr -__tree_next(_NodePtr __x) _NOEXCEPT -{ - if (__x->__right_ != nullptr) - return __tree_min(__x->__right_); - while (!__tree_is_left_child(__x)) - __x = __x->__parent_; - return __x->__parent_; -} - -// Returns: pointer to the previous in-order node before __x. -// Precondition: __x != nullptr. -template -_NodePtr -__tree_prev(_NodePtr __x) _NOEXCEPT -{ - if (__x->__left_ != nullptr) - return __tree_max(__x->__left_); - while (__tree_is_left_child(__x)) - __x = __x->__parent_; - return __x->__parent_; -} - -// Returns: pointer to a node which has no children -// Precondition: __x != nullptr. -template -_NodePtr -__tree_leaf(_NodePtr __x) _NOEXCEPT -{ - while (true) - { - if (__x->__left_ != nullptr) - { - __x = __x->__left_; - continue; - } - if (__x->__right_ != nullptr) - { - __x = __x->__right_; - continue; - } - break; - } - return __x; -} - -// Effects: Makes __x->__right_ the subtree root with __x as its left child -// while preserving in-order order. -// Precondition: __x->__right_ != nullptr -template -void -__tree_left_rotate(_NodePtr __x) _NOEXCEPT -{ - _NodePtr __y = __x->__right_; - __x->__right_ = __y->__left_; - if (__x->__right_ != nullptr) - __x->__right_->__parent_ = __x; - __y->__parent_ = __x->__parent_; - if (__tree_is_left_child(__x)) - __x->__parent_->__left_ = __y; - else - __x->__parent_->__right_ = __y; - __y->__left_ = __x; - __x->__parent_ = __y; -} - -// Effects: Makes __x->__left_ the subtree root with __x as its right child -// while preserving in-order order. -// Precondition: __x->__left_ != nullptr -template -void -__tree_right_rotate(_NodePtr __x) _NOEXCEPT -{ - _NodePtr __y = __x->__left_; - __x->__left_ = __y->__right_; - if (__x->__left_ != nullptr) - __x->__left_->__parent_ = __x; - __y->__parent_ = __x->__parent_; - if (__tree_is_left_child(__x)) - __x->__parent_->__left_ = __y; - else - __x->__parent_->__right_ = __y; - __y->__right_ = __x; - __x->__parent_ = __y; -} - -// Effects: Rebalances __root after attaching __x to a leaf. -// Precondition: __root != nulptr && __x != nullptr. -// __x has no children. -// __x == __root or == a direct or indirect child of __root. -// If __x were to be unlinked from __root (setting __root to -// nullptr if __root == __x), __tree_invariant(__root) == true. -// Postcondition: __tree_invariant(end_node->__left_) == true. end_node->__left_ -// may be different than the value passed in as __root. -template -void -__tree_balance_after_insert(_NodePtr __root, _NodePtr __x) _NOEXCEPT -{ - __x->__is_black_ = __x == __root; - while (__x != __root && !__x->__parent_->__is_black_) - { - // __x->__parent_ != __root because __x->__parent_->__is_black == false - if (__tree_is_left_child(__x->__parent_)) - { - _NodePtr __y = __x->__parent_->__parent_->__right_; - if (__y != nullptr && !__y->__is_black_) - { - __x = __x->__parent_; - __x->__is_black_ = true; - __x = __x->__parent_; - __x->__is_black_ = __x == __root; - __y->__is_black_ = true; - } - else - { - if (!__tree_is_left_child(__x)) - { - __x = __x->__parent_; - __tree_left_rotate(__x); - } - __x = __x->__parent_; - __x->__is_black_ = true; - __x = __x->__parent_; - __x->__is_black_ = false; - __tree_right_rotate(__x); - break; - } - } - else - { - _NodePtr __y = __x->__parent_->__parent_->__left_; - if (__y != nullptr && !__y->__is_black_) - { - __x = __x->__parent_; - __x->__is_black_ = true; - __x = __x->__parent_; - __x->__is_black_ = __x == __root; - __y->__is_black_ = true; - } - else - { - if (__tree_is_left_child(__x)) - { - __x = __x->__parent_; - __tree_right_rotate(__x); - } - __x = __x->__parent_; - __x->__is_black_ = true; - __x = __x->__parent_; - __x->__is_black_ = false; - __tree_left_rotate(__x); - break; - } - } - } -} - -// Precondition: __root != nullptr && __z != nullptr. -// __tree_invariant(__root) == true. -// __z == __root or == a direct or indirect child of __root. -// Effects: unlinks __z from the tree rooted at __root, rebalancing as needed. -// Postcondition: __tree_invariant(end_node->__left_) == true && end_node->__left_ -// nor any of its children refer to __z. end_node->__left_ -// may be different than the value passed in as __root. -template -void -__tree_remove(_NodePtr __root, _NodePtr __z) _NOEXCEPT -{ - // __z will be removed from the tree. Client still needs to destruct/deallocate it - // __y is either __z, or if __z has two children, __tree_next(__z). - // __y will have at most one child. - // __y will be the initial hole in the tree (make the hole at a leaf) - _NodePtr __y = (__z->__left_ == nullptr || __z->__right_ == nullptr) ? - __z : __tree_next(__z); - // __x is __y's possibly null single child - _NodePtr __x = __y->__left_ != nullptr ? __y->__left_ : __y->__right_; - // __w is __x's possibly null uncle (will become __x's sibling) - _NodePtr __w = nullptr; - // link __x to __y's parent, and find __w - if (__x != nullptr) - __x->__parent_ = __y->__parent_; - if (__tree_is_left_child(__y)) - { - __y->__parent_->__left_ = __x; - if (__y != __root) - __w = __y->__parent_->__right_; - else - __root = __x; // __w == nullptr - } - else - { - __y->__parent_->__right_ = __x; - // __y can't be root if it is a right child - __w = __y->__parent_->__left_; - } - bool __removed_black = __y->__is_black_; - // If we didn't remove __z, do so now by splicing in __y for __z, - // but copy __z's color. This does not impact __x or __w. - if (__y != __z) - { - // __z->__left_ != nulptr but __z->__right_ might == __x == nullptr - __y->__parent_ = __z->__parent_; - if (__tree_is_left_child(__z)) - __y->__parent_->__left_ = __y; - else - __y->__parent_->__right_ = __y; - __y->__left_ = __z->__left_; - __y->__left_->__parent_ = __y; - __y->__right_ = __z->__right_; - if (__y->__right_ != nullptr) - __y->__right_->__parent_ = __y; - __y->__is_black_ = __z->__is_black_; - if (__root == __z) - __root = __y; - } - // There is no need to rebalance if we removed a red, or if we removed - // the last node. - if (__removed_black && __root != nullptr) - { - // Rebalance: - // __x has an implicit black color (transferred from the removed __y) - // associated with it, no matter what its color is. - // If __x is __root (in which case it can't be null), it is supposed - // to be black anyway, and if it is doubly black, then the double - // can just be ignored. - // If __x is red (in which case it can't be null), then it can absorb - // the implicit black just by setting its color to black. - // Since __y was black and only had one child (which __x points to), __x - // is either red with no children, else null, otherwise __y would have - // different black heights under left and right pointers. - // if (__x == __root || __x != nullptr && !__x->__is_black_) - if (__x != nullptr) - __x->__is_black_ = true; - else - { - // Else __x isn't root, and is "doubly black", even though it may - // be null. __w can not be null here, else the parent would - // see a black height >= 2 on the __x side and a black height - // of 1 on the __w side (__w must be a non-null black or a red - // with a non-null black child). - while (true) - { - if (!__tree_is_left_child(__w)) // if x is left child - { - if (!__w->__is_black_) - { - __w->__is_black_ = true; - __w->__parent_->__is_black_ = false; - __tree_left_rotate(__w->__parent_); - // __x is still valid - // reset __root only if necessary - if (__root == __w->__left_) - __root = __w; - // reset sibling, and it still can't be null - __w = __w->__left_->__right_; - } - // __w->__is_black_ is now true, __w may have null children - if ((__w->__left_ == nullptr || __w->__left_->__is_black_) && - (__w->__right_ == nullptr || __w->__right_->__is_black_)) - { - __w->__is_black_ = false; - __x = __w->__parent_; - // __x can no longer be null - if (__x == __root || !__x->__is_black_) - { - __x->__is_black_ = true; - break; - } - // reset sibling, and it still can't be null - __w = __tree_is_left_child(__x) ? - __x->__parent_->__right_ : - __x->__parent_->__left_; - // continue; - } - else // __w has a red child - { - if (__w->__right_ == nullptr || __w->__right_->__is_black_) - { - // __w left child is non-null and red - __w->__left_->__is_black_ = true; - __w->__is_black_ = false; - __tree_right_rotate(__w); - // __w is known not to be root, so root hasn't changed - // reset sibling, and it still can't be null - __w = __w->__parent_; - } - // __w has a right red child, left child may be null - __w->__is_black_ = __w->__parent_->__is_black_; - __w->__parent_->__is_black_ = true; - __w->__right_->__is_black_ = true; - __tree_left_rotate(__w->__parent_); - break; - } - } - else - { - if (!__w->__is_black_) - { - __w->__is_black_ = true; - __w->__parent_->__is_black_ = false; - __tree_right_rotate(__w->__parent_); - // __x is still valid - // reset __root only if necessary - if (__root == __w->__right_) - __root = __w; - // reset sibling, and it still can't be null - __w = __w->__right_->__left_; - } - // __w->__is_black_ is now true, __w may have null children - if ((__w->__left_ == nullptr || __w->__left_->__is_black_) && - (__w->__right_ == nullptr || __w->__right_->__is_black_)) - { - __w->__is_black_ = false; - __x = __w->__parent_; - // __x can no longer be null - if (!__x->__is_black_ || __x == __root) - { - __x->__is_black_ = true; - break; - } - // reset sibling, and it still can't be null - __w = __tree_is_left_child(__x) ? - __x->__parent_->__right_ : - __x->__parent_->__left_; - // continue; - } - else // __w has a red child - { - if (__w->__left_ == nullptr || __w->__left_->__is_black_) - { - // __w right child is non-null and red - __w->__right_->__is_black_ = true; - __w->__is_black_ = false; - __tree_left_rotate(__w); - // __w is known not to be root, so root hasn't changed - // reset sibling, and it still can't be null - __w = __w->__parent_; - } - // __w has a left red child, right child may be null - __w->__is_black_ = __w->__parent_->__is_black_; - __w->__parent_->__is_black_ = true; - __w->__left_->__is_black_ = true; - __tree_right_rotate(__w->__parent_); - break; - } - } - } - } - } -} - -template class __map_node_destructor; - -template -class __tree_node_destructor -{ - typedef _Allocator allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename __alloc_traits::value_type::value_type value_type; -public: - typedef typename __alloc_traits::pointer pointer; -private: - - allocator_type& __na_; - - __tree_node_destructor& operator=(const __tree_node_destructor&); - -public: - bool __value_constructed; - - _LIBCPP_INLINE_VISIBILITY - explicit __tree_node_destructor(allocator_type& __na, bool __val = false) _NOEXCEPT - : __na_(__na), - __value_constructed(__val) - {} - - _LIBCPP_INLINE_VISIBILITY - void operator()(pointer __p) _NOEXCEPT - { - if (__value_constructed) - __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_)); - if (__p) - __alloc_traits::deallocate(__na_, __p, 1); - } - - template friend class __map_node_destructor; -}; - -// node - -template -class __tree_end_node -{ -public: - typedef _Pointer pointer; - pointer __left_; - - _LIBCPP_INLINE_VISIBILITY - __tree_end_node() _NOEXCEPT : __left_() {} -}; - -template -class __tree_node_base - : public __tree_end_node - < - typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__tree_node_base<_VoidPtr> > -#else - rebind<__tree_node_base<_VoidPtr> >::other -#endif - > -{ - __tree_node_base(const __tree_node_base&); - __tree_node_base& operator=(const __tree_node_base&); -public: - typedef typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__tree_node_base> -#else - rebind<__tree_node_base>::other -#endif - pointer; - typedef typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - const_pointer; - typedef __tree_end_node base; - - pointer __right_; - pointer __parent_; - bool __is_black_; - - _LIBCPP_INLINE_VISIBILITY - __tree_node_base() _NOEXCEPT - : __right_(), __parent_(), __is_black_(false) {} -}; - -template -class __tree_node - : public __tree_node_base<_VoidPtr> -{ -public: - typedef __tree_node_base<_VoidPtr> base; - typedef _Tp value_type; - - value_type __value_; - -#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - template - _LIBCPP_INLINE_VISIBILITY - explicit __tree_node(_Args&& ...__args) - : __value_(_VSTD::forward<_Args>(__args)...) {} -#else // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - _LIBCPP_INLINE_VISIBILITY - explicit __tree_node(const value_type& __v) - : __value_(__v) {} -#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) -}; - -template class _LIBCPP_TYPE_VIS_ONLY __map_iterator; -template class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator; - -template -class _LIBCPP_TYPE_VIS_ONLY __tree_iterator -{ - typedef _NodePtr __node_pointer; - typedef typename pointer_traits<__node_pointer>::element_type __node; - - __node_pointer __ptr_; - - typedef pointer_traits<__node_pointer> __pointer_traits; -public: - typedef bidirectional_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _DiffType difference_type; - typedef value_type& reference; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY __tree_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER > 11 - : __ptr_(nullptr) -#endif - {} - - _LIBCPP_INLINE_VISIBILITY reference operator*() const {return __ptr_->__value_;} - _LIBCPP_INLINE_VISIBILITY pointer operator->() const - {return pointer_traits::pointer_to(__ptr_->__value_);} - - _LIBCPP_INLINE_VISIBILITY - __tree_iterator& operator++() { - __ptr_ = static_cast<__node_pointer>( - __tree_next(static_cast(__ptr_))); - return *this; - } - _LIBCPP_INLINE_VISIBILITY - __tree_iterator operator++(int) - {__tree_iterator __t(*this); ++(*this); return __t;} - - _LIBCPP_INLINE_VISIBILITY - __tree_iterator& operator--() { - __ptr_ = static_cast<__node_pointer>( - __tree_prev(static_cast(__ptr_))); - return *this; - } - _LIBCPP_INLINE_VISIBILITY - __tree_iterator operator--(int) - {__tree_iterator __t(*this); --(*this); return __t;} - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __tree_iterator& __x, const __tree_iterator& __y) - {return __x.__ptr_ == __y.__ptr_;} - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __tree_iterator& __x, const __tree_iterator& __y) - {return !(__x == __y);} - -private: - _LIBCPP_INLINE_VISIBILITY - explicit __tree_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {} - template friend class __tree; - template friend class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator; - template friend class _LIBCPP_TYPE_VIS_ONLY __map_iterator; - template friend class _LIBCPP_TYPE_VIS_ONLY map; - template friend class _LIBCPP_TYPE_VIS_ONLY multimap; - template friend class _LIBCPP_TYPE_VIS_ONLY set; - template friend class _LIBCPP_TYPE_VIS_ONLY multiset; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator -{ - typedef _ConstNodePtr __node_pointer; - typedef typename pointer_traits<__node_pointer>::element_type __node; - - __node_pointer __ptr_; - - typedef pointer_traits<__node_pointer> __pointer_traits; -public: - typedef bidirectional_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _DiffType difference_type; - typedef const value_type& reference; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY __tree_const_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER > 11 - : __ptr_(nullptr) -#endif - {} - -private: - typedef typename remove_const<__node>::type __non_const_node; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__non_const_node> -#else - rebind<__non_const_node>::other -#endif - __non_const_node_pointer; - typedef __tree_iterator - __non_const_iterator; -public: - _LIBCPP_INLINE_VISIBILITY - __tree_const_iterator(__non_const_iterator __p) _NOEXCEPT - : __ptr_(__p.__ptr_) {} - - _LIBCPP_INLINE_VISIBILITY reference operator*() const {return __ptr_->__value_;} - _LIBCPP_INLINE_VISIBILITY pointer operator->() const - {return pointer_traits::pointer_to(__ptr_->__value_);} - - _LIBCPP_INLINE_VISIBILITY - __tree_const_iterator& operator++() { - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - __node_base_pointer; - - __ptr_ = static_cast<__node_pointer>( - __tree_next(static_cast<__node_base_pointer>(__ptr_))); - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - __tree_const_iterator operator++(int) - {__tree_const_iterator __t(*this); ++(*this); return __t;} - - _LIBCPP_INLINE_VISIBILITY - __tree_const_iterator& operator--() { - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - __node_base_pointer; - - __ptr_ = static_cast<__node_pointer>( - __tree_prev(static_cast<__node_base_pointer>(__ptr_))); - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - __tree_const_iterator operator--(int) - {__tree_const_iterator __t(*this); --(*this); return __t;} - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __tree_const_iterator& __x, const __tree_const_iterator& __y) - {return __x.__ptr_ == __y.__ptr_;} - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __tree_const_iterator& __x, const __tree_const_iterator& __y) - {return !(__x == __y);} - -private: - _LIBCPP_INLINE_VISIBILITY - explicit __tree_const_iterator(__node_pointer __p) _NOEXCEPT - : __ptr_(__p) {} - template friend class __tree; - template friend class _LIBCPP_TYPE_VIS_ONLY map; - template friend class _LIBCPP_TYPE_VIS_ONLY multimap; - template friend class _LIBCPP_TYPE_VIS_ONLY set; - template friend class _LIBCPP_TYPE_VIS_ONLY multiset; - template friend class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator; -}; - -template -class __tree -{ -public: - typedef _Tp value_type; - typedef _Compare value_compare; - typedef _Allocator allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; - typedef typename __alloc_traits::size_type size_type; - typedef typename __alloc_traits::difference_type difference_type; - - typedef typename __alloc_traits::void_pointer __void_pointer; - - typedef __tree_node __node; - typedef __tree_node_base<__void_pointer> __node_base; - typedef typename __rebind_alloc_helper<__alloc_traits, __node>::type __node_allocator; - typedef allocator_traits<__node_allocator> __node_traits; - typedef typename __node_traits::pointer __node_pointer; - typedef typename __node_traits::pointer __node_const_pointer; - typedef typename __node_base::pointer __node_base_pointer; - typedef typename __node_base::pointer __node_base_const_pointer; -private: - typedef typename __node_base::base __end_node_t; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__end_node_t> -#else - rebind<__end_node_t>::other -#endif - __end_node_ptr; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__end_node_t> -#else - rebind<__end_node_t>::other -#endif - __end_node_const_ptr; - - __node_pointer __begin_node_; - __compressed_pair<__end_node_t, __node_allocator> __pair1_; - __compressed_pair __pair3_; - -public: - _LIBCPP_INLINE_VISIBILITY - __node_pointer __end_node() _NOEXCEPT - { - return static_cast<__node_pointer> - ( - pointer_traits<__end_node_ptr>::pointer_to(__pair1_.first()) - ); - } - _LIBCPP_INLINE_VISIBILITY - __node_const_pointer __end_node() const _NOEXCEPT - { - return static_cast<__node_const_pointer> - ( - pointer_traits<__end_node_const_ptr>::pointer_to(const_cast<__end_node_t&>(__pair1_.first())) - ); - } - _LIBCPP_INLINE_VISIBILITY - __node_allocator& __node_alloc() _NOEXCEPT {return __pair1_.second();} -private: - _LIBCPP_INLINE_VISIBILITY - const __node_allocator& __node_alloc() const _NOEXCEPT - {return __pair1_.second();} - _LIBCPP_INLINE_VISIBILITY - __node_pointer& __begin_node() _NOEXCEPT {return __begin_node_;} - _LIBCPP_INLINE_VISIBILITY - const __node_pointer& __begin_node() const _NOEXCEPT {return __begin_node_;} -public: - _LIBCPP_INLINE_VISIBILITY - allocator_type __alloc() const _NOEXCEPT - {return allocator_type(__node_alloc());} -private: - _LIBCPP_INLINE_VISIBILITY - size_type& size() _NOEXCEPT {return __pair3_.first();} -public: - _LIBCPP_INLINE_VISIBILITY - const size_type& size() const _NOEXCEPT {return __pair3_.first();} - _LIBCPP_INLINE_VISIBILITY - value_compare& value_comp() _NOEXCEPT {return __pair3_.second();} - _LIBCPP_INLINE_VISIBILITY - const value_compare& value_comp() const _NOEXCEPT - {return __pair3_.second();} -public: - _LIBCPP_INLINE_VISIBILITY - __node_pointer __root() _NOEXCEPT - {return static_cast<__node_pointer> (__end_node()->__left_);} - _LIBCPP_INLINE_VISIBILITY - __node_const_pointer __root() const _NOEXCEPT - {return static_cast<__node_const_pointer>(__end_node()->__left_);} - - typedef __tree_iterator iterator; - typedef __tree_const_iterator const_iterator; - - explicit __tree(const value_compare& __comp) - _NOEXCEPT_( - is_nothrow_default_constructible<__node_allocator>::value && - is_nothrow_copy_constructible::value); - explicit __tree(const allocator_type& __a); - __tree(const value_compare& __comp, const allocator_type& __a); - __tree(const __tree& __t); - __tree& operator=(const __tree& __t); - template - void __assign_unique(_InputIterator __first, _InputIterator __last); - template - void __assign_multi(_InputIterator __first, _InputIterator __last); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - __tree(__tree&& __t) - _NOEXCEPT_( - is_nothrow_move_constructible<__node_allocator>::value && - is_nothrow_move_constructible::value); - __tree(__tree&& __t, const allocator_type& __a); - __tree& operator=(__tree&& __t) - _NOEXCEPT_( - __node_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable<__node_allocator>::value); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - ~__tree(); - - _LIBCPP_INLINE_VISIBILITY - iterator begin() _NOEXCEPT {return iterator(__begin_node());} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT {return const_iterator(__begin_node());} - _LIBCPP_INLINE_VISIBILITY - iterator end() _NOEXCEPT {return iterator(__end_node());} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT {return const_iterator(__end_node());} - - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const _NOEXCEPT - {return __node_traits::max_size(__node_alloc());} - - void clear() _NOEXCEPT; - - void swap(__tree& __t) - _NOEXCEPT_( - __is_nothrow_swappable::value && - (!__node_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value)); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - template - pair - __emplace_unique(_Args&&... __args); - template - iterator - __emplace_multi(_Args&&... __args); - - template - iterator - __emplace_hint_unique(const_iterator __p, _Args&&... __args); - template - iterator - __emplace_hint_multi(const_iterator __p, _Args&&... __args); -#endif // _LIBCPP_HAS_NO_VARIADICS - - template - pair __insert_unique(_Vp&& __v); - template - iterator __insert_unique(const_iterator __p, _Vp&& __v); - template - iterator __insert_multi(_Vp&& __v); - template - iterator __insert_multi(const_iterator __p, _Vp&& __v); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - pair __insert_unique(const value_type& __v); - iterator __insert_unique(const_iterator __p, const value_type& __v); - iterator __insert_multi(const value_type& __v); - iterator __insert_multi(const_iterator __p, const value_type& __v); - - pair __node_insert_unique(__node_pointer __nd); - iterator __node_insert_unique(const_iterator __p, - __node_pointer __nd); - - iterator __node_insert_multi(__node_pointer __nd); - iterator __node_insert_multi(const_iterator __p, __node_pointer __nd); - - iterator erase(const_iterator __p); - iterator erase(const_iterator __f, const_iterator __l); - template - size_type __erase_unique(const _Key& __k); - template - size_type __erase_multi(const _Key& __k); - - void __insert_node_at(__node_base_pointer __parent, - __node_base_pointer& __child, - __node_base_pointer __new_node); - - template - iterator find(const _Key& __v); - template - const_iterator find(const _Key& __v) const; - - template - size_type __count_unique(const _Key& __k) const; - template - size_type __count_multi(const _Key& __k) const; - - template - _LIBCPP_INLINE_VISIBILITY - iterator lower_bound(const _Key& __v) - {return __lower_bound(__v, __root(), __end_node());} - template - iterator __lower_bound(const _Key& __v, - __node_pointer __root, - __node_pointer __result); - template - _LIBCPP_INLINE_VISIBILITY - const_iterator lower_bound(const _Key& __v) const - {return __lower_bound(__v, __root(), __end_node());} - template - const_iterator __lower_bound(const _Key& __v, - __node_const_pointer __root, - __node_const_pointer __result) const; - template - _LIBCPP_INLINE_VISIBILITY - iterator upper_bound(const _Key& __v) - {return __upper_bound(__v, __root(), __end_node());} - template - iterator __upper_bound(const _Key& __v, - __node_pointer __root, - __node_pointer __result); - template - _LIBCPP_INLINE_VISIBILITY - const_iterator upper_bound(const _Key& __v) const - {return __upper_bound(__v, __root(), __end_node());} - template - const_iterator __upper_bound(const _Key& __v, - __node_const_pointer __root, - __node_const_pointer __result) const; - template - pair - __equal_range_unique(const _Key& __k); - template - pair - __equal_range_unique(const _Key& __k) const; - - template - pair - __equal_range_multi(const _Key& __k); - template - pair - __equal_range_multi(const _Key& __k) const; - - typedef __tree_node_destructor<__node_allocator> _Dp; - typedef unique_ptr<__node, _Dp> __node_holder; - - __node_holder remove(const_iterator __p) _NOEXCEPT; -private: - typename __node_base::pointer& - __find_leaf_low(typename __node_base::pointer& __parent, const value_type& __v); - typename __node_base::pointer& - __find_leaf_high(typename __node_base::pointer& __parent, const value_type& __v); - typename __node_base::pointer& - __find_leaf(const_iterator __hint, - typename __node_base::pointer& __parent, const value_type& __v); - template - typename __node_base::pointer& - __find_equal(typename __node_base::pointer& __parent, const _Key& __v); - template - typename __node_base::pointer& - __find_equal(const_iterator __hint, typename __node_base::pointer& __parent, - const _Key& __v); - -#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - template - __node_holder __construct_node(_Args&& ...__args); -#else // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - __node_holder __construct_node(const value_type& __v); -#endif - - void destroy(__node_pointer __nd) _NOEXCEPT; - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __tree& __t) - {__copy_assign_alloc(__t, integral_constant());} - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __tree& __t, true_type) - {__node_alloc() = __t.__node_alloc();} - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __tree& __t, false_type) {} - - void __move_assign(__tree& __t, false_type); - void __move_assign(__tree& __t, true_type) - _NOEXCEPT_(is_nothrow_move_assignable::value && - is_nothrow_move_assignable<__node_allocator>::value); - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__tree& __t) - _NOEXCEPT_( - !__node_traits::propagate_on_container_move_assignment::value || - is_nothrow_move_assignable<__node_allocator>::value) - {__move_assign_alloc(__t, integral_constant());} - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__tree& __t, true_type) - _NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value) - {__node_alloc() = _VSTD::move(__t.__node_alloc());} - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__tree& __t, false_type) _NOEXCEPT {} - - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__node_allocator& __x, __node_allocator& __y) - _NOEXCEPT_( - !__node_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value) - {__swap_alloc(__x, __y, integral_constant());} - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__node_allocator& __x, __node_allocator& __y, true_type) - _NOEXCEPT_(__is_nothrow_swappable<__node_allocator>::value) - { - using _VSTD::swap; - swap(__x, __y); - } - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__node_allocator& __x, __node_allocator& __y, false_type) - _NOEXCEPT - {} - - __node_pointer __detach(); - static __node_pointer __detach(__node_pointer); - - template friend class _LIBCPP_TYPE_VIS_ONLY map; - template friend class _LIBCPP_TYPE_VIS_ONLY multimap; -}; - -template -__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp) - _NOEXCEPT_( - is_nothrow_default_constructible<__node_allocator>::value && - is_nothrow_copy_constructible::value) - : __pair3_(0, __comp) -{ - __begin_node() = __end_node(); -} - -template -__tree<_Tp, _Compare, _Allocator>::__tree(const allocator_type& __a) - : __pair1_(__node_allocator(__a)), - __begin_node_(__node_pointer()), - __pair3_(0) -{ - __begin_node() = __end_node(); -} - -template -__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp, - const allocator_type& __a) - : __pair1_(__node_allocator(__a)), - __begin_node_(__node_pointer()), - __pair3_(0, __comp) -{ - __begin_node() = __end_node(); -} - -// Precondition: size() != 0 -template -typename __tree<_Tp, _Compare, _Allocator>::__node_pointer -__tree<_Tp, _Compare, _Allocator>::__detach() -{ - __node_pointer __cache = __begin_node(); - __begin_node() = __end_node(); - __end_node()->__left_->__parent_ = nullptr; - __end_node()->__left_ = nullptr; - size() = 0; - // __cache->__left_ == nullptr - if (__cache->__right_ != nullptr) - __cache = static_cast<__node_pointer>(__cache->__right_); - // __cache->__left_ == nullptr - // __cache->__right_ == nullptr - return __cache; -} - -// Precondition: __cache != nullptr -// __cache->left_ == nullptr -// __cache->right_ == nullptr -// This is no longer a red-black tree -template -typename __tree<_Tp, _Compare, _Allocator>::__node_pointer -__tree<_Tp, _Compare, _Allocator>::__detach(__node_pointer __cache) -{ - if (__cache->__parent_ == nullptr) - return nullptr; - if (__tree_is_left_child(static_cast<__node_base_pointer>(__cache))) - { - __cache->__parent_->__left_ = nullptr; - __cache = static_cast<__node_pointer>(__cache->__parent_); - if (__cache->__right_ == nullptr) - return __cache; - return static_cast<__node_pointer>(__tree_leaf(__cache->__right_)); - } - // __cache is right child - __cache->__parent_->__right_ = nullptr; - __cache = static_cast<__node_pointer>(__cache->__parent_); - if (__cache->__left_ == nullptr) - return __cache; - return static_cast<__node_pointer>(__tree_leaf(__cache->__left_)); -} - -template -__tree<_Tp, _Compare, _Allocator>& -__tree<_Tp, _Compare, _Allocator>::operator=(const __tree& __t) -{ - if (this != &__t) - { - value_comp() = __t.value_comp(); - __copy_assign_alloc(__t); - __assign_multi(__t.begin(), __t.end()); - } - return *this; -} - -template -template -void -__tree<_Tp, _Compare, _Allocator>::__assign_unique(_InputIterator __first, _InputIterator __last) -{ - if (size() != 0) - { - __node_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __cache != nullptr && __first != __last; ++__first) - { - __cache->__value_ = *__first; - __node_pointer __next = __detach(__cache); - __node_insert_unique(__cache); - __cache = __next; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - while (__cache->__parent_ != nullptr) - __cache = static_cast<__node_pointer>(__cache->__parent_); - destroy(__cache); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - if (__cache != nullptr) - { - while (__cache->__parent_ != nullptr) - __cache = static_cast<__node_pointer>(__cache->__parent_); - destroy(__cache); - } - } - for (; __first != __last; ++__first) - __insert_unique(*__first); -} - -template -template -void -__tree<_Tp, _Compare, _Allocator>::__assign_multi(_InputIterator __first, _InputIterator __last) -{ - if (size() != 0) - { - __node_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __cache != nullptr && __first != __last; ++__first) - { - __cache->__value_ = *__first; - __node_pointer __next = __detach(__cache); - __node_insert_multi(__cache); - __cache = __next; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - while (__cache->__parent_ != nullptr) - __cache = static_cast<__node_pointer>(__cache->__parent_); - destroy(__cache); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - if (__cache != nullptr) - { - while (__cache->__parent_ != nullptr) - __cache = static_cast<__node_pointer>(__cache->__parent_); - destroy(__cache); - } - } - for (; __first != __last; ++__first) - __insert_multi(*__first); -} - -template -__tree<_Tp, _Compare, _Allocator>::__tree(const __tree& __t) - : __begin_node_(__node_pointer()), - __pair1_(__node_traits::select_on_container_copy_construction(__t.__node_alloc())), - __pair3_(0, __t.value_comp()) -{ - __begin_node() = __end_node(); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -__tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t) - _NOEXCEPT_( - is_nothrow_move_constructible<__node_allocator>::value && - is_nothrow_move_constructible::value) - : __begin_node_(_VSTD::move(__t.__begin_node_)), - __pair1_(_VSTD::move(__t.__pair1_)), - __pair3_(_VSTD::move(__t.__pair3_)) -{ - if (size() == 0) - __begin_node() = __end_node(); - else - { - __end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__end_node()); - __t.__begin_node() = __t.__end_node(); - __t.__end_node()->__left_ = nullptr; - __t.size() = 0; - } -} - -template -__tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t, const allocator_type& __a) - : __pair1_(__node_allocator(__a)), - __pair3_(0, _VSTD::move(__t.value_comp())) -{ - if (__a == __t.__alloc()) - { - if (__t.size() == 0) - __begin_node() = __end_node(); - else - { - __begin_node() = __t.__begin_node(); - __end_node()->__left_ = __t.__end_node()->__left_; - __end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__end_node()); - size() = __t.size(); - __t.__begin_node() = __t.__end_node(); - __t.__end_node()->__left_ = nullptr; - __t.size() = 0; - } - } - else - { - __begin_node() = __end_node(); - } -} - -template -void -__tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, true_type) - _NOEXCEPT_(is_nothrow_move_assignable::value && - is_nothrow_move_assignable<__node_allocator>::value) -{ - destroy(static_cast<__node_pointer>(__end_node()->__left_)); - __begin_node_ = __t.__begin_node_; - __pair1_.first() = __t.__pair1_.first(); - __move_assign_alloc(__t); - __pair3_ = _VSTD::move(__t.__pair3_); - if (size() == 0) - __begin_node() = __end_node(); - else - { - __end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__end_node()); - __t.__begin_node() = __t.__end_node(); - __t.__end_node()->__left_ = nullptr; - __t.size() = 0; - } -} - -template -void -__tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, false_type) -{ - if (__node_alloc() == __t.__node_alloc()) - __move_assign(__t, true_type()); - else - { - value_comp() = _VSTD::move(__t.value_comp()); - const_iterator __e = end(); - if (size() != 0) - { - __node_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - while (__cache != nullptr && __t.size() != 0) - { - __cache->__value_ = _VSTD::move(__t.remove(__t.begin())->__value_); - __node_pointer __next = __detach(__cache); - __node_insert_multi(__cache); - __cache = __next; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - while (__cache->__parent_ != nullptr) - __cache = static_cast<__node_pointer>(__cache->__parent_); - destroy(__cache); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - if (__cache != nullptr) - { - while (__cache->__parent_ != nullptr) - __cache = static_cast<__node_pointer>(__cache->__parent_); - destroy(__cache); - } - } - while (__t.size() != 0) - __insert_multi(__e, _VSTD::move(__t.remove(__t.begin())->__value_)); - } -} - -template -__tree<_Tp, _Compare, _Allocator>& -__tree<_Tp, _Compare, _Allocator>::operator=(__tree&& __t) - _NOEXCEPT_( - __node_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable<__node_allocator>::value) - -{ - __move_assign(__t, integral_constant()); - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -__tree<_Tp, _Compare, _Allocator>::~__tree() -{ - destroy(__root()); -} - -template -void -__tree<_Tp, _Compare, _Allocator>::destroy(__node_pointer __nd) _NOEXCEPT -{ - if (__nd != nullptr) - { - destroy(static_cast<__node_pointer>(__nd->__left_)); - destroy(static_cast<__node_pointer>(__nd->__right_)); - __node_allocator& __na = __node_alloc(); - __node_traits::destroy(__na, _VSTD::addressof(__nd->__value_)); - __node_traits::deallocate(__na, __nd, 1); - } -} - -template -void -__tree<_Tp, _Compare, _Allocator>::swap(__tree& __t) - _NOEXCEPT_( - __is_nothrow_swappable::value && - (!__node_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value)) -{ - using _VSTD::swap; - swap(__begin_node_, __t.__begin_node_); - swap(__pair1_.first(), __t.__pair1_.first()); - __swap_alloc(__node_alloc(), __t.__node_alloc()); - __pair3_.swap(__t.__pair3_); - if (size() == 0) - __begin_node() = __end_node(); - else - __end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__end_node()); - if (__t.size() == 0) - __t.__begin_node() = __t.__end_node(); - else - __t.__end_node()->__left_->__parent_ = static_cast<__node_base_pointer>(__t.__end_node()); -} - -template -void -__tree<_Tp, _Compare, _Allocator>::clear() _NOEXCEPT -{ - destroy(__root()); - size() = 0; - __begin_node() = __end_node(); - __end_node()->__left_ = nullptr; -} - -// Find lower_bound place to insert -// Set __parent to parent of null leaf -// Return reference to null leaf -template -typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& -__tree<_Tp, _Compare, _Allocator>::__find_leaf_low(typename __node_base::pointer& __parent, - const value_type& __v) -{ - __node_pointer __nd = __root(); - if (__nd != nullptr) - { - while (true) - { - if (value_comp()(__nd->__value_, __v)) - { - if (__nd->__right_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__right_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent->__right_; - } - } - else - { - if (__nd->__left_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__left_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent->__left_; - } - } - } - } - __parent = static_cast<__node_base_pointer>(__end_node()); - return __parent->__left_; -} - -// Find upper_bound place to insert -// Set __parent to parent of null leaf -// Return reference to null leaf -template -typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& -__tree<_Tp, _Compare, _Allocator>::__find_leaf_high(typename __node_base::pointer& __parent, - const value_type& __v) -{ - __node_pointer __nd = __root(); - if (__nd != nullptr) - { - while (true) - { - if (value_comp()(__v, __nd->__value_)) - { - if (__nd->__left_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__left_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent->__left_; - } - } - else - { - if (__nd->__right_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__right_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent->__right_; - } - } - } - } - __parent = static_cast<__node_base_pointer>(__end_node()); - return __parent->__left_; -} - -// Find leaf place to insert closest to __hint -// First check prior to __hint. -// Next check after __hint. -// Next do O(log N) search. -// Set __parent to parent of null leaf -// Return reference to null leaf -template -typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& -__tree<_Tp, _Compare, _Allocator>::__find_leaf(const_iterator __hint, - typename __node_base::pointer& __parent, - const value_type& __v) -{ - if (__hint == end() || !value_comp()(*__hint, __v)) // check before - { - // __v <= *__hint - const_iterator __prior = __hint; - if (__prior == begin() || !value_comp()(__v, *--__prior)) - { - // *prev(__hint) <= __v <= *__hint - if (__hint.__ptr_->__left_ == nullptr) - { - __parent = static_cast<__node_base_pointer>(__hint.__ptr_); - return __parent->__left_; - } - else - { - __parent = static_cast<__node_base_pointer>(__prior.__ptr_); - return __parent->__right_; - } - } - // __v < *prev(__hint) - return __find_leaf_high(__parent, __v); - } - // else __v > *__hint - return __find_leaf_low(__parent, __v); -} - -// Find place to insert if __v doesn't exist -// Set __parent to parent of null leaf -// Return reference to null leaf -// If __v exists, set parent to node of __v and return reference to node of __v -template -template -typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& -__tree<_Tp, _Compare, _Allocator>::__find_equal(typename __node_base::pointer& __parent, - const _Key& __v) -{ - __node_pointer __nd = __root(); - if (__nd != nullptr) - { - while (true) - { - if (value_comp()(__v, __nd->__value_)) - { - if (__nd->__left_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__left_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent->__left_; - } - } - else if (value_comp()(__nd->__value_, __v)) - { - if (__nd->__right_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__right_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent->__right_; - } - } - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent; - } - } - } - __parent = static_cast<__node_base_pointer>(__end_node()); - return __parent->__left_; -} - -// Find place to insert if __v doesn't exist -// First check prior to __hint. -// Next check after __hint. -// Next do O(log N) search. -// Set __parent to parent of null leaf -// Return reference to null leaf -// If __v exists, set parent to node of __v and return reference to node of __v -template -template -typename __tree<_Tp, _Compare, _Allocator>::__node_base::pointer& -__tree<_Tp, _Compare, _Allocator>::__find_equal(const_iterator __hint, - typename __node_base::pointer& __parent, - const _Key& __v) -{ - if (__hint == end() || value_comp()(__v, *__hint)) // check before - { - // __v < *__hint - const_iterator __prior = __hint; - if (__prior == begin() || value_comp()(*--__prior, __v)) - { - // *prev(__hint) < __v < *__hint - if (__hint.__ptr_->__left_ == nullptr) - { - __parent = static_cast<__node_base_pointer>(__hint.__ptr_); - return __parent->__left_; - } - else - { - __parent = static_cast<__node_base_pointer>(__prior.__ptr_); - return __parent->__right_; - } - } - // __v <= *prev(__hint) - return __find_equal(__parent, __v); - } - else if (value_comp()(*__hint, __v)) // check after - { - // *__hint < __v - const_iterator __next = _VSTD::next(__hint); - if (__next == end() || value_comp()(__v, *__next)) - { - // *__hint < __v < *_VSTD::next(__hint) - if (__hint.__ptr_->__right_ == nullptr) - { - __parent = static_cast<__node_base_pointer>(__hint.__ptr_); - return __parent->__right_; - } - else - { - __parent = static_cast<__node_base_pointer>(__next.__ptr_); - return __parent->__left_; - } - } - // *next(__hint) <= __v - return __find_equal(__parent, __v); - } - // else __v == *__hint - __parent = static_cast<__node_base_pointer>(__hint.__ptr_); - return __parent; -} - -template -void -__tree<_Tp, _Compare, _Allocator>::__insert_node_at(__node_base_pointer __parent, - __node_base_pointer& __child, - __node_base_pointer __new_node) -{ - __new_node->__left_ = nullptr; - __new_node->__right_ = nullptr; - __new_node->__parent_ = __parent; - __child = __new_node; - if (__begin_node()->__left_ != nullptr) - __begin_node() = static_cast<__node_pointer>(__begin_node()->__left_); - __tree_balance_after_insert(__end_node()->__left_, __child); - ++size(); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -typename __tree<_Tp, _Compare, _Allocator>::__node_holder -__tree<_Tp, _Compare, _Allocator>::__construct_node(_Args&& ...__args) -{ - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), _VSTD::forward<_Args>(__args)...); - __h.get_deleter().__value_constructed = true; - return __h; -} - -template -template -pair::iterator, bool> -__tree<_Tp, _Compare, _Allocator>::__emplace_unique(_Args&&... __args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - __node_base_pointer __parent; - __node_base_pointer& __child = __find_equal(__parent, __h->__value_); - __node_pointer __r = static_cast<__node_pointer>(__child); - bool __inserted = false; - if (__child == nullptr) - { - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - __r = __h.release(); - __inserted = true; - } - return pair(iterator(__r), __inserted); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__emplace_hint_unique(const_iterator __p, _Args&&... __args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - __node_base_pointer __parent; - __node_base_pointer& __child = __find_equal(__p, __parent, __h->__value_); - __node_pointer __r = static_cast<__node_pointer>(__child); - if (__child == nullptr) - { - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - __r = __h.release(); - } - return iterator(__r); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__emplace_multi(_Args&&... __args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - __node_base_pointer __parent; - __node_base_pointer& __child = __find_leaf_high(__parent, __h->__value_); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - return iterator(static_cast<__node_pointer>(__h.release())); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__emplace_hint_multi(const_iterator __p, - _Args&&... __args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - __node_base_pointer __parent; - __node_base_pointer& __child = __find_leaf(__p, __parent, __h->__value_); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - return iterator(static_cast<__node_pointer>(__h.release())); -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -template -template -pair::iterator, bool> -__tree<_Tp, _Compare, _Allocator>::__insert_unique(_Vp&& __v) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Vp>(__v)); - pair __r = __node_insert_unique(__h.get()); - if (__r.second) - __h.release(); - return __r; -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__insert_unique(const_iterator __p, _Vp&& __v) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Vp>(__v)); - iterator __r = __node_insert_unique(__p, __h.get()); - if (__r.__ptr_ == __h.get()) - __h.release(); - return __r; -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__insert_multi(_Vp&& __v) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Vp>(__v)); - __node_base_pointer __parent; - __node_base_pointer& __child = __find_leaf_high(__parent, __h->__value_); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - return iterator(__h.release()); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__insert_multi(const_iterator __p, _Vp&& __v) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Vp>(__v)); - __node_base_pointer __parent; - __node_base_pointer& __child = __find_leaf(__p, __parent, __h->__value_); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - return iterator(__h.release()); -} - -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -typename __tree<_Tp, _Compare, _Allocator>::__node_holder -__tree<_Tp, _Compare, _Allocator>::__construct_node(const value_type& __v) -{ - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), __v); - __h.get_deleter().__value_constructed = true; - return _VSTD::move(__h); // explicitly moved for C++03 -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -pair::iterator, bool> -__tree<_Tp, _Compare, _Allocator>::__insert_unique(const value_type& __v) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_equal(__parent, __v); - __node_pointer __r = static_cast<__node_pointer>(__child); - bool __inserted = false; - if (__child == nullptr) - { - __node_holder __h = __construct_node(__v); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - __r = __h.release(); - __inserted = true; - } - return pair(iterator(__r), __inserted); -} - -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__insert_unique(const_iterator __p, const value_type& __v) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_equal(__p, __parent, __v); - __node_pointer __r = static_cast<__node_pointer>(__child); - if (__child == nullptr) - { - __node_holder __h = __construct_node(__v); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - __r = __h.release(); - } - return iterator(__r); -} - -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__insert_multi(const value_type& __v) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_leaf_high(__parent, __v); - __node_holder __h = __construct_node(__v); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - return iterator(__h.release()); -} - -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__insert_multi(const_iterator __p, const value_type& __v) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_leaf(__p, __parent, __v); - __node_holder __h = __construct_node(__v); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - return iterator(__h.release()); -} - -template -pair::iterator, bool> -__tree<_Tp, _Compare, _Allocator>::__node_insert_unique(__node_pointer __nd) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_equal(__parent, __nd->__value_); - __node_pointer __r = static_cast<__node_pointer>(__child); - bool __inserted = false; - if (__child == nullptr) - { - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); - __r = __nd; - __inserted = true; - } - return pair(iterator(__r), __inserted); -} - -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__node_insert_unique(const_iterator __p, - __node_pointer __nd) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_equal(__p, __parent, __nd->__value_); - __node_pointer __r = static_cast<__node_pointer>(__child); - if (__child == nullptr) - { - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); - __r = __nd; - } - return iterator(__r); -} - -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__node_insert_multi(__node_pointer __nd) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_leaf_high(__parent, __nd->__value_); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); - return iterator(__nd); -} - -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__node_insert_multi(const_iterator __p, - __node_pointer __nd) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_leaf(__p, __parent, __nd->__value_); - __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); - return iterator(__nd); -} - -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::erase(const_iterator __p) -{ - __node_pointer __np = __p.__ptr_; - iterator __r(__np); - ++__r; - if (__begin_node() == __np) - __begin_node() = __r.__ptr_; - --size(); - __node_allocator& __na = __node_alloc(); - __tree_remove(__end_node()->__left_, - static_cast<__node_base_pointer>(__np)); - __node_traits::destroy(__na, const_cast(_VSTD::addressof(*__p))); - __node_traits::deallocate(__na, __np, 1); - return __r; -} - -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::erase(const_iterator __f, const_iterator __l) -{ - while (__f != __l) - __f = erase(__f); - return iterator(__l.__ptr_); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::size_type -__tree<_Tp, _Compare, _Allocator>::__erase_unique(const _Key& __k) -{ - iterator __i = find(__k); - if (__i == end()) - return 0; - erase(__i); - return 1; -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::size_type -__tree<_Tp, _Compare, _Allocator>::__erase_multi(const _Key& __k) -{ - pair __p = __equal_range_multi(__k); - size_type __r = 0; - for (; __p.first != __p.second; ++__r) - __p.first = erase(__p.first); - return __r; -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::find(const _Key& __v) -{ - iterator __p = __lower_bound(__v, __root(), __end_node()); - if (__p != end() && !value_comp()(__v, *__p)) - return __p; - return end(); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::const_iterator -__tree<_Tp, _Compare, _Allocator>::find(const _Key& __v) const -{ - const_iterator __p = __lower_bound(__v, __root(), __end_node()); - if (__p != end() && !value_comp()(__v, *__p)) - return __p; - return end(); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::size_type -__tree<_Tp, _Compare, _Allocator>::__count_unique(const _Key& __k) const -{ - __node_const_pointer __result = __end_node(); - __node_const_pointer __rt = __root(); - while (__rt != nullptr) - { - if (value_comp()(__k, __rt->__value_)) - { - __result = __rt; - __rt = static_cast<__node_const_pointer>(__rt->__left_); - } - else if (value_comp()(__rt->__value_, __k)) - __rt = static_cast<__node_const_pointer>(__rt->__right_); - else - return 1; - } - return 0; -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::size_type -__tree<_Tp, _Compare, _Allocator>::__count_multi(const _Key& __k) const -{ - __node_const_pointer __result = __end_node(); - __node_const_pointer __rt = __root(); - while (__rt != nullptr) - { - if (value_comp()(__k, __rt->__value_)) - { - __result = __rt; - __rt = static_cast<__node_const_pointer>(__rt->__left_); - } - else if (value_comp()(__rt->__value_, __k)) - __rt = static_cast<__node_const_pointer>(__rt->__right_); - else - return _VSTD::distance( - __lower_bound(__k, static_cast<__node_const_pointer>(__rt->__left_), __rt), - __upper_bound(__k, static_cast<__node_const_pointer>(__rt->__right_), __result) - ); - } - return 0; -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__lower_bound(const _Key& __v, - __node_pointer __root, - __node_pointer __result) -{ - while (__root != nullptr) - { - if (!value_comp()(__root->__value_, __v)) - { - __result = __root; - __root = static_cast<__node_pointer>(__root->__left_); - } - else - __root = static_cast<__node_pointer>(__root->__right_); - } - return iterator(__result); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::const_iterator -__tree<_Tp, _Compare, _Allocator>::__lower_bound(const _Key& __v, - __node_const_pointer __root, - __node_const_pointer __result) const -{ - while (__root != nullptr) - { - if (!value_comp()(__root->__value_, __v)) - { - __result = __root; - __root = static_cast<__node_const_pointer>(__root->__left_); - } - else - __root = static_cast<__node_const_pointer>(__root->__right_); - } - return const_iterator(__result); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::iterator -__tree<_Tp, _Compare, _Allocator>::__upper_bound(const _Key& __v, - __node_pointer __root, - __node_pointer __result) -{ - while (__root != nullptr) - { - if (value_comp()(__v, __root->__value_)) - { - __result = __root; - __root = static_cast<__node_pointer>(__root->__left_); - } - else - __root = static_cast<__node_pointer>(__root->__right_); - } - return iterator(__result); -} - -template -template -typename __tree<_Tp, _Compare, _Allocator>::const_iterator -__tree<_Tp, _Compare, _Allocator>::__upper_bound(const _Key& __v, - __node_const_pointer __root, - __node_const_pointer __result) const -{ - while (__root != nullptr) - { - if (value_comp()(__v, __root->__value_)) - { - __result = __root; - __root = static_cast<__node_const_pointer>(__root->__left_); - } - else - __root = static_cast<__node_const_pointer>(__root->__right_); - } - return const_iterator(__result); -} - -template -template -pair::iterator, - typename __tree<_Tp, _Compare, _Allocator>::iterator> -__tree<_Tp, _Compare, _Allocator>::__equal_range_unique(const _Key& __k) -{ - typedef pair _Pp; - __node_pointer __result = __end_node(); - __node_pointer __rt = __root(); - while (__rt != nullptr) - { - if (value_comp()(__k, __rt->__value_)) - { - __result = __rt; - __rt = static_cast<__node_pointer>(__rt->__left_); - } - else if (value_comp()(__rt->__value_, __k)) - __rt = static_cast<__node_pointer>(__rt->__right_); - else - return _Pp(iterator(__rt), - iterator( - __rt->__right_ != nullptr ? - static_cast<__node_pointer>(__tree_min(__rt->__right_)) - : __result)); - } - return _Pp(iterator(__result), iterator(__result)); -} - -template -template -pair::const_iterator, - typename __tree<_Tp, _Compare, _Allocator>::const_iterator> -__tree<_Tp, _Compare, _Allocator>::__equal_range_unique(const _Key& __k) const -{ - typedef pair _Pp; - __node_const_pointer __result = __end_node(); - __node_const_pointer __rt = __root(); - while (__rt != nullptr) - { - if (value_comp()(__k, __rt->__value_)) - { - __result = __rt; - __rt = static_cast<__node_const_pointer>(__rt->__left_); - } - else if (value_comp()(__rt->__value_, __k)) - __rt = static_cast<__node_const_pointer>(__rt->__right_); - else - return _Pp(const_iterator(__rt), - const_iterator( - __rt->__right_ != nullptr ? - static_cast<__node_const_pointer>(__tree_min(__rt->__right_)) - : __result)); - } - return _Pp(const_iterator(__result), const_iterator(__result)); -} - -template -template -pair::iterator, - typename __tree<_Tp, _Compare, _Allocator>::iterator> -__tree<_Tp, _Compare, _Allocator>::__equal_range_multi(const _Key& __k) -{ - typedef pair _Pp; - __node_pointer __result = __end_node(); - __node_pointer __rt = __root(); - while (__rt != nullptr) - { - if (value_comp()(__k, __rt->__value_)) - { - __result = __rt; - __rt = static_cast<__node_pointer>(__rt->__left_); - } - else if (value_comp()(__rt->__value_, __k)) - __rt = static_cast<__node_pointer>(__rt->__right_); - else - return _Pp(__lower_bound(__k, static_cast<__node_pointer>(__rt->__left_), __rt), - __upper_bound(__k, static_cast<__node_pointer>(__rt->__right_), __result)); - } - return _Pp(iterator(__result), iterator(__result)); -} - -template -template -pair::const_iterator, - typename __tree<_Tp, _Compare, _Allocator>::const_iterator> -__tree<_Tp, _Compare, _Allocator>::__equal_range_multi(const _Key& __k) const -{ - typedef pair _Pp; - __node_const_pointer __result = __end_node(); - __node_const_pointer __rt = __root(); - while (__rt != nullptr) - { - if (value_comp()(__k, __rt->__value_)) - { - __result = __rt; - __rt = static_cast<__node_const_pointer>(__rt->__left_); - } - else if (value_comp()(__rt->__value_, __k)) - __rt = static_cast<__node_const_pointer>(__rt->__right_); - else - return _Pp(__lower_bound(__k, static_cast<__node_const_pointer>(__rt->__left_), __rt), - __upper_bound(__k, static_cast<__node_const_pointer>(__rt->__right_), __result)); - } - return _Pp(const_iterator(__result), const_iterator(__result)); -} - -template -typename __tree<_Tp, _Compare, _Allocator>::__node_holder -__tree<_Tp, _Compare, _Allocator>::remove(const_iterator __p) _NOEXCEPT -{ - __node_pointer __np = __p.__ptr_; - if (__begin_node() == __np) - { - if (__np->__right_ != nullptr) - __begin_node() = static_cast<__node_pointer>(__np->__right_); - else - __begin_node() = static_cast<__node_pointer>(__np->__parent_); - } - --size(); - __tree_remove(__end_node()->__left_, - static_cast<__node_base_pointer>(__np)); - return __node_holder(__np, _Dp(__node_alloc(), true)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(__tree<_Tp, _Compare, _Allocator>& __x, - __tree<_Tp, _Compare, _Allocator>& __y) - _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) -{ - __x.swap(__y); -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___TREE diff --git a/libcxx/include/__tuple b/libcxx/include/__tuple deleted file mode 100644 index 2837ce708..000000000 --- a/libcxx/include/__tuple +++ /dev/null @@ -1,373 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP___TUPLE -#define _LIBCPP___TUPLE - -#include <__config> -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - - -_LIBCPP_BEGIN_NAMESPACE_STD - -template class _LIBCPP_TYPE_VIS_ONLY tuple_size; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_size - : public tuple_size<_Tp> {}; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_size - : public tuple_size<_Tp> {}; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_size - : public tuple_size<_Tp> {}; - -template class _LIBCPP_TYPE_VIS_ONLY tuple_element; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const _Tp> -{ -public: - typedef typename add_const::type>::type type; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, volatile _Tp> -{ -public: - typedef typename add_volatile::type>::type type; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const volatile _Tp> -{ -public: - typedef typename add_cv::type>::type type; -}; - -template struct __tuple_like : false_type {}; - -template struct __tuple_like : public __tuple_like<_Tp> {}; -template struct __tuple_like : public __tuple_like<_Tp> {}; -template struct __tuple_like : public __tuple_like<_Tp> {}; - -// tuple specializations - -#if !defined(_LIBCPP_HAS_NO_VARIADICS) -template class _LIBCPP_TYPE_VIS_ONLY tuple; - -template struct __tuple_like > : true_type {}; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -typename tuple_element<_Ip, tuple<_Tp...> >::type& -get(tuple<_Tp...>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -const typename tuple_element<_Ip, tuple<_Tp...> >::type& -get(const tuple<_Tp...>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -typename tuple_element<_Ip, tuple<_Tp...> >::type&& -get(tuple<_Tp...>&&) _NOEXCEPT; -#endif - -// pair specializations - -template struct _LIBCPP_TYPE_VIS_ONLY pair; - -template struct __tuple_like > : true_type {}; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -typename tuple_element<_Ip, pair<_T1, _T2> >::type& -get(pair<_T1, _T2>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -const typename tuple_element<_Ip, pair<_T1, _T2> >::type& -get(const pair<_T1, _T2>&) _NOEXCEPT; - -#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -typename tuple_element<_Ip, pair<_T1, _T2> >::type&& -get(pair<_T1, _T2>&&) _NOEXCEPT; -#endif - -// array specializations - -template struct _LIBCPP_TYPE_VIS_ONLY array; - -template struct __tuple_like > : true_type {}; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp& -get(array<_Tp, _Size>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -const _Tp& -get(const array<_Tp, _Size>&) _NOEXCEPT; - -#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) -template -_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp&& -get(array<_Tp, _Size>&&) _NOEXCEPT; -#endif - -#if !defined(_LIBCPP_HAS_NO_VARIADICS) - -// __lazy_and - -template -struct __lazy_and_impl; - -template -struct __lazy_and_impl : false_type {}; - -template <> -struct __lazy_and_impl : true_type {}; - -template -struct __lazy_and_impl : integral_constant {}; - -template -struct __lazy_and_impl : __lazy_and_impl<_Hp::type::value, _Tp...> {}; - -template -struct __lazy_and : __lazy_and_impl<_P1::type::value, _Pr...> {}; - -// __lazy_not - -template -struct __lazy_not : integral_constant {}; - -// __make_tuple_indices - -template struct __tuple_indices {}; - -template -struct __make_indices_imp; - -template -struct __make_indices_imp<_Sp, __tuple_indices<_Indices...>, _Ep> -{ - typedef typename __make_indices_imp<_Sp+1, __tuple_indices<_Indices..., _Sp>, _Ep>::type type; -}; - -template -struct __make_indices_imp<_Ep, __tuple_indices<_Indices...>, _Ep> -{ - typedef __tuple_indices<_Indices...> type; -}; - -template -struct __make_tuple_indices -{ - static_assert(_Sp <= _Ep, "__make_tuple_indices input error"); - typedef typename __make_indices_imp<_Sp, __tuple_indices<>, _Ep>::type type; -}; - -// __tuple_types - -template struct __tuple_types {}; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, __tuple_types<> > -{ -public: - static_assert(_Ip == 0, "tuple_element index out of range"); - static_assert(_Ip != 0, "tuple_element index out of range"); -}; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_element<0, __tuple_types<_Hp, _Tp...> > -{ -public: - typedef _Hp type; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, __tuple_types<_Hp, _Tp...> > -{ -public: - typedef typename tuple_element<_Ip-1, __tuple_types<_Tp...> >::type type; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_size<__tuple_types<_Tp...> > - : public integral_constant -{ -}; - -template struct __tuple_like<__tuple_types<_Tp...> > : true_type {}; - -// __make_tuple_types - -// __make_tuple_types<_Tuple<_Types...>, _Ep, _Sp>::type is a -// __tuple_types<_Types...> using only those _Types in the range [_Sp, _Ep). -// _Sp defaults to 0 and _Ep defaults to tuple_size<_Tuple>. If _Tuple is a -// lvalue_reference type, then __tuple_types<_Types&...> is the result. - -template -struct __make_tuple_types_imp; - -template -struct __make_tuple_types_imp<__tuple_types<_Types...>, _Tp, _Sp, _Ep> -{ - typedef typename remove_reference<_Tp>::type _Tpr; - typedef typename __make_tuple_types_imp<__tuple_types<_Types..., - typename conditional::value, - typename tuple_element<_Sp, _Tpr>::type&, - typename tuple_element<_Sp, _Tpr>::type>::type>, - _Tp, _Sp+1, _Ep>::type type; -}; - -template -struct __make_tuple_types_imp<__tuple_types<_Types...>, _Tp, _Ep, _Ep> -{ - typedef __tuple_types<_Types...> type; -}; - -template ::type>::value, size_t _Sp = 0> -struct __make_tuple_types -{ - static_assert(_Sp <= _Ep, "__make_tuple_types input error"); - typedef typename __make_tuple_types_imp<__tuple_types<>, _Tp, _Sp, _Ep>::type type; -}; - -// __tuple_convertible - -template -struct __tuple_convertible_imp : public false_type {}; - -template -struct __tuple_convertible_imp<__tuple_types<_Tp0, _Tp...>, __tuple_types<_Up0, _Up...> > - : public integral_constant::value && - __tuple_convertible_imp<__tuple_types<_Tp...>, __tuple_types<_Up...> >::value> {}; - -template <> -struct __tuple_convertible_imp<__tuple_types<>, __tuple_types<> > - : public true_type {}; - -template -struct __tuple_convertible_apply : public false_type {}; - -template -struct __tuple_convertible_apply - : public __tuple_convertible_imp< - typename __make_tuple_types<_Tp>::type - , typename __make_tuple_types<_Up>::type - > -{}; - -template ::type>::value, - bool = __tuple_like<_Up>::value> -struct __tuple_convertible - : public false_type {}; - -template -struct __tuple_convertible<_Tp, _Up, true, true> - : public __tuple_convertible_apply::type>::value == - tuple_size<_Up>::value, _Tp, _Up> -{}; - -// __tuple_constructible - -template -struct __tuple_constructible_imp : public false_type {}; - -template -struct __tuple_constructible_imp<__tuple_types<_Tp0, _Tp...>, __tuple_types<_Up0, _Up...> > - : public integral_constant::value && - __tuple_constructible_imp<__tuple_types<_Tp...>, __tuple_types<_Up...> >::value> {}; - -template <> -struct __tuple_constructible_imp<__tuple_types<>, __tuple_types<> > - : public true_type {}; - -template -struct __tuple_constructible_apply : public false_type {}; - -template -struct __tuple_constructible_apply - : public __tuple_constructible_imp< - typename __make_tuple_types<_Tp>::type - , typename __make_tuple_types<_Up>::type - > -{}; - -template ::type>::value, - bool = __tuple_like<_Up>::value> -struct __tuple_constructible - : public false_type {}; - -template -struct __tuple_constructible<_Tp, _Up, true, true> - : public __tuple_constructible_apply::type>::value == - tuple_size<_Up>::value, _Tp, _Up> -{}; - -// __tuple_assignable - -template -struct __tuple_assignable_imp : public false_type {}; - -template -struct __tuple_assignable_imp<__tuple_types<_Tp0, _Tp...>, __tuple_types<_Up0, _Up...> > - : public integral_constant::value && - __tuple_assignable_imp<__tuple_types<_Tp...>, __tuple_types<_Up...> >::value> {}; - -template <> -struct __tuple_assignable_imp<__tuple_types<>, __tuple_types<> > - : public true_type {}; - -template -struct __tuple_assignable_apply : public false_type {}; - -template -struct __tuple_assignable_apply - : __tuple_assignable_imp< - typename __make_tuple_types<_Tp>::type - , typename __make_tuple_types<_Up>::type - > -{}; - -template ::type>::value, - bool = __tuple_like<_Up>::value> -struct __tuple_assignable - : public false_type {}; - -template -struct __tuple_assignable<_Tp, _Up, true, true> - : public __tuple_assignable_apply::type>::value == - tuple_size<_Up>::value, _Tp, _Up> -{}; - -#endif // _LIBCPP_HAS_NO_VARIADICS - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP___TUPLE diff --git a/libcxx/include/__undef___deallocate b/libcxx/include/__undef___deallocate deleted file mode 100644 index 2b4ad99da..000000000 --- a/libcxx/include/__undef___deallocate +++ /dev/null @@ -1,18 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifdef __deallocate -#if defined(_MSC_VER) && !defined(__clang__) -_LIBCPP_WARNING("macro __deallocate is incompatible with C++. #undefining __deallocate") -#else -#warning: macro __deallocate is incompatible with C++. #undefining __deallocate -#endif -#undef __deallocate -#endif diff --git a/libcxx/include/__undef_min_max b/libcxx/include/__undef_min_max deleted file mode 100644 index 5df9412c6..000000000 --- a/libcxx/include/__undef_min_max +++ /dev/null @@ -1,29 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifdef min -#if defined(_MSC_VER) && ! defined(__clang__) -_LIBCPP_WARNING("macro min is incompatible with C++. Try #define NOMINMAX " - "before any Windows header. #undefing min") -#else -#warning: macro min is incompatible with C++. #undefing min -#endif -#undef min -#endif - -#ifdef max -#if defined(_MSC_VER) && ! defined(__clang__) -_LIBCPP_WARNING("macro max is incompatible with C++. Try #define NOMINMAX " - "before any Windows header. #undefing max") -#else -#warning: macro max is incompatible with C++. #undefing max -#endif -#undef max -#endif diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm deleted file mode 100644 index 415059db4..000000000 --- a/libcxx/include/algorithm +++ /dev/null @@ -1,5760 +0,0 @@ -// -*- C++ -*- -//===-------------------------- algorithm ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_ALGORITHM -#define _LIBCPP_ALGORITHM - -/* - algorithm synopsis - -#include - -namespace std -{ - -template - bool - all_of(InputIterator first, InputIterator last, Predicate pred); - -template - bool - any_of(InputIterator first, InputIterator last, Predicate pred); - -template - bool - none_of(InputIterator first, InputIterator last, Predicate pred); - -template - Function - for_each(InputIterator first, InputIterator last, Function f); - -template - InputIterator - find(InputIterator first, InputIterator last, const T& value); - -template - InputIterator - find_if(InputIterator first, InputIterator last, Predicate pred); - -template - InputIterator - find_if_not(InputIterator first, InputIterator last, Predicate pred); - -template - ForwardIterator1 - find_end(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); - -template - ForwardIterator1 - find_end(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); - -template - ForwardIterator1 - find_first_of(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); - -template - ForwardIterator1 - find_first_of(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); - -template - ForwardIterator - adjacent_find(ForwardIterator first, ForwardIterator last); - -template - ForwardIterator - adjacent_find(ForwardIterator first, ForwardIterator last, BinaryPredicate pred); - -template - typename iterator_traits::difference_type - count(InputIterator first, InputIterator last, const T& value); - -template - typename iterator_traits::difference_type - count_if(InputIterator first, InputIterator last, Predicate pred); - -template - pair - mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2); - -template - pair - mismatch(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); // **C++14** - -template - pair - mismatch(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, BinaryPredicate pred); - -template - pair - mismatch(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - BinaryPredicate pred); // **C++14** - -template - bool - equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2); - -template - bool - equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); // **C++14** - -template - bool - equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, BinaryPredicate pred); - -template - bool - equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - BinaryPredicate pred); // **C++14** - -template - bool - is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2); - -template - bool - is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); // **C++14** - -template - bool - is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, BinaryPredicate pred); - -template - bool - is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); // **C++14** - -template - ForwardIterator1 - search(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); - -template - ForwardIterator1 - search(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); - -template - ForwardIterator - search_n(ForwardIterator first, ForwardIterator last, Size count, const T& value); - -template - ForwardIterator - search_n(ForwardIterator first, ForwardIterator last, - Size count, const T& value, BinaryPredicate pred); - -template - OutputIterator - copy(InputIterator first, InputIterator last, OutputIterator result); - -template - OutputIterator - copy_if(InputIterator first, InputIterator last, - OutputIterator result, Predicate pred); - -template - OutputIterator - copy_n(InputIterator first, Size n, OutputIterator result); - -template - BidirectionalIterator2 - copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, - BidirectionalIterator2 result); - -template - ForwardIterator2 - swap_ranges(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2); - -template - void - iter_swap(ForwardIterator1 a, ForwardIterator2 b); - -template - OutputIterator - transform(InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op); - -template - OutputIterator - transform(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, - OutputIterator result, BinaryOperation binary_op); - -template - void - replace(ForwardIterator first, ForwardIterator last, const T& old_value, const T& new_value); - -template - void - replace_if(ForwardIterator first, ForwardIterator last, Predicate pred, const T& new_value); - -template - OutputIterator - replace_copy(InputIterator first, InputIterator last, OutputIterator result, - const T& old_value, const T& new_value); - -template - OutputIterator - replace_copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred, const T& new_value); - -template - void - fill(ForwardIterator first, ForwardIterator last, const T& value); - -template - OutputIterator - fill_n(OutputIterator first, Size n, const T& value); - -template - void - generate(ForwardIterator first, ForwardIterator last, Generator gen); - -template - OutputIterator - generate_n(OutputIterator first, Size n, Generator gen); - -template - ForwardIterator - remove(ForwardIterator first, ForwardIterator last, const T& value); - -template - ForwardIterator - remove_if(ForwardIterator first, ForwardIterator last, Predicate pred); - -template - OutputIterator - remove_copy(InputIterator first, InputIterator last, OutputIterator result, const T& value); - -template - OutputIterator - remove_copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred); - -template - ForwardIterator - unique(ForwardIterator first, ForwardIterator last); - -template - ForwardIterator - unique(ForwardIterator first, ForwardIterator last, BinaryPredicate pred); - -template - OutputIterator - unique_copy(InputIterator first, InputIterator last, OutputIterator result); - -template - OutputIterator - unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate pred); - -template - void - reverse(BidirectionalIterator first, BidirectionalIterator last); - -template - OutputIterator - reverse_copy(BidirectionalIterator first, BidirectionalIterator last, OutputIterator result); - -template - ForwardIterator - rotate(ForwardIterator first, ForwardIterator middle, ForwardIterator last); - -template - OutputIterator - rotate_copy(ForwardIterator first, ForwardIterator middle, ForwardIterator last, OutputIterator result); - -template - void - random_shuffle(RandomAccessIterator first, RandomAccessIterator last); // deprecated in C++14 - -template - void - random_shuffle(RandomAccessIterator first, RandomAccessIterator last, - RandomNumberGenerator& rand); // deprecated in C++14 - -template - void shuffle(RandomAccessIterator first, RandomAccessIterator last, - UniformRandomNumberGenerator&& g); - -template - bool - is_partitioned(InputIterator first, InputIterator last, Predicate pred); - -template - ForwardIterator - partition(ForwardIterator first, ForwardIterator last, Predicate pred); - -template - pair - partition_copy(InputIterator first, InputIterator last, - OutputIterator1 out_true, OutputIterator2 out_false, - Predicate pred); - -template - ForwardIterator - stable_partition(ForwardIterator first, ForwardIterator last, Predicate pred); - -template - ForwardIterator - partition_point(ForwardIterator first, ForwardIterator last, Predicate pred); - -template - bool - is_sorted(ForwardIterator first, ForwardIterator last); - -template - bool - is_sorted(ForwardIterator first, ForwardIterator last, Compare comp); - -template - ForwardIterator - is_sorted_until(ForwardIterator first, ForwardIterator last); - -template - ForwardIterator - is_sorted_until(ForwardIterator first, ForwardIterator last, Compare comp); - -template - void - sort(RandomAccessIterator first, RandomAccessIterator last); - -template - void - sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp); - -template - void - stable_sort(RandomAccessIterator first, RandomAccessIterator last); - -template - void - stable_sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp); - -template - void - partial_sort(RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last); - -template - void - partial_sort(RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last, Compare comp); - -template - RandomAccessIterator - partial_sort_copy(InputIterator first, InputIterator last, - RandomAccessIterator result_first, RandomAccessIterator result_last); - -template - RandomAccessIterator - partial_sort_copy(InputIterator first, InputIterator last, - RandomAccessIterator result_first, RandomAccessIterator result_last, Compare comp); - -template - void - nth_element(RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last); - -template - void - nth_element(RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last, Compare comp); - -template - ForwardIterator - lower_bound(ForwardIterator first, ForwardIterator last, const T& value); - -template - ForwardIterator - lower_bound(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); - -template - ForwardIterator - upper_bound(ForwardIterator first, ForwardIterator last, const T& value); - -template - ForwardIterator - upper_bound(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); - -template - pair - equal_range(ForwardIterator first, ForwardIterator last, const T& value); - -template - pair - equal_range(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); - -template - bool - binary_search(ForwardIterator first, ForwardIterator last, const T& value); - -template - bool - binary_search(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); - -template - OutputIterator - merge(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result); - -template - OutputIterator - merge(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); - -template - void - inplace_merge(BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last); - -template - void - inplace_merge(BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last, Compare comp); - -template - bool - includes(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); - -template - bool - includes(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp); - -template - OutputIterator - set_union(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result); - -template - OutputIterator - set_union(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); - -template - OutputIterator - set_intersection(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result); - -template - OutputIterator - set_intersection(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); - -template - OutputIterator - set_difference(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result); - -template - OutputIterator - set_difference(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); - -template - OutputIterator - set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result); - -template - OutputIterator - set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); - -template - void - push_heap(RandomAccessIterator first, RandomAccessIterator last); - -template - void - push_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp); - -template - void - pop_heap(RandomAccessIterator first, RandomAccessIterator last); - -template - void - pop_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp); - -template - void - make_heap(RandomAccessIterator first, RandomAccessIterator last); - -template - void - make_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp); - -template - void - sort_heap(RandomAccessIterator first, RandomAccessIterator last); - -template - void - sort_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp); - -template - bool - is_heap(RandomAccessIterator first, RandomAccessiterator last); - -template - bool - is_heap(RandomAccessIterator first, RandomAccessiterator last, Compare comp); - -template - RandomAccessIterator - is_heap_until(RandomAccessIterator first, RandomAccessiterator last); - -template - RandomAccessIterator - is_heap_until(RandomAccessIterator first, RandomAccessiterator last, Compare comp); - -template - ForwardIterator - min_element(ForwardIterator first, ForwardIterator last); - -template - ForwardIterator - min_element(ForwardIterator first, ForwardIterator last, Compare comp); - -template - const T& - min(const T& a, const T& b); // constexpr in C++14 - -template - const T& - min(const T& a, const T& b, Compare comp); // constexpr in C++14 - -template - T - min(initializer_list t); // constexpr in C++14 - -template - T - min(initializer_list t, Compare comp); // constexpr in C++14 - -template - ForwardIterator - max_element(ForwardIterator first, ForwardIterator last); - -template - ForwardIterator - max_element(ForwardIterator first, ForwardIterator last, Compare comp); - -template - const T& - max(const T& a, const T& b); // constexpr in C++14 - -template - const T& - max(const T& a, const T& b, Compare comp); // constexpr in C++14 - -template - T - max(initializer_list t); // constexpr in C++14 - -template - T - max(initializer_list t, Compare comp); // constexpr in C++14 - -template - pair - minmax_element(ForwardIterator first, ForwardIterator last); - -template - pair - minmax_element(ForwardIterator first, ForwardIterator last, Compare comp); - -template - pair - minmax(const T& a, const T& b); // constexpr in C++14 - -template - pair - minmax(const T& a, const T& b, Compare comp); // constexpr in C++14 - -template - pair - minmax(initializer_list t); // constexpr in C++14 - -template - pair - minmax(initializer_list t, Compare comp); // constexpr in C++14 - -template - bool - lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); - -template - bool - lexicographical_compare(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, Compare comp); - -template - bool - next_permutation(BidirectionalIterator first, BidirectionalIterator last); - -template - bool - next_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp); - -template - bool - prev_permutation(BidirectionalIterator first, BidirectionalIterator last); - -template - bool - prev_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp); - -} // std - -*/ - -#include <__config> -#include -#include -#include -#include -#include -#include -#include - -#if defined(__IBMCPP__) -#include "support/ibm/support.h" -#endif -#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__) -#include "support/win32/support.h" -#endif - -#include <__undef_min_max> - -#include <__debug> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -// I'd like to replace these with _VSTD::equal_to, but can't because: -// * That only works with C++14 and later, and -// * We haven't included here. -template -struct __equal_to -{ - _LIBCPP_INLINE_VISIBILITY bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;} - _LIBCPP_INLINE_VISIBILITY bool operator()(const _T1& __x, const _T2& __y) const {return __x == __y;} - _LIBCPP_INLINE_VISIBILITY bool operator()(const _T2& __x, const _T1& __y) const {return __x == __y;} - _LIBCPP_INLINE_VISIBILITY bool operator()(const _T2& __x, const _T2& __y) const {return __x == __y;} -}; - -template -struct __equal_to<_T1, _T1> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;} -}; - -template -struct __equal_to -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;} -}; - -template -struct __equal_to<_T1, const _T1> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T1& __x, const _T1& __y) const {return __x == __y;} -}; - -template -struct __less -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T1& __x, const _T2& __y) const {return __x < __y;} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T2& __x, const _T1& __y) const {return __x < __y;} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T2& __x, const _T2& __y) const {return __x < __y;} -}; - -template -struct __less<_T1, _T1> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} -}; - -template -struct __less -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} -}; - -template -struct __less<_T1, const _T1> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} -}; - -template -class __negate -{ -private: - _Predicate __p_; -public: - _LIBCPP_INLINE_VISIBILITY __negate() {} - - _LIBCPP_INLINE_VISIBILITY - explicit __negate(_Predicate __p) : __p_(__p) {} - - template - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _T1& __x) {return !__p_(__x);} - - template - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _T1& __x, const _T2& __y) {return !__p_(__x, __y);} -}; - -#ifdef _LIBCPP_DEBUG - -template -struct __debug_less -{ - _Compare __comp_; - __debug_less(_Compare& __c) : __comp_(__c) {} - template - bool operator()(const _Tp& __x, const _Up& __y) - { - bool __r = __comp_(__x, __y); - if (__r) - _LIBCPP_ASSERT(!__comp_(__y, __x), "Comparator does not induce a strict weak ordering"); - return __r; - } -}; - -#endif // _LIBCPP_DEBUG - -// Precondition: __x != 0 -inline _LIBCPP_INLINE_VISIBILITY -unsigned -__ctz(unsigned __x) -{ - return static_cast(__builtin_ctz(__x)); -} - -inline _LIBCPP_INLINE_VISIBILITY -unsigned long -__ctz(unsigned long __x) -{ - return static_cast(__builtin_ctzl(__x)); -} - -inline _LIBCPP_INLINE_VISIBILITY -unsigned long long -__ctz(unsigned long long __x) -{ - return static_cast(__builtin_ctzll(__x)); -} - -// Precondition: __x != 0 -inline _LIBCPP_INLINE_VISIBILITY -unsigned -__clz(unsigned __x) -{ - return static_cast(__builtin_clz(__x)); -} - -inline _LIBCPP_INLINE_VISIBILITY -unsigned long -__clz(unsigned long __x) -{ - return static_cast(__builtin_clzl (__x)); -} - -inline _LIBCPP_INLINE_VISIBILITY -unsigned long long -__clz(unsigned long long __x) -{ - return static_cast(__builtin_clzll(__x)); -} - -inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned __x) {return __builtin_popcount (__x);} -inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned long __x) {return __builtin_popcountl (__x);} -inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned long long __x) {return __builtin_popcountll(__x);} - -// all_of - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) -{ - for (; __first != __last; ++__first) - if (!__pred(*__first)) - return false; - return true; -} - -// any_of - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) -{ - for (; __first != __last; ++__first) - if (__pred(*__first)) - return true; - return false; -} - -// none_of - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) -{ - for (; __first != __last; ++__first) - if (__pred(*__first)) - return false; - return true; -} - -// for_each - -template -inline _LIBCPP_INLINE_VISIBILITY -_Function -for_each(_InputIterator __first, _InputIterator __last, _Function __f) -{ - for (; __first != __last; ++__first) - __f(*__first); - return _VSTD::move(__f); // explicitly moved for (emulated) C++03 -} - -// find - -template -inline _LIBCPP_INLINE_VISIBILITY -_InputIterator -find(_InputIterator __first, _InputIterator __last, const _Tp& __value_) -{ - for (; __first != __last; ++__first) - if (*__first == __value_) - break; - return __first; -} - -// find_if - -template -inline _LIBCPP_INLINE_VISIBILITY -_InputIterator -find_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) -{ - for (; __first != __last; ++__first) - if (__pred(*__first)) - break; - return __first; -} - -// find_if_not - -template -inline _LIBCPP_INLINE_VISIBILITY -_InputIterator -find_if_not(_InputIterator __first, _InputIterator __last, _Predicate __pred) -{ - for (; __first != __last; ++__first) - if (!__pred(*__first)) - break; - return __first; -} - -// find_end - -template -_ForwardIterator1 -__find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred, - forward_iterator_tag, forward_iterator_tag) -{ - // modeled after search algorithm - _ForwardIterator1 __r = __last1; // __last1 is the "default" answer - if (__first2 == __last2) - return __r; - while (true) - { - while (true) - { - if (__first1 == __last1) // if source exhausted return last correct answer - return __r; // (or __last1 if never found) - if (__pred(*__first1, *__first2)) - break; - ++__first1; - } - // *__first1 matches *__first2, now match elements after here - _ForwardIterator1 __m1 = __first1; - _ForwardIterator2 __m2 = __first2; - while (true) - { - if (++__m2 == __last2) - { // Pattern exhaused, record answer and search for another one - __r = __first1; - ++__first1; - break; - } - if (++__m1 == __last1) // Source exhausted, return last answer - return __r; - if (!__pred(*__m1, *__m2)) // mismatch, restart with a new __first - { - ++__first1; - break; - } // else there is a match, check next elements - } - } -} - -template -_BidirectionalIterator1 -__find_end(_BidirectionalIterator1 __first1, _BidirectionalIterator1 __last1, - _BidirectionalIterator2 __first2, _BidirectionalIterator2 __last2, _BinaryPredicate __pred, - bidirectional_iterator_tag, bidirectional_iterator_tag) -{ - // modeled after search algorithm (in reverse) - if (__first2 == __last2) - return __last1; // Everything matches an empty sequence - _BidirectionalIterator1 __l1 = __last1; - _BidirectionalIterator2 __l2 = __last2; - --__l2; - while (true) - { - // Find last element in sequence 1 that matchs *(__last2-1), with a mininum of loop checks - while (true) - { - if (__first1 == __l1) // return __last1 if no element matches *__first2 - return __last1; - if (__pred(*--__l1, *__l2)) - break; - } - // *__l1 matches *__l2, now match elements before here - _BidirectionalIterator1 __m1 = __l1; - _BidirectionalIterator2 __m2 = __l2; - while (true) - { - if (__m2 == __first2) // If pattern exhausted, __m1 is the answer (works for 1 element pattern) - return __m1; - if (__m1 == __first1) // Otherwise if source exhaused, pattern not found - return __last1; - if (!__pred(*--__m1, *--__m2)) // if there is a mismatch, restart with a new __l1 - { - break; - } // else there is a match, check next elements - } - } -} - -template -_LIBCPP_CONSTEXPR_AFTER_CXX11 _RandomAccessIterator1 -__find_end(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, - _RandomAccessIterator2 __first2, _RandomAccessIterator2 __last2, _BinaryPredicate __pred, - random_access_iterator_tag, random_access_iterator_tag) -{ - // Take advantage of knowing source and pattern lengths. Stop short when source is smaller than pattern - typename iterator_traits<_RandomAccessIterator2>::difference_type __len2 = __last2 - __first2; - if (__len2 == 0) - return __last1; - typename iterator_traits<_RandomAccessIterator1>::difference_type __len1 = __last1 - __first1; - if (__len1 < __len2) - return __last1; - const _RandomAccessIterator1 __s = __first1 + (__len2 - 1); // End of pattern match can't go before here - _RandomAccessIterator1 __l1 = __last1; - _RandomAccessIterator2 __l2 = __last2; - --__l2; - while (true) - { - while (true) - { - if (__s == __l1) - return __last1; - if (__pred(*--__l1, *__l2)) - break; - } - _RandomAccessIterator1 __m1 = __l1; - _RandomAccessIterator2 __m2 = __l2; - while (true) - { - if (__m2 == __first2) - return __m1; - // no need to check range on __m1 because __s guarantees we have enough source - if (!__pred(*--__m1, *--__m2)) - { - break; - } - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator1 -find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred) -{ - return _VSTD::__find_end::type> - (__first1, __last1, __first2, __last2, __pred, - typename iterator_traits<_ForwardIterator1>::iterator_category(), - typename iterator_traits<_ForwardIterator2>::iterator_category()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator1 -find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2) -{ - typedef typename iterator_traits<_ForwardIterator1>::value_type __v1; - typedef typename iterator_traits<_ForwardIterator2>::value_type __v2; - return _VSTD::find_end(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>()); -} - -// find_first_of - -template -_LIBCPP_CONSTEXPR_AFTER_CXX11 _ForwardIterator1 -__find_first_of_ce(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred) -{ - for (; __first1 != __last1; ++__first1) - for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j) - if (__pred(*__first1, *__j)) - return __first1; - return __last1; -} - - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator1 -find_first_of(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred) -{ - return _VSTD::__find_first_of_ce(__first1, __last1, __first2, __last2, __pred); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator1 -find_first_of(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2) -{ - typedef typename iterator_traits<_ForwardIterator1>::value_type __v1; - typedef typename iterator_traits<_ForwardIterator2>::value_type __v2; - return _VSTD::__find_first_of_ce(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>()); -} - -// adjacent_find - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -adjacent_find(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred) -{ - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - { - if (__pred(*__first, *__i)) - return __first; - __first = __i; - } - } - return __last; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -adjacent_find(_ForwardIterator __first, _ForwardIterator __last) -{ - typedef typename iterator_traits<_ForwardIterator>::value_type __v; - return _VSTD::adjacent_find(__first, __last, __equal_to<__v>()); -} - -// count - -template -inline _LIBCPP_INLINE_VISIBILITY -typename iterator_traits<_InputIterator>::difference_type -count(_InputIterator __first, _InputIterator __last, const _Tp& __value_) -{ - typename iterator_traits<_InputIterator>::difference_type __r(0); - for (; __first != __last; ++__first) - if (*__first == __value_) - ++__r; - return __r; -} - -// count_if - -template -inline _LIBCPP_INLINE_VISIBILITY -typename iterator_traits<_InputIterator>::difference_type -count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) -{ - typename iterator_traits<_InputIterator>::difference_type __r(0); - for (; __first != __last; ++__first) - if (__pred(*__first)) - ++__r; - return __r; -} - -// mismatch - -template -inline _LIBCPP_INLINE_VISIBILITY -pair<_InputIterator1, _InputIterator2> -mismatch(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _BinaryPredicate __pred) -{ - for (; __first1 != __last1; ++__first1, (void) ++__first2) - if (!__pred(*__first1, *__first2)) - break; - return pair<_InputIterator1, _InputIterator2>(__first1, __first2); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -pair<_InputIterator1, _InputIterator2> -mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) -{ - typedef typename iterator_traits<_InputIterator1>::value_type __v1; - typedef typename iterator_traits<_InputIterator2>::value_type __v2; - return _VSTD::mismatch(__first1, __last1, __first2, __equal_to<__v1, __v2>()); -} - -#if _LIBCPP_STD_VER > 11 -template -inline _LIBCPP_INLINE_VISIBILITY -pair<_InputIterator1, _InputIterator2> -mismatch(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _BinaryPredicate __pred) -{ - for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void) ++__first2) - if (!__pred(*__first1, *__first2)) - break; - return pair<_InputIterator1, _InputIterator2>(__first1, __first2); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -pair<_InputIterator1, _InputIterator2> -mismatch(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2) -{ - typedef typename iterator_traits<_InputIterator1>::value_type __v1; - typedef typename iterator_traits<_InputIterator2>::value_type __v2; - return _VSTD::mismatch(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>()); -} -#endif - -// equal - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) -{ - for (; __first1 != __last1; ++__first1, (void) ++__first2) - if (!__pred(*__first1, *__first2)) - return false; - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) -{ - typedef typename iterator_traits<_InputIterator1>::value_type __v1; - typedef typename iterator_traits<_InputIterator2>::value_type __v2; - return _VSTD::equal(__first1, __last1, __first2, __equal_to<__v1, __v2>()); -} - -#if _LIBCPP_STD_VER > 11 -template -inline _LIBCPP_INLINE_VISIBILITY -bool -__equal(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _BinaryPredicate __pred, - input_iterator_tag, input_iterator_tag ) -{ - for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void) ++__first2) - if (!__pred(*__first1, *__first2)) - return false; - return __first1 == __last1 && __first2 == __last2; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -__equal(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, - _RandomAccessIterator2 __first2, _RandomAccessIterator2 __last2, _BinaryPredicate __pred, - random_access_iterator_tag, random_access_iterator_tag ) -{ - if ( _VSTD::distance(__first1, __last1) != _VSTD::distance(__first2, __last2)) - return false; - return _VSTD::equal<_RandomAccessIterator1, _RandomAccessIterator2, - typename add_lvalue_reference<_BinaryPredicate>::type> - (__first1, __last1, __first2, __pred ); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -equal(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _BinaryPredicate __pred ) -{ - return _VSTD::__equal::type> - (__first1, __last1, __first2, __last2, __pred, - typename iterator_traits<_InputIterator1>::iterator_category(), - typename iterator_traits<_InputIterator2>::iterator_category()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -equal(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2) -{ - typedef typename iterator_traits<_InputIterator1>::value_type __v1; - typedef typename iterator_traits<_InputIterator2>::value_type __v2; - return _VSTD::__equal(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>(), - typename iterator_traits<_InputIterator1>::iterator_category(), - typename iterator_traits<_InputIterator2>::iterator_category()); -} -#endif - -// is_permutation - -template -bool -is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _BinaryPredicate __pred) -{ - // shorten sequences as much as possible by lopping of any equal parts - for (; __first1 != __last1; ++__first1, (void) ++__first2) - if (!__pred(*__first1, *__first2)) - goto __not_done; - return true; -__not_done: - // __first1 != __last1 && *__first1 != *__first2 - typedef typename iterator_traits<_ForwardIterator1>::difference_type _D1; - _D1 __l1 = _VSTD::distance(__first1, __last1); - if (__l1 == _D1(1)) - return false; - _ForwardIterator2 __last2 = _VSTD::next(__first2, __l1); - // For each element in [f1, l1) see if there are the same number of - // equal elements in [f2, l2) - for (_ForwardIterator1 __i = __first1; __i != __last1; ++__i) - { - // Have we already counted the number of *__i in [f1, l1)? - for (_ForwardIterator1 __j = __first1; __j != __i; ++__j) - if (__pred(*__j, *__i)) - goto __next_iter; - { - // Count number of *__i in [f2, l2) - _D1 __c2 = 0; - for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j) - if (__pred(*__i, *__j)) - ++__c2; - if (__c2 == 0) - return false; - // Count number of *__i in [__i, l1) (we can start with 1) - _D1 __c1 = 1; - for (_ForwardIterator1 __j = _VSTD::next(__i); __j != __last1; ++__j) - if (__pred(*__i, *__j)) - ++__c1; - if (__c1 != __c2) - return false; - } -__next_iter:; - } - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2) -{ - typedef typename iterator_traits<_ForwardIterator1>::value_type __v1; - typedef typename iterator_traits<_ForwardIterator2>::value_type __v2; - return _VSTD::is_permutation(__first1, __last1, __first2, __equal_to<__v1, __v2>()); -} - -#if _LIBCPP_STD_VER > 11 -template -bool -__is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, - _BinaryPredicate __pred, - forward_iterator_tag, forward_iterator_tag ) -{ - // shorten sequences as much as possible by lopping of any equal parts - for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void) ++__first2) - if (!__pred(*__first1, *__first2)) - goto __not_done; - return __first1 == __last1 && __first2 == __last2; -__not_done: - // __first1 != __last1 && __first2 != __last2 && *__first1 != *__first2 - typedef typename iterator_traits<_ForwardIterator1>::difference_type _D1; - _D1 __l1 = _VSTD::distance(__first1, __last1); - - typedef typename iterator_traits<_ForwardIterator2>::difference_type _D2; - _D2 __l2 = _VSTD::distance(__first2, __last2); - if (__l1 != __l2) - return false; - - // For each element in [f1, l1) see if there are the same number of - // equal elements in [f2, l2) - for (_ForwardIterator1 __i = __first1; __i != __last1; ++__i) - { - // Have we already counted the number of *__i in [f1, l1)? - for (_ForwardIterator1 __j = __first1; __j != __i; ++__j) - if (__pred(*__j, *__i)) - goto __next_iter; - { - // Count number of *__i in [f2, l2) - _D1 __c2 = 0; - for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j) - if (__pred(*__i, *__j)) - ++__c2; - if (__c2 == 0) - return false; - // Count number of *__i in [__i, l1) (we can start with 1) - _D1 __c1 = 1; - for (_ForwardIterator1 __j = _VSTD::next(__i); __j != __last1; ++__j) - if (__pred(*__i, *__j)) - ++__c1; - if (__c1 != __c2) - return false; - } -__next_iter:; - } - return true; -} - -template -bool -__is_permutation(_RandomAccessIterator1 __first1, _RandomAccessIterator2 __last1, - _RandomAccessIterator1 __first2, _RandomAccessIterator2 __last2, - _BinaryPredicate __pred, - random_access_iterator_tag, random_access_iterator_tag ) -{ - if ( _VSTD::distance(__first1, __last1) != _VSTD::distance(__first2, __last2)) - return false; - return _VSTD::is_permutation<_RandomAccessIterator1, _RandomAccessIterator2, - typename add_lvalue_reference<_BinaryPredicate>::type> - (__first1, __last1, __first2, __pred ); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, - _BinaryPredicate __pred ) -{ - return _VSTD::__is_permutation::type> - (__first1, __last1, __first2, __last2, __pred, - typename iterator_traits<_ForwardIterator1>::iterator_category(), - typename iterator_traits<_ForwardIterator2>::iterator_category()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2) -{ - typedef typename iterator_traits<_ForwardIterator1>::value_type __v1; - typedef typename iterator_traits<_ForwardIterator2>::value_type __v2; - return _VSTD::__is_permutation(__first1, __last1, __first2, __last2, - __equal_to<__v1, __v2>(), - typename iterator_traits<_ForwardIterator1>::iterator_category(), - typename iterator_traits<_ForwardIterator2>::iterator_category()); -} -#endif - -// search - -template -_ForwardIterator1 -__search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred, - forward_iterator_tag, forward_iterator_tag) -{ - if (__first2 == __last2) - return __first1; // Everything matches an empty sequence - while (true) - { - // Find first element in sequence 1 that matchs *__first2, with a mininum of loop checks - while (true) - { - if (__first1 == __last1) // return __last1 if no element matches *__first2 - return __last1; - if (__pred(*__first1, *__first2)) - break; - ++__first1; - } - // *__first1 matches *__first2, now match elements after here - _ForwardIterator1 __m1 = __first1; - _ForwardIterator2 __m2 = __first2; - while (true) - { - if (++__m2 == __last2) // If pattern exhausted, __first1 is the answer (works for 1 element pattern) - return __first1; - if (++__m1 == __last1) // Otherwise if source exhaused, pattern not found - return __last1; - if (!__pred(*__m1, *__m2)) // if there is a mismatch, restart with a new __first1 - { - ++__first1; - break; - } // else there is a match, check next elements - } - } -} - -template -_LIBCPP_CONSTEXPR_AFTER_CXX11 _RandomAccessIterator1 -__search(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, - _RandomAccessIterator2 __first2, _RandomAccessIterator2 __last2, _BinaryPredicate __pred, - random_access_iterator_tag, random_access_iterator_tag) -{ - typedef typename std::iterator_traits<_RandomAccessIterator1>::difference_type _D1; - typedef typename std::iterator_traits<_RandomAccessIterator2>::difference_type _D2; - // Take advantage of knowing source and pattern lengths. Stop short when source is smaller than pattern - _D2 __len2 = __last2 - __first2; - if (__len2 == 0) - return __first1; - _D1 __len1 = __last1 - __first1; - if (__len1 < __len2) - return __last1; - const _RandomAccessIterator1 __s = __last1 - (__len2 - 1); // Start of pattern match can't go beyond here - while (true) - { -#if !_LIBCPP_UNROLL_LOOPS - while (true) - { - if (__first1 == __s) - return __last1; - if (__pred(*__first1, *__first2)) - break; - ++__first1; - } -#else // !_LIBCPP_UNROLL_LOOPS - for (_D1 __loop_unroll = (__s - __first1) / 4; __loop_unroll > 0; --__loop_unroll) - { - if (__pred(*__first1, *__first2)) - goto __phase2; - if (__pred(*++__first1, *__first2)) - goto __phase2; - if (__pred(*++__first1, *__first2)) - goto __phase2; - if (__pred(*++__first1, *__first2)) - goto __phase2; - ++__first1; - } - switch (__s - __first1) - { - case 3: - if (__pred(*__first1, *__first2)) - break; - ++__first1; - case 2: - if (__pred(*__first1, *__first2)) - break; - ++__first1; - case 1: - if (__pred(*__first1, *__first2)) - break; - case 0: - return __last1; - } - __phase2: -#endif // !_LIBCPP_UNROLL_LOOPS - _RandomAccessIterator1 __m1 = __first1; - _RandomAccessIterator2 __m2 = __first2; -#if !_LIBCPP_UNROLL_LOOPS - while (true) - { - if (++__m2 == __last2) - return __first1; - ++__m1; // no need to check range on __m1 because __s guarantees we have enough source - if (!__pred(*__m1, *__m2)) - { - ++__first1; - break; - } - } -#else // !_LIBCPP_UNROLL_LOOPS - ++__m2; - ++__m1; - for (_D2 __loop_unroll = (__last2 - __m2) / 4; __loop_unroll > 0; --__loop_unroll) - { - if (!__pred(*__m1, *__m2)) - goto __continue; - if (!__pred(*++__m1, *++__m2)) - goto __continue; - if (!__pred(*++__m1, *++__m2)) - goto __continue; - if (!__pred(*++__m1, *++__m2)) - goto __continue; - ++__m1; - ++__m2; - } - switch (__last2 - __m2) - { - case 3: - if (!__pred(*__m1, *__m2)) - break; - ++__m1; - ++__m2; - case 2: - if (!__pred(*__m1, *__m2)) - break; - ++__m1; - ++__m2; - case 1: - if (!__pred(*__m1, *__m2)) - break; - case 0: - return __first1; - } - __continue: - ++__first1; -#endif // !_LIBCPP_UNROLL_LOOPS - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator1 -search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2, _BinaryPredicate __pred) -{ - return _VSTD::__search::type> - (__first1, __last1, __first2, __last2, __pred, - typename std::iterator_traits<_ForwardIterator1>::iterator_category(), - typename std::iterator_traits<_ForwardIterator2>::iterator_category()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator1 -search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2, _ForwardIterator2 __last2) -{ - typedef typename std::iterator_traits<_ForwardIterator1>::value_type __v1; - typedef typename std::iterator_traits<_ForwardIterator2>::value_type __v2; - return _VSTD::search(__first1, __last1, __first2, __last2, __equal_to<__v1, __v2>()); -} - -// search_n - -template -_ForwardIterator -__search_n(_ForwardIterator __first, _ForwardIterator __last, - _Size __count, const _Tp& __value_, _BinaryPredicate __pred, forward_iterator_tag) -{ - if (__count <= 0) - return __first; - while (true) - { - // Find first element in sequence that matchs __value_, with a mininum of loop checks - while (true) - { - if (__first == __last) // return __last if no element matches __value_ - return __last; - if (__pred(*__first, __value_)) - break; - ++__first; - } - // *__first matches __value_, now match elements after here - _ForwardIterator __m = __first; - _Size __c(0); - while (true) - { - if (++__c == __count) // If pattern exhausted, __first is the answer (works for 1 element pattern) - return __first; - if (++__m == __last) // Otherwise if source exhaused, pattern not found - return __last; - if (!__pred(*__m, __value_)) // if there is a mismatch, restart with a new __first - { - __first = __m; - ++__first; - break; - } // else there is a match, check next elements - } - } -} - -template -_RandomAccessIterator -__search_n(_RandomAccessIterator __first, _RandomAccessIterator __last, - _Size __count, const _Tp& __value_, _BinaryPredicate __pred, random_access_iterator_tag) -{ - if (__count <= 0) - return __first; - _Size __len = static_cast<_Size>(__last - __first); - if (__len < __count) - return __last; - const _RandomAccessIterator __s = __last - (__count - 1); // Start of pattern match can't go beyond here - while (true) - { - // Find first element in sequence that matchs __value_, with a mininum of loop checks - while (true) - { - if (__first >= __s) // return __last if no element matches __value_ - return __last; - if (__pred(*__first, __value_)) - break; - ++__first; - } - // *__first matches __value_, now match elements after here - _RandomAccessIterator __m = __first; - _Size __c(0); - while (true) - { - if (++__c == __count) // If pattern exhausted, __first is the answer (works for 1 element pattern) - return __first; - ++__m; // no need to check range on __m because __s guarantees we have enough source - if (!__pred(*__m, __value_)) // if there is a mismatch, restart with a new __first - { - __first = __m; - ++__first; - break; - } // else there is a match, check next elements - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -search_n(_ForwardIterator __first, _ForwardIterator __last, - _Size __count, const _Tp& __value_, _BinaryPredicate __pred) -{ - return _VSTD::__search_n::type> - (__first, __last, __convert_to_integral(__count), __value_, __pred, - typename iterator_traits<_ForwardIterator>::iterator_category()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -search_n(_ForwardIterator __first, _ForwardIterator __last, _Size __count, const _Tp& __value_) -{ - typedef typename iterator_traits<_ForwardIterator>::value_type __v; - return _VSTD::search_n(__first, __last, __convert_to_integral(__count), - __value_, __equal_to<__v, _Tp>()); -} - -// copy - -template -struct __libcpp_is_trivial_iterator -{ - static const bool value = is_pointer<_Iter>::value; -}; - -template -struct __libcpp_is_trivial_iterator > -{ - static const bool value = is_pointer<_Iter>::value; -}; - -template -struct __libcpp_is_trivial_iterator<__wrap_iter<_Iter> > -{ - static const bool value = is_pointer<_Iter>::value; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_Iter -__unwrap_iter(_Iter __i) -{ - return __i; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_trivially_copy_assignable<_Tp>::value, - _Tp* ->::type -__unwrap_iter(move_iterator<_Tp*> __i) -{ - return __i.base(); -} - -#if _LIBCPP_DEBUG_LEVEL < 2 - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_trivially_copy_assignable<_Tp>::value, - _Tp* ->::type -__unwrap_iter(__wrap_iter<_Tp*> __i) -{ - return __i.base(); -} - -#endif // _LIBCPP_DEBUG_LEVEL < 2 - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -__copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) -{ - for (; __first != __last; ++__first, (void) ++__result) - *__result = *__first; - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_same::type, _Up>::value && - is_trivially_copy_assignable<_Up>::value, - _Up* ->::type -__copy(_Tp* __first, _Tp* __last, _Up* __result) -{ - const size_t __n = static_cast(__last - __first); - _VSTD::memmove(__result, __first, __n * sizeof(_Up)); - return __result + __n; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) -{ - return _VSTD::__copy(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); -} - -// copy_backward - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -__copy_backward(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result) -{ - while (__first != __last) - *--__result = *--__last; - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_same::type, _Up>::value && - is_trivially_copy_assignable<_Up>::value, - _Up* ->::type -__copy_backward(_Tp* __first, _Tp* __last, _Up* __result) -{ - const size_t __n = static_cast(__last - __first); - __result -= __n; - _VSTD::memmove(__result, __first, __n * sizeof(_Up)); - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_BidirectionalIterator2 -copy_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, - _BidirectionalIterator2 __result) -{ - return _VSTD::__copy_backward(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); -} - -// copy_if - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -copy_if(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _Predicate __pred) -{ - for (; __first != __last; ++__first) - { - if (__pred(*__first)) - { - *__result = *__first; - ++__result; - } - } - return __result; -} - -// copy_n - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - __is_input_iterator<_InputIterator>::value && - !__is_random_access_iterator<_InputIterator>::value, - _OutputIterator ->::type -copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) -{ - typedef decltype(__convert_to_integral(__orig_n)) _IntegralSize; - _IntegralSize __n = __orig_n; - if (__n > 0) - { - *__result = *__first; - ++__result; - for (--__n; __n > 0; --__n) - { - ++__first; - *__result = *__first; - ++__result; - } - } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - __is_random_access_iterator<_InputIterator>::value, - _OutputIterator ->::type -copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) -{ - typedef decltype(__convert_to_integral(__orig_n)) _IntegralSize; - _IntegralSize __n = __orig_n; - return _VSTD::copy(__first, __first + __n, __result); -} - -// move - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -__move(_InputIterator __first, _InputIterator __last, _OutputIterator __result) -{ - for (; __first != __last; ++__first, (void) ++__result) - *__result = _VSTD::move(*__first); - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_same::type, _Up>::value && - is_trivially_copy_assignable<_Up>::value, - _Up* ->::type -__move(_Tp* __first, _Tp* __last, _Up* __result) -{ - const size_t __n = static_cast(__last - __first); - _VSTD::memmove(__result, __first, __n * sizeof(_Up)); - return __result + __n; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -move(_InputIterator __first, _InputIterator __last, _OutputIterator __result) -{ - return _VSTD::__move(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); -} - -// move_backward - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -__move_backward(_InputIterator __first, _InputIterator __last, _OutputIterator __result) -{ - while (__first != __last) - *--__result = _VSTD::move(*--__last); - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_same::type, _Up>::value && - is_trivially_copy_assignable<_Up>::value, - _Up* ->::type -__move_backward(_Tp* __first, _Tp* __last, _Up* __result) -{ - const size_t __n = static_cast(__last - __first); - __result -= __n; - _VSTD::memmove(__result, __first, __n * sizeof(_Up)); - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_BidirectionalIterator2 -move_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, - _BidirectionalIterator2 __result) -{ - return _VSTD::__move_backward(__unwrap_iter(__first), __unwrap_iter(__last), __unwrap_iter(__result)); -} - -// iter_swap - -// moved to for better swap / noexcept support - -// transform - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __op) -{ - for (; __first != __last; ++__first, (void) ++__result) - *__result = __op(*__first); - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -transform(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, - _OutputIterator __result, _BinaryOperation __binary_op) -{ - for (; __first1 != __last1; ++__first1, (void) ++__first2, ++__result) - *__result = __binary_op(*__first1, *__first2); - return __result; -} - -// replace - -template -inline _LIBCPP_INLINE_VISIBILITY -void -replace(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value, const _Tp& __new_value) -{ - for (; __first != __last; ++__first) - if (*__first == __old_value) - *__first = __new_value; -} - -// replace_if - -template -inline _LIBCPP_INLINE_VISIBILITY -void -replace_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, const _Tp& __new_value) -{ - for (; __first != __last; ++__first) - if (__pred(*__first)) - *__first = __new_value; -} - -// replace_copy - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -replace_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, - const _Tp& __old_value, const _Tp& __new_value) -{ - for (; __first != __last; ++__first, (void) ++__result) - if (*__first == __old_value) - *__result = __new_value; - else - *__result = *__first; - return __result; -} - -// replace_copy_if - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -replace_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, - _Predicate __pred, const _Tp& __new_value) -{ - for (; __first != __last; ++__first, (void) ++__result) - if (__pred(*__first)) - *__result = __new_value; - else - *__result = *__first; - return __result; -} - -// fill_n - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value_) -{ - for (; __n > 0; ++__first, (void) --__n) - *__first = __value_; - return __first; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && sizeof(_Tp) == 1 && - !is_same<_Tp, bool>::value && - is_integral<_Up>::value && sizeof(_Up) == 1, - _Tp* ->::type -__fill_n(_Tp* __first, _Size __n,_Up __value_) -{ - if (__n > 0) - _VSTD::memset(__first, (unsigned char)__value_, (size_t)(__n)); - return __first + __n; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -fill_n(_OutputIterator __first, _Size __n, const _Tp& __value_) -{ - return _VSTD::__fill_n(__first, __convert_to_integral(__n), __value_); -} - -// fill - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, forward_iterator_tag) -{ - for (; __first != __last; ++__first) - *__first = __value_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__fill(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp& __value_, random_access_iterator_tag) -{ - _VSTD::fill_n(__first, __last - __first, __value_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) -{ - _VSTD::__fill(__first, __last, __value_, typename iterator_traits<_ForwardIterator>::iterator_category()); -} - -// generate - -template -inline _LIBCPP_INLINE_VISIBILITY -void -generate(_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) -{ - for (; __first != __last; ++__first) - *__first = __gen(); -} - -// generate_n - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -generate_n(_OutputIterator __first, _Size __orig_n, _Generator __gen) -{ - typedef decltype(__convert_to_integral(__orig_n)) _IntegralSize; - _IntegralSize __n = __orig_n; - for (; __n > 0; ++__first, (void) --__n) - *__first = __gen(); - return __first; -} - -// remove - -template -_ForwardIterator -remove(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) -{ - __first = _VSTD::find(__first, __last, __value_); - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - { - if (!(*__i == __value_)) - { - *__first = _VSTD::move(*__i); - ++__first; - } - } - } - return __first; -} - -// remove_if - -template -_ForwardIterator -remove_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) -{ - __first = _VSTD::find_if<_ForwardIterator, typename add_lvalue_reference<_Predicate>::type> - (__first, __last, __pred); - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - { - if (!__pred(*__i)) - { - *__first = _VSTD::move(*__i); - ++__first; - } - } - } - return __first; -} - -// remove_copy - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -remove_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __value_) -{ - for (; __first != __last; ++__first) - { - if (!(*__first == __value_)) - { - *__result = *__first; - ++__result; - } - } - return __result; -} - -// remove_copy_if - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -remove_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) -{ - for (; __first != __last; ++__first) - { - if (!__pred(*__first)) - { - *__result = *__first; - ++__result; - } - } - return __result; -} - -// unique - -template -_ForwardIterator -unique(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred) -{ - __first = _VSTD::adjacent_find<_ForwardIterator, typename add_lvalue_reference<_BinaryPredicate>::type> - (__first, __last, __pred); - if (__first != __last) - { - // ... a a ? ... - // f i - _ForwardIterator __i = __first; - for (++__i; ++__i != __last;) - if (!__pred(*__first, *__i)) - *++__first = _VSTD::move(*__i); - ++__first; - } - return __first; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -unique(_ForwardIterator __first, _ForwardIterator __last) -{ - typedef typename iterator_traits<_ForwardIterator>::value_type __v; - return _VSTD::unique(__first, __last, __equal_to<__v>()); -} - -// unique_copy - -template -_OutputIterator -__unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryPredicate __pred, - input_iterator_tag, output_iterator_tag) -{ - if (__first != __last) - { - typename iterator_traits<_InputIterator>::value_type __t(*__first); - *__result = __t; - ++__result; - while (++__first != __last) - { - if (!__pred(__t, *__first)) - { - __t = *__first; - *__result = __t; - ++__result; - } - } - } - return __result; -} - -template -_OutputIterator -__unique_copy(_ForwardIterator __first, _ForwardIterator __last, _OutputIterator __result, _BinaryPredicate __pred, - forward_iterator_tag, output_iterator_tag) -{ - if (__first != __last) - { - _ForwardIterator __i = __first; - *__result = *__i; - ++__result; - while (++__first != __last) - { - if (!__pred(*__i, *__first)) - { - *__result = *__first; - ++__result; - __i = __first; - } - } - } - return __result; -} - -template -_ForwardIterator -__unique_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result, _BinaryPredicate __pred, - input_iterator_tag, forward_iterator_tag) -{ - if (__first != __last) - { - *__result = *__first; - while (++__first != __last) - if (!__pred(*__result, *__first)) - *++__result = *__first; - ++__result; - } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryPredicate __pred) -{ - return _VSTD::__unique_copy::type> - (__first, __last, __result, __pred, - typename iterator_traits<_InputIterator>::iterator_category(), - typename iterator_traits<_OutputIterator>::iterator_category()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) -{ - typedef typename iterator_traits<_InputIterator>::value_type __v; - return _VSTD::unique_copy(__first, __last, __result, __equal_to<__v>()); -} - -// reverse - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirectional_iterator_tag) -{ - while (__first != __last) - { - if (__first == --__last) - break; - swap(*__first, *__last); - ++__first; - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag) -{ - if (__first != __last) - for (; __first < --__last; ++__first) - swap(*__first, *__last); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) -{ - _VSTD::__reverse(__first, __last, typename iterator_traits<_BidirectionalIterator>::iterator_category()); -} - -// reverse_copy - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result) -{ - for (; __first != __last; ++__result) - *__result = *--__last; - return __result; -} - -// rotate - -template -_ForwardIterator -__rotate_left(_ForwardIterator __first, _ForwardIterator __last) -{ - typedef typename iterator_traits<_ForwardIterator>::value_type value_type; - value_type __tmp = _VSTD::move(*__first); - _ForwardIterator __lm1 = _VSTD::move(_VSTD::next(__first), __last, __first); - *__lm1 = _VSTD::move(__tmp); - return __lm1; -} - -template -_BidirectionalIterator -__rotate_right(_BidirectionalIterator __first, _BidirectionalIterator __last) -{ - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - _BidirectionalIterator __lm1 = _VSTD::prev(__last); - value_type __tmp = _VSTD::move(*__lm1); - _BidirectionalIterator __fp1 = _VSTD::move_backward(__first, __lm1, __last); - *__first = _VSTD::move(__tmp); - return __fp1; -} - -template -_ForwardIterator -__rotate_forward(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) -{ - _ForwardIterator __i = __middle; - while (true) - { - swap(*__first, *__i); - ++__first; - if (++__i == __last) - break; - if (__first == __middle) - __middle = __i; - } - _ForwardIterator __r = __first; - if (__first != __middle) - { - __i = __middle; - while (true) - { - swap(*__first, *__i); - ++__first; - if (++__i == __last) - { - if (__first == __middle) - break; - __i = __middle; - } - else if (__first == __middle) - __middle = __i; - } - } - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Integral -__gcd(_Integral __x, _Integral __y) -{ - do - { - _Integral __t = __x % __y; - __x = __y; - __y = __t; - } while (__y); - return __x; -} - -template -_RandomAccessIterator -__rotate_gcd(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - - const difference_type __m1 = __middle - __first; - const difference_type __m2 = __last - __middle; - if (__m1 == __m2) - { - _VSTD::swap_ranges(__first, __middle, __middle); - return __middle; - } - const difference_type __g = _VSTD::__gcd(__m1, __m2); - for (_RandomAccessIterator __p = __first + __g; __p != __first;) - { - value_type __t(_VSTD::move(*--__p)); - _RandomAccessIterator __p1 = __p; - _RandomAccessIterator __p2 = __p1 + __m1; - do - { - *__p1 = _VSTD::move(*__p2); - __p1 = __p2; - const difference_type __d = __last - __p2; - if (__m1 < __d) - __p2 += __m1; - else - __p2 = __first + (__m1 - __d); - } while (__p2 != __p); - *__p1 = _VSTD::move(__t); - } - return __first + __m2; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -__rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, - _VSTD::forward_iterator_tag) -{ - typedef typename _VSTD::iterator_traits<_ForwardIterator>::value_type value_type; - if (_VSTD::is_trivially_move_assignable::value) - { - if (_VSTD::next(__first) == __middle) - return _VSTD::__rotate_left(__first, __last); - } - return _VSTD::__rotate_forward(__first, __middle, __last); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_BidirectionalIterator -__rotate(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, - _VSTD::bidirectional_iterator_tag) -{ - typedef typename _VSTD::iterator_traits<_BidirectionalIterator>::value_type value_type; - if (_VSTD::is_trivially_move_assignable::value) - { - if (_VSTD::next(__first) == __middle) - return _VSTD::__rotate_left(__first, __last); - if (_VSTD::next(__middle) == __last) - return _VSTD::__rotate_right(__first, __last); - } - return _VSTD::__rotate_forward(__first, __middle, __last); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_RandomAccessIterator -__rotate(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, - _VSTD::random_access_iterator_tag) -{ - typedef typename _VSTD::iterator_traits<_RandomAccessIterator>::value_type value_type; - if (_VSTD::is_trivially_move_assignable::value) - { - if (_VSTD::next(__first) == __middle) - return _VSTD::__rotate_left(__first, __last); - if (_VSTD::next(__middle) == __last) - return _VSTD::__rotate_right(__first, __last); - return _VSTD::__rotate_gcd(__first, __middle, __last); - } - return _VSTD::__rotate_forward(__first, __middle, __last); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) -{ - if (__first == __middle) - return __last; - if (__middle == __last) - return __first; - return _VSTD::__rotate(__first, __middle, __last, - typename _VSTD::iterator_traits<_ForwardIterator>::iterator_category()); -} - -// rotate_copy - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, _OutputIterator __result) -{ - return _VSTD::copy(__first, __middle, _VSTD::copy(__middle, __last, __result)); -} - -// min_element - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_ForwardIterator -__min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - if (__comp(*__i, *__first)) - __first = __i; - } - return __first; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - return __min_element(__first, __last, __comp); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -min_element(_ForwardIterator __first, _ForwardIterator __last) -{ - return __min_element(__first, __last, - __less::value_type>()); -} - -// min - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -const _Tp& -min(const _Tp& __a, const _Tp& __b, _Compare __comp) -{ - return __comp(__b, __a) ? __b : __a; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -const _Tp& -min(const _Tp& __a, const _Tp& __b) -{ - return _VSTD::min(__a, __b, __less<_Tp>()); -} - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp -min(initializer_list<_Tp> __t, _Compare __comp) -{ - return *__min_element(__t.begin(), __t.end(), __comp); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp -min(initializer_list<_Tp> __t) -{ - return *__min_element(__t.begin(), __t.end(), __less<_Tp>()); -} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -// max_element - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_ForwardIterator -__max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - if (__comp(*__first, *__i)) - __first = __i; - } - return __first; -} - - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - return __max_element(__first, __last, __comp); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -max_element(_ForwardIterator __first, _ForwardIterator __last) -{ - return __max_element(__first, __last, - __less::value_type>()); -} - -// max - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -const _Tp& -max(const _Tp& __a, const _Tp& __b, _Compare __comp) -{ - return __comp(__a, __b) ? __b : __a; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -const _Tp& -max(const _Tp& __a, const _Tp& __b) -{ - return _VSTD::max(__a, __b, __less<_Tp>()); -} - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp -max(initializer_list<_Tp> __t, _Compare __comp) -{ - return *__max_element(__t.begin(), __t.end(), __comp); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp -max(initializer_list<_Tp> __t) -{ - return *__max_element(__t.begin(), __t.end(), __less<_Tp>()); -} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -// minmax_element - -template -std::pair<_ForwardIterator, _ForwardIterator> -minmax_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - std::pair<_ForwardIterator, _ForwardIterator> __result(__first, __first); - if (__first != __last) - { - if (++__first != __last) - { - if (__comp(*__first, *__result.first)) - __result.first = __first; - else - __result.second = __first; - while (++__first != __last) - { - _ForwardIterator __i = __first; - if (++__first == __last) - { - if (__comp(*__i, *__result.first)) - __result.first = __i; - else if (!__comp(*__i, *__result.second)) - __result.second = __i; - break; - } - else - { - if (__comp(*__first, *__i)) - { - if (__comp(*__first, *__result.first)) - __result.first = __first; - if (!__comp(*__i, *__result.second)) - __result.second = __i; - } - else - { - if (__comp(*__i, *__result.first)) - __result.first = __i; - if (!__comp(*__first, *__result.second)) - __result.second = __first; - } - } - } - } - } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -std::pair<_ForwardIterator, _ForwardIterator> -minmax_element(_ForwardIterator __first, _ForwardIterator __last) -{ - return _VSTD::minmax_element(__first, __last, - __less::value_type>()); -} - -// minmax - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -pair -minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) -{ - return __comp(__b, __a) ? pair(__b, __a) : - pair(__a, __b); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -pair -minmax(const _Tp& __a, const _Tp& __b) -{ - return _VSTD::minmax(__a, __b, __less<_Tp>()); -} - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -pair<_Tp, _Tp> -minmax(initializer_list<_Tp> __t, _Compare __comp) -{ - typedef typename initializer_list<_Tp>::const_iterator _Iter; - _Iter __first = __t.begin(); - _Iter __last = __t.end(); - std::pair<_Tp, _Tp> __result(*__first, *__first); - - ++__first; - if (__t.size() % 2 == 0) - { - if (__comp(*__first, __result.first)) - __result.first = *__first; - else - __result.second = *__first; - ++__first; - } - - while (__first != __last) - { - _Tp __prev = *__first++; - if (__comp(*__first, __prev)) { - if ( __comp(*__first, __result.first)) __result.first = *__first; - if (!__comp(__prev, __result.second)) __result.second = __prev; - } - else { - if ( __comp(__prev, __result.first)) __result.first = __prev; - if (!__comp(*__first, __result.second)) __result.second = *__first; - } - - __first++; - } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -pair<_Tp, _Tp> -minmax(initializer_list<_Tp> __t) -{ - return _VSTD::minmax(__t, __less<_Tp>()); -} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -// random_shuffle - -// __independent_bits_engine - -template -struct __log2_imp -{ - static const size_t value = _Xp & ((unsigned long long)(1) << _Rp) ? _Rp - : __log2_imp<_Xp, _Rp - 1>::value; -}; - -template -struct __log2_imp<_Xp, 0> -{ - static const size_t value = 0; -}; - -template -struct __log2_imp<0, _Rp> -{ - static const size_t value = _Rp + 1; -}; - -template -struct __log2 -{ - static const size_t value = __log2_imp<_Xp, - sizeof(_UI) * __CHAR_BIT__ - 1>::value; -}; - -template -class __independent_bits_engine -{ -public: - // types - typedef _UIntType result_type; - -private: - typedef typename _Engine::result_type _Engine_result_type; - typedef typename conditional - < - sizeof(_Engine_result_type) <= sizeof(result_type), - result_type, - _Engine_result_type - >::type _Working_result_type; - - _Engine& __e_; - size_t __w_; - size_t __w0_; - size_t __n_; - size_t __n0_; - _Working_result_type __y0_; - _Working_result_type __y1_; - _Engine_result_type __mask0_; - _Engine_result_type __mask1_; - -#ifdef _LIBCPP_HAS_NO_CONSTEXPR - static const _Working_result_type _Rp = _Engine::_Max - _Engine::_Min - + _Working_result_type(1); -#else - static _LIBCPP_CONSTEXPR const _Working_result_type _Rp = _Engine::max() - _Engine::min() - + _Working_result_type(1); -#endif - static _LIBCPP_CONSTEXPR const size_t __m = __log2<_Working_result_type, _Rp>::value; - static _LIBCPP_CONSTEXPR const size_t _WDt = numeric_limits<_Working_result_type>::digits; - static _LIBCPP_CONSTEXPR const size_t _EDt = numeric_limits<_Engine_result_type>::digits; - -public: - // constructors and seeding functions - __independent_bits_engine(_Engine& __e, size_t __w); - - // generating functions - result_type operator()() {return __eval(integral_constant());} - -private: - result_type __eval(false_type); - result_type __eval(true_type); -}; - -template -__independent_bits_engine<_Engine, _UIntType> - ::__independent_bits_engine(_Engine& __e, size_t __w) - : __e_(__e), - __w_(__w) -{ - __n_ = __w_ / __m + (__w_ % __m != 0); - __w0_ = __w_ / __n_; - if (_Rp == 0) - __y0_ = _Rp; - else if (__w0_ < _WDt) - __y0_ = (_Rp >> __w0_) << __w0_; - else - __y0_ = 0; - if (_Rp - __y0_ > __y0_ / __n_) - { - ++__n_; - __w0_ = __w_ / __n_; - if (__w0_ < _WDt) - __y0_ = (_Rp >> __w0_) << __w0_; - else - __y0_ = 0; - } - __n0_ = __n_ - __w_ % __n_; - if (__w0_ < _WDt - 1) - __y1_ = (_Rp >> (__w0_ + 1)) << (__w0_ + 1); - else - __y1_ = 0; - __mask0_ = __w0_ > 0 ? _Engine_result_type(~0) >> (_EDt - __w0_) : - _Engine_result_type(0); - __mask1_ = __w0_ < _EDt - 1 ? - _Engine_result_type(~0) >> (_EDt - (__w0_ + 1)) : - _Engine_result_type(~0); -} - -template -inline -_UIntType -__independent_bits_engine<_Engine, _UIntType>::__eval(false_type) -{ - return static_cast(__e_() & __mask0_); -} - -template -_UIntType -__independent_bits_engine<_Engine, _UIntType>::__eval(true_type) -{ - result_type _Sp = 0; - for (size_t __k = 0; __k < __n0_; ++__k) - { - _Engine_result_type __u; - do - { - __u = __e_() - _Engine::min(); - } while (__u >= __y0_); - if (__w0_ < _WDt) - _Sp <<= __w0_; - else - _Sp = 0; - _Sp += __u & __mask0_; - } - for (size_t __k = __n0_; __k < __n_; ++__k) - { - _Engine_result_type __u; - do - { - __u = __e_() - _Engine::min(); - } while (__u >= __y1_); - if (__w0_ < _WDt - 1) - _Sp <<= __w0_ + 1; - else - _Sp = 0; - _Sp += __u & __mask1_; - } - return _Sp; -} - -// uniform_int_distribution - -template -class uniform_int_distribution -{ -public: - // types - typedef _IntType result_type; - - class param_type - { - result_type __a_; - result_type __b_; - public: - typedef uniform_int_distribution distribution_type; - - explicit param_type(result_type __a = 0, - result_type __b = numeric_limits::max()) - : __a_(__a), __b_(__b) {} - - result_type a() const {return __a_;} - result_type b() const {return __b_;} - - friend bool operator==(const param_type& __x, const param_type& __y) - {return __x.__a_ == __y.__a_ && __x.__b_ == __y.__b_;} - friend bool operator!=(const param_type& __x, const param_type& __y) - {return !(__x == __y);} - }; - -private: - param_type __p_; - -public: - // constructors and reset functions - explicit uniform_int_distribution(result_type __a = 0, - result_type __b = numeric_limits::max()) - : __p_(param_type(__a, __b)) {} - explicit uniform_int_distribution(const param_type& __p) : __p_(__p) {} - void reset() {} - - // generating functions - template result_type operator()(_URNG& __g) - {return (*this)(__g, __p_);} - template result_type operator()(_URNG& __g, const param_type& __p); - - // property functions - result_type a() const {return __p_.a();} - result_type b() const {return __p_.b();} - - param_type param() const {return __p_;} - void param(const param_type& __p) {__p_ = __p;} - - result_type min() const {return a();} - result_type max() const {return b();} - - friend bool operator==(const uniform_int_distribution& __x, - const uniform_int_distribution& __y) - {return __x.__p_ == __y.__p_;} - friend bool operator!=(const uniform_int_distribution& __x, - const uniform_int_distribution& __y) - {return !(__x == __y);} -}; - -template -template -typename uniform_int_distribution<_IntType>::result_type -uniform_int_distribution<_IntType>::operator()(_URNG& __g, const param_type& __p) -{ - typedef typename conditional::type _UIntType; - const _UIntType _Rp = __p.b() - __p.a() + _UIntType(1); - if (_Rp == 1) - return __p.a(); - const size_t _Dt = numeric_limits<_UIntType>::digits; - typedef __independent_bits_engine<_URNG, _UIntType> _Eng; - if (_Rp == 0) - return static_cast(_Eng(__g, _Dt)()); - size_t __w = _Dt - __clz(_Rp) - 1; - if ((_Rp & (_UIntType(~0) >> (_Dt - __w))) != 0) - ++__w; - _Eng __e(__g, __w); - _UIntType __u; - do - { - __u = __e(); - } while (__u >= _Rp); - return static_cast(__u + __p.a()); -} - -class _LIBCPP_TYPE_VIS __rs_default; - -_LIBCPP_FUNC_VIS __rs_default __rs_get(); - -class _LIBCPP_TYPE_VIS __rs_default -{ - static unsigned __c_; - - __rs_default(); -public: - typedef uint_fast32_t result_type; - - static const result_type _Min = 0; - static const result_type _Max = 0xFFFFFFFF; - - __rs_default(const __rs_default&); - ~__rs_default(); - - result_type operator()(); - - static _LIBCPP_CONSTEXPR result_type min() {return _Min;} - static _LIBCPP_CONSTEXPR result_type max() {return _Max;} - - friend _LIBCPP_FUNC_VIS __rs_default __rs_get(); -}; - -_LIBCPP_FUNC_VIS __rs_default __rs_get(); - -template -void -random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef uniform_int_distribution _Dp; - typedef typename _Dp::param_type _Pp; - difference_type __d = __last - __first; - if (__d > 1) - { - _Dp __uid; - __rs_default __g = __rs_get(); - for (--__last, --__d; __first < __last; ++__first, --__d) - { - difference_type __i = __uid(__g, _Pp(0, __d)); - if (__i != difference_type(0)) - swap(*__first, *(__first + __i)); - } - } -} - -template -void -random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _RandomNumberGenerator&& __rand) -#else - _RandomNumberGenerator& __rand) -#endif -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - difference_type __d = __last - __first; - if (__d > 1) - { - for (--__last; __first < __last; ++__first, --__d) - { - difference_type __i = __rand(__d); - swap(*__first, *(__first + __i)); - } - } -} - -template - void shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _UniformRandomNumberGenerator&& __g) -#else - _UniformRandomNumberGenerator& __g) -#endif -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef uniform_int_distribution _Dp; - typedef typename _Dp::param_type _Pp; - difference_type __d = __last - __first; - if (__d > 1) - { - _Dp __uid; - for (--__last, --__d; __first < __last; ++__first, --__d) - { - difference_type __i = __uid(__g, _Pp(0, __d)); - if (__i != difference_type(0)) - swap(*__first, *(__first + __i)); - } - } -} - -template -bool -is_partitioned(_InputIterator __first, _InputIterator __last, _Predicate __pred) -{ - for (; __first != __last; ++__first) - if (!__pred(*__first)) - break; - if ( __first == __last ) - return true; - ++__first; - for (; __first != __last; ++__first) - if (__pred(*__first)) - return false; - return true; -} - -// partition - -template -_ForwardIterator -__partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, forward_iterator_tag) -{ - while (true) - { - if (__first == __last) - return __first; - if (!__pred(*__first)) - break; - ++__first; - } - for (_ForwardIterator __p = __first; ++__p != __last;) - { - if (__pred(*__p)) - { - swap(*__first, *__p); - ++__first; - } - } - return __first; -} - -template -_BidirectionalIterator -__partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, - bidirectional_iterator_tag) -{ - while (true) - { - while (true) - { - if (__first == __last) - return __first; - if (!__pred(*__first)) - break; - ++__first; - } - do - { - if (__first == --__last) - return __first; - } while (!__pred(*__last)); - swap(*__first, *__last); - ++__first; - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) -{ - return _VSTD::__partition::type> - (__first, __last, __pred, typename iterator_traits<_ForwardIterator>::iterator_category()); -} - -// partition_copy - -template -pair<_OutputIterator1, _OutputIterator2> -partition_copy(_InputIterator __first, _InputIterator __last, - _OutputIterator1 __out_true, _OutputIterator2 __out_false, - _Predicate __pred) -{ - for (; __first != __last; ++__first) - { - if (__pred(*__first)) - { - *__out_true = *__first; - ++__out_true; - } - else - { - *__out_false = *__first; - ++__out_false; - } - } - return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); -} - -// partition_point - -template -_ForwardIterator -partition_point(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) -{ - typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; - difference_type __len = _VSTD::distance(__first, __last); - while (__len != 0) - { - difference_type __l2 = __len / 2; - _ForwardIterator __m = __first; - _VSTD::advance(__m, __l2); - if (__pred(*__m)) - { - __first = ++__m; - __len -= __l2 + 1; - } - else - __len = __l2; - } - return __first; -} - -// stable_partition - -template -_ForwardIterator -__stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, - _Distance __len, _Pair __p, forward_iterator_tag __fit) -{ - // *__first is known to be false - // __len >= 1 - if (__len == 1) - return __first; - if (__len == 2) - { - _ForwardIterator __m = __first; - if (__pred(*++__m)) - { - swap(*__first, *__m); - return __m; - } - return __first; - } - if (__len <= __p.second) - { // The buffer is big enough to use - typedef typename iterator_traits<_ForwardIterator>::value_type value_type; - __destruct_n __d(0); - unique_ptr __h(__p.first, __d); - // Move the falses into the temporary buffer, and the trues to the front of the line - // Update __first to always point to the end of the trues - value_type* __t = __p.first; - ::new(__t) value_type(_VSTD::move(*__first)); - __d.__incr((value_type*)0); - ++__t; - _ForwardIterator __i = __first; - while (++__i != __last) - { - if (__pred(*__i)) - { - *__first = _VSTD::move(*__i); - ++__first; - } - else - { - ::new(__t) value_type(_VSTD::move(*__i)); - __d.__incr((value_type*)0); - ++__t; - } - } - // All trues now at start of range, all falses in buffer - // Move falses back into range, but don't mess up __first which points to first false - __i = __first; - for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, ++__i) - *__i = _VSTD::move(*__t2); - // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer - return __first; - } - // Else not enough buffer, do in place - // __len >= 3 - _ForwardIterator __m = __first; - _Distance __len2 = __len / 2; // __len2 >= 2 - _VSTD::advance(__m, __len2); - // recurse on [__first, __m), *__first know to be false - // F????????????????? - // f m l - typedef typename add_lvalue_reference<_Predicate>::type _PredRef; - _ForwardIterator __first_false = __stable_partition<_PredRef>(__first, __m, __pred, __len2, __p, __fit); - // TTTFFFFF?????????? - // f ff m l - // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true - _ForwardIterator __m1 = __m; - _ForwardIterator __second_false = __last; - _Distance __len_half = __len - __len2; - while (__pred(*__m1)) - { - if (++__m1 == __last) - goto __second_half_done; - --__len_half; - } - // TTTFFFFFTTTF?????? - // f ff m m1 l - __second_false = __stable_partition<_PredRef>(__m1, __last, __pred, __len_half, __p, __fit); -__second_half_done: - // TTTFFFFFTTTTTFFFFF - // f ff m sf l - return _VSTD::rotate(__first_false, __m, __second_false); - // TTTTTTTTFFFFFFFFFF - // | -} - -struct __return_temporary_buffer -{ - template - _LIBCPP_INLINE_VISIBILITY void operator()(_Tp* __p) const {_VSTD::return_temporary_buffer(__p);} -}; - -template -_ForwardIterator -__stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, - forward_iterator_tag) -{ - const unsigned __alloc_limit = 3; // might want to make this a function of trivial assignment - // Either prove all true and return __first or point to first false - while (true) - { - if (__first == __last) - return __first; - if (!__pred(*__first)) - break; - ++__first; - } - // We now have a reduced range [__first, __last) - // *__first is known to be false - typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; - typedef typename iterator_traits<_ForwardIterator>::value_type value_type; - difference_type __len = _VSTD::distance(__first, __last); - pair __p(0, 0); - unique_ptr __h; - if (__len >= __alloc_limit) - { - __p = _VSTD::get_temporary_buffer(__len); - __h.reset(__p.first); - } - return __stable_partition::type> - (__first, __last, __pred, __len, __p, forward_iterator_tag()); -} - -template -_BidirectionalIterator -__stable_partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, - _Distance __len, _Pair __p, bidirectional_iterator_tag __bit) -{ - // *__first is known to be false - // *__last is known to be true - // __len >= 2 - if (__len == 2) - { - swap(*__first, *__last); - return __last; - } - if (__len == 3) - { - _BidirectionalIterator __m = __first; - if (__pred(*++__m)) - { - swap(*__first, *__m); - swap(*__m, *__last); - return __last; - } - swap(*__m, *__last); - swap(*__first, *__m); - return __m; - } - if (__len <= __p.second) - { // The buffer is big enough to use - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - __destruct_n __d(0); - unique_ptr __h(__p.first, __d); - // Move the falses into the temporary buffer, and the trues to the front of the line - // Update __first to always point to the end of the trues - value_type* __t = __p.first; - ::new(__t) value_type(_VSTD::move(*__first)); - __d.__incr((value_type*)0); - ++__t; - _BidirectionalIterator __i = __first; - while (++__i != __last) - { - if (__pred(*__i)) - { - *__first = _VSTD::move(*__i); - ++__first; - } - else - { - ::new(__t) value_type(_VSTD::move(*__i)); - __d.__incr((value_type*)0); - ++__t; - } - } - // move *__last, known to be true - *__first = _VSTD::move(*__i); - __i = ++__first; - // All trues now at start of range, all falses in buffer - // Move falses back into range, but don't mess up __first which points to first false - for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, ++__i) - *__i = _VSTD::move(*__t2); - // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer - return __first; - } - // Else not enough buffer, do in place - // __len >= 4 - _BidirectionalIterator __m = __first; - _Distance __len2 = __len / 2; // __len2 >= 2 - _VSTD::advance(__m, __len2); - // recurse on [__first, __m-1], except reduce __m-1 until *(__m-1) is true, *__first know to be false - // F????????????????T - // f m l - _BidirectionalIterator __m1 = __m; - _BidirectionalIterator __first_false = __first; - _Distance __len_half = __len2; - while (!__pred(*--__m1)) - { - if (__m1 == __first) - goto __first_half_done; - --__len_half; - } - // F???TFFF?????????T - // f m1 m l - typedef typename add_lvalue_reference<_Predicate>::type _PredRef; - __first_false = __stable_partition<_PredRef>(__first, __m1, __pred, __len_half, __p, __bit); -__first_half_done: - // TTTFFFFF?????????T - // f ff m l - // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true - __m1 = __m; - _BidirectionalIterator __second_false = __last; - ++__second_false; - __len_half = __len - __len2; - while (__pred(*__m1)) - { - if (++__m1 == __last) - goto __second_half_done; - --__len_half; - } - // TTTFFFFFTTTF?????T - // f ff m m1 l - __second_false = __stable_partition<_PredRef>(__m1, __last, __pred, __len_half, __p, __bit); -__second_half_done: - // TTTFFFFFTTTTTFFFFF - // f ff m sf l - return _VSTD::rotate(__first_false, __m, __second_false); - // TTTTTTTTFFFFFFFFFF - // | -} - -template -_BidirectionalIterator -__stable_partition(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, - bidirectional_iterator_tag) -{ - typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - const difference_type __alloc_limit = 4; // might want to make this a function of trivial assignment - // Either prove all true and return __first or point to first false - while (true) - { - if (__first == __last) - return __first; - if (!__pred(*__first)) - break; - ++__first; - } - // __first points to first false, everything prior to __first is already set. - // Either prove [__first, __last) is all false and return __first, or point __last to last true - do - { - if (__first == --__last) - return __first; - } while (!__pred(*__last)); - // We now have a reduced range [__first, __last] - // *__first is known to be false - // *__last is known to be true - // __len >= 2 - difference_type __len = _VSTD::distance(__first, __last) + 1; - pair __p(0, 0); - unique_ptr __h; - if (__len >= __alloc_limit) - { - __p = _VSTD::get_temporary_buffer(__len); - __h.reset(__p.first); - } - return __stable_partition::type> - (__first, __last, __pred, __len, __p, bidirectional_iterator_tag()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) -{ - return __stable_partition::type> - (__first, __last, __pred, typename iterator_traits<_ForwardIterator>::iterator_category()); -} - -// is_sorted_until - -template -_ForwardIterator -is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - if (__first != __last) - { - _ForwardIterator __i = __first; - while (++__i != __last) - { - if (__comp(*__i, *__first)) - return __i; - __first = __i; - } - } - return __last; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) -{ - return _VSTD::is_sorted_until(__first, __last, __less::value_type>()); -} - -// is_sorted - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -is_sorted(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) -{ - return _VSTD::is_sorted_until(__first, __last, __comp) == __last; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -is_sorted(_ForwardIterator __first, _ForwardIterator __last) -{ - return _VSTD::is_sorted(__first, __last, __less::value_type>()); -} - -// sort - -// stable, 2-3 compares, 0-2 swaps - -template -unsigned -__sort3(_ForwardIterator __x, _ForwardIterator __y, _ForwardIterator __z, _Compare __c) -{ - unsigned __r = 0; - if (!__c(*__y, *__x)) // if x <= y - { - if (!__c(*__z, *__y)) // if y <= z - return __r; // x <= y && y <= z - // x <= y && y > z - swap(*__y, *__z); // x <= z && y < z - __r = 1; - if (__c(*__y, *__x)) // if x > y - { - swap(*__x, *__y); // x < y && y <= z - __r = 2; - } - return __r; // x <= y && y < z - } - if (__c(*__z, *__y)) // x > y, if y > z - { - swap(*__x, *__z); // x < y && y < z - __r = 1; - return __r; - } - swap(*__x, *__y); // x > y && y <= z - __r = 1; // x < y && x <= z - if (__c(*__z, *__y)) // if y > z - { - swap(*__y, *__z); // x <= y && y < z - __r = 2; - } - return __r; -} // x <= y && y <= z - -// stable, 3-6 compares, 0-5 swaps - -template -unsigned -__sort4(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, - _ForwardIterator __x4, _Compare __c) -{ - unsigned __r = __sort3<_Compare>(__x1, __x2, __x3, __c); - if (__c(*__x4, *__x3)) - { - swap(*__x3, *__x4); - ++__r; - if (__c(*__x3, *__x2)) - { - swap(*__x2, *__x3); - ++__r; - if (__c(*__x2, *__x1)) - { - swap(*__x1, *__x2); - ++__r; - } - } - } - return __r; -} - -// stable, 4-10 compares, 0-9 swaps - -template -unsigned -__sort5(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, - _ForwardIterator __x4, _ForwardIterator __x5, _Compare __c) -{ - unsigned __r = __sort4<_Compare>(__x1, __x2, __x3, __x4, __c); - if (__c(*__x5, *__x4)) - { - swap(*__x4, *__x5); - ++__r; - if (__c(*__x4, *__x3)) - { - swap(*__x3, *__x4); - ++__r; - if (__c(*__x3, *__x2)) - { - swap(*__x2, *__x3); - ++__r; - if (__c(*__x2, *__x1)) - { - swap(*__x1, *__x2); - ++__r; - } - } - } - } - return __r; -} - -// Assumes size > 0 -template -void -__selection_sort(_BirdirectionalIterator __first, _BirdirectionalIterator __last, _Compare __comp) -{ - _BirdirectionalIterator __lm1 = __last; - for (--__lm1; __first != __lm1; ++__first) - { - _BirdirectionalIterator __i = _VSTD::min_element<_BirdirectionalIterator, - typename add_lvalue_reference<_Compare>::type> - (__first, __last, __comp); - if (__i != __first) - swap(*__first, *__i); - } -} - -template -void -__insertion_sort(_BirdirectionalIterator __first, _BirdirectionalIterator __last, _Compare __comp) -{ - typedef typename iterator_traits<_BirdirectionalIterator>::value_type value_type; - if (__first != __last) - { - _BirdirectionalIterator __i = __first; - for (++__i; __i != __last; ++__i) - { - _BirdirectionalIterator __j = __i; - value_type __t(_VSTD::move(*__j)); - for (_BirdirectionalIterator __k = __i; __k != __first && __comp(__t, *--__k); --__j) - *__j = _VSTD::move(*__k); - *__j = _VSTD::move(__t); - } - } -} - -template -void -__insertion_sort_3(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - _RandomAccessIterator __j = __first+2; - __sort3<_Compare>(__first, __first+1, __j, __comp); - for (_RandomAccessIterator __i = __j+1; __i != __last; ++__i) - { - if (__comp(*__i, *__j)) - { - value_type __t(_VSTD::move(*__i)); - _RandomAccessIterator __k = __j; - __j = __i; - do - { - *__j = _VSTD::move(*__k); - __j = __k; - } while (__j != __first && __comp(__t, *--__k)); - *__j = _VSTD::move(__t); - } - __j = __i; - } -} - -template -bool -__insertion_sort_incomplete(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - switch (__last - __first) - { - case 0: - case 1: - return true; - case 2: - if (__comp(*--__last, *__first)) - swap(*__first, *__last); - return true; - case 3: - _VSTD::__sort3<_Compare>(__first, __first+1, --__last, __comp); - return true; - case 4: - _VSTD::__sort4<_Compare>(__first, __first+1, __first+2, --__last, __comp); - return true; - case 5: - _VSTD::__sort5<_Compare>(__first, __first+1, __first+2, __first+3, --__last, __comp); - return true; - } - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - _RandomAccessIterator __j = __first+2; - __sort3<_Compare>(__first, __first+1, __j, __comp); - const unsigned __limit = 8; - unsigned __count = 0; - for (_RandomAccessIterator __i = __j+1; __i != __last; ++__i) - { - if (__comp(*__i, *__j)) - { - value_type __t(_VSTD::move(*__i)); - _RandomAccessIterator __k = __j; - __j = __i; - do - { - *__j = _VSTD::move(*__k); - __j = __k; - } while (__j != __first && __comp(__t, *--__k)); - *__j = _VSTD::move(__t); - if (++__count == __limit) - return ++__i == __last; - } - __j = __i; - } - return true; -} - -template -void -__insertion_sort_move(_BirdirectionalIterator __first1, _BirdirectionalIterator __last1, - typename iterator_traits<_BirdirectionalIterator>::value_type* __first2, _Compare __comp) -{ - typedef typename iterator_traits<_BirdirectionalIterator>::value_type value_type; - if (__first1 != __last1) - { - __destruct_n __d(0); - unique_ptr __h(__first2, __d); - value_type* __last2 = __first2; - ::new(__last2) value_type(_VSTD::move(*__first1)); - __d.__incr((value_type*)0); - for (++__last2; ++__first1 != __last1; ++__last2) - { - value_type* __j2 = __last2; - value_type* __i2 = __j2; - if (__comp(*__first1, *--__i2)) - { - ::new(__j2) value_type(_VSTD::move(*__i2)); - __d.__incr((value_type*)0); - for (--__j2; __i2 != __first2 && __comp(*__first1, *--__i2); --__j2) - *__j2 = _VSTD::move(*__i2); - *__j2 = _VSTD::move(*__first1); - } - else - { - ::new(__j2) value_type(_VSTD::move(*__first1)); - __d.__incr((value_type*)0); - } - } - __h.release(); - } -} - -template -void -__sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - // _Compare is known to be a reference type - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - const difference_type __limit = is_trivially_copy_constructible::value && - is_trivially_copy_assignable::value ? 30 : 6; - while (true) - { - __restart: - difference_type __len = __last - __first; - switch (__len) - { - case 0: - case 1: - return; - case 2: - if (__comp(*--__last, *__first)) - swap(*__first, *__last); - return; - case 3: - _VSTD::__sort3<_Compare>(__first, __first+1, --__last, __comp); - return; - case 4: - _VSTD::__sort4<_Compare>(__first, __first+1, __first+2, --__last, __comp); - return; - case 5: - _VSTD::__sort5<_Compare>(__first, __first+1, __first+2, __first+3, --__last, __comp); - return; - } - if (__len <= __limit) - { - _VSTD::__insertion_sort_3<_Compare>(__first, __last, __comp); - return; - } - // __len > 5 - _RandomAccessIterator __m = __first; - _RandomAccessIterator __lm1 = __last; - --__lm1; - unsigned __n_swaps; - { - difference_type __delta; - if (__len >= 1000) - { - __delta = __len/2; - __m += __delta; - __delta /= 2; - __n_swaps = _VSTD::__sort5<_Compare>(__first, __first + __delta, __m, __m+__delta, __lm1, __comp); - } - else - { - __delta = __len/2; - __m += __delta; - __n_swaps = _VSTD::__sort3<_Compare>(__first, __m, __lm1, __comp); - } - } - // *__m is median - // partition [__first, __m) < *__m and *__m <= [__m, __last) - // (this inhibits tossing elements equivalent to __m around unnecessarily) - _RandomAccessIterator __i = __first; - _RandomAccessIterator __j = __lm1; - // j points beyond range to be tested, *__m is known to be <= *__lm1 - // The search going up is known to be guarded but the search coming down isn't. - // Prime the downward search with a guard. - if (!__comp(*__i, *__m)) // if *__first == *__m - { - // *__first == *__m, *__first doesn't go in first part - // manually guard downward moving __j against __i - while (true) - { - if (__i == --__j) - { - // *__first == *__m, *__m <= all other elements - // Parition instead into [__first, __i) == *__first and *__first < [__i, __last) - ++__i; // __first + 1 - __j = __last; - if (!__comp(*__first, *--__j)) // we need a guard if *__first == *(__last-1) - { - while (true) - { - if (__i == __j) - return; // [__first, __last) all equivalent elements - if (__comp(*__first, *__i)) - { - swap(*__i, *__j); - ++__n_swaps; - ++__i; - break; - } - ++__i; - } - } - // [__first, __i) == *__first and *__first < [__j, __last) and __j == __last - 1 - if (__i == __j) - return; - while (true) - { - while (!__comp(*__first, *__i)) - ++__i; - while (__comp(*__first, *--__j)) - ; - if (__i >= __j) - break; - swap(*__i, *__j); - ++__n_swaps; - ++__i; - } - // [__first, __i) == *__first and *__first < [__i, __last) - // The first part is sorted, sort the secod part - // _VSTD::__sort<_Compare>(__i, __last, __comp); - __first = __i; - goto __restart; - } - if (__comp(*__j, *__m)) - { - swap(*__i, *__j); - ++__n_swaps; - break; // found guard for downward moving __j, now use unguarded partition - } - } - } - // It is known that *__i < *__m - ++__i; - // j points beyond range to be tested, *__m is known to be <= *__lm1 - // if not yet partitioned... - if (__i < __j) - { - // known that *(__i - 1) < *__m - // known that __i <= __m - while (true) - { - // __m still guards upward moving __i - while (__comp(*__i, *__m)) - ++__i; - // It is now known that a guard exists for downward moving __j - while (!__comp(*--__j, *__m)) - ; - if (__i > __j) - break; - swap(*__i, *__j); - ++__n_swaps; - // It is known that __m != __j - // If __m just moved, follow it - if (__m == __i) - __m = __j; - ++__i; - } - } - // [__first, __i) < *__m and *__m <= [__i, __last) - if (__i != __m && __comp(*__m, *__i)) - { - swap(*__i, *__m); - ++__n_swaps; - } - // [__first, __i) < *__i and *__i <= [__i+1, __last) - // If we were given a perfect partition, see if insertion sort is quick... - if (__n_swaps == 0) - { - bool __fs = _VSTD::__insertion_sort_incomplete<_Compare>(__first, __i, __comp); - if (_VSTD::__insertion_sort_incomplete<_Compare>(__i+1, __last, __comp)) - { - if (__fs) - return; - __last = __i; - continue; - } - else - { - if (__fs) - { - __first = ++__i; - continue; - } - } - } - // sort smaller range with recursive call and larger with tail recursion elimination - if (__i - __first < __last - __i) - { - _VSTD::__sort<_Compare>(__first, __i, __comp); - // _VSTD::__sort<_Compare>(__i+1, __last, __comp); - __first = ++__i; - } - else - { - _VSTD::__sort<_Compare>(__i+1, __last, __comp); - // _VSTD::__sort<_Compare>(__first, __i, __comp); - __last = __i; - } - } -} - -// This forwarder keeps the top call and the recursive calls using the same instantiation, forcing a reference _Compare -template -inline _LIBCPP_INLINE_VISIBILITY -void -sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - __sort<_Comp_ref>(__first, __last, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - __sort<_Comp_ref>(__first, __last, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -sort(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - _VSTD::sort(__first, __last, __less::value_type>()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -sort(_Tp** __first, _Tp** __last) -{ - _VSTD::sort((size_t*)__first, (size_t*)__last, __less()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last) -{ - _VSTD::sort(__first.base(), __last.base()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last, _Compare __comp) -{ - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - _VSTD::sort<_Tp*, _Comp_ref>(__first.base(), __last.base(), __comp); -} - -#ifdef _LIBCPP_MSVC -#pragma warning( push ) -#pragma warning( disable: 4231) -#endif // _LIBCPP_MSVC -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, char*>(char*, char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, signed char*>(signed char*, signed char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, short*>(short*, short*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, int*>(int*, int*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned*>(unsigned*, unsigned*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, long*>(long*, long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, long long*>(long long*, long long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, float*>(float*, float*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, double*>(double*, double*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less&, long double*>(long double*, long double*, __less&)) - -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, char*>(char*, char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, signed char*>(signed char*, signed char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, short*>(short*, short*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, int*>(int*, int*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned*>(unsigned*, unsigned*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, long*>(long*, long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, long long*>(long long*, long long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, float*>(float*, float*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, double*>(double*, double*, __less&)) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS bool __insertion_sort_incomplete<__less&, long double*>(long double*, long double*, __less&)) - -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS unsigned __sort5<__less&, long double*>(long double*, long double*, long double*, long double*, long double*, __less&)) -#ifdef _LIBCPP_MSVC -#pragma warning( pop ) -#endif // _LIBCPP_MSVC - -// lower_bound - -template -_ForwardIterator -__lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) -{ - typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; - difference_type __len = _VSTD::distance(__first, __last); - while (__len != 0) - { - difference_type __l2 = __len / 2; - _ForwardIterator __m = __first; - _VSTD::advance(__m, __l2); - if (__comp(*__m, __value_)) - { - __first = ++__m; - __len -= __l2 + 1; - } - else - __len = __l2; - } - return __first; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __lower_bound<_Comp_ref>(__first, __last, __value_, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __lower_bound<_Comp_ref>(__first, __last, __value_, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) -{ - return _VSTD::lower_bound(__first, __last, __value_, - __less::value_type, _Tp>()); -} - -// upper_bound - -template -_ForwardIterator -__upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) -{ - typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; - difference_type __len = _VSTD::distance(__first, __last); - while (__len != 0) - { - difference_type __l2 = __len / 2; - _ForwardIterator __m = __first; - _VSTD::advance(__m, __l2); - if (__comp(__value_, *__m)) - __len = __l2; - else - { - __first = ++__m; - __len -= __l2 + 1; - } - } - return __first; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __upper_bound<_Comp_ref>(__first, __last, __value_, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __upper_bound<_Comp_ref>(__first, __last, __value_, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIterator -upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) -{ - return _VSTD::upper_bound(__first, __last, __value_, - __less<_Tp, typename iterator_traits<_ForwardIterator>::value_type>()); -} - -// equal_range - -template -pair<_ForwardIterator, _ForwardIterator> -__equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) -{ - typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; - difference_type __len = _VSTD::distance(__first, __last); - while (__len != 0) - { - difference_type __l2 = __len / 2; - _ForwardIterator __m = __first; - _VSTD::advance(__m, __l2); - if (__comp(*__m, __value_)) - { - __first = ++__m; - __len -= __l2 + 1; - } - else if (__comp(__value_, *__m)) - { - __last = __m; - __len = __l2; - } - else - { - _ForwardIterator __mp1 = __m; - return pair<_ForwardIterator, _ForwardIterator> - ( - __lower_bound<_Compare>(__first, __m, __value_, __comp), - __upper_bound<_Compare>(++__mp1, __last, __value_, __comp) - ); - } - } - return pair<_ForwardIterator, _ForwardIterator>(__first, __first); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -pair<_ForwardIterator, _ForwardIterator> -equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __equal_range<_Comp_ref>(__first, __last, __value_, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __equal_range<_Comp_ref>(__first, __last, __value_, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -pair<_ForwardIterator, _ForwardIterator> -equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) -{ - return _VSTD::equal_range(__first, __last, __value_, - __less::value_type, _Tp>()); -} - -// binary_search - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -__binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) -{ - __first = __lower_bound<_Compare>(__first, __last, __value_, __comp); - return __first != __last && !__comp(__value_, *__first); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __binary_search<_Comp_ref>(__first, __last, __value_, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __binary_search<_Comp_ref>(__first, __last, __value_, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value_) -{ - return _VSTD::binary_search(__first, __last, __value_, - __less::value_type, _Tp>()); -} - -// merge - -template -_OutputIterator -__merge(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ - for (; __first1 != __last1; ++__result) - { - if (__first2 == __last2) - return _VSTD::copy(__first1, __last1, __result); - if (__comp(*__first2, *__first1)) - { - *__result = *__first2; - ++__first2; - } - else - { - *__result = *__first1; - ++__first1; - } - } - return _VSTD::copy(__first2, __last2, __result); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -merge(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return _VSTD::__merge<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return _VSTD::__merge<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -merge(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) -{ - typedef typename iterator_traits<_InputIterator1>::value_type __v1; - typedef typename iterator_traits<_InputIterator2>::value_type __v2; - return merge(__first1, __last1, __first2, __last2, __result, __less<__v1, __v2>()); -} - -// inplace_merge - -template -void -__buffered_inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, - _Compare __comp, typename iterator_traits<_BidirectionalIterator>::difference_type __len1, - typename iterator_traits<_BidirectionalIterator>::difference_type __len2, - typename iterator_traits<_BidirectionalIterator>::value_type* __buff) -{ - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - __destruct_n __d(0); - unique_ptr __h2(__buff, __d); - if (__len1 <= __len2) - { - value_type* __p = __buff; - for (_BidirectionalIterator __i = __first; __i != __middle; __d.__incr((value_type*)0), (void) ++__i, ++__p) - ::new(__p) value_type(_VSTD::move(*__i)); - __merge<_Compare>(move_iterator(__buff), - move_iterator(__p), - move_iterator<_BidirectionalIterator>(__middle), - move_iterator<_BidirectionalIterator>(__last), - __first, __comp); - } - else - { - value_type* __p = __buff; - for (_BidirectionalIterator __i = __middle; __i != __last; __d.__incr((value_type*)0), (void) ++__i, ++__p) - ::new(__p) value_type(_VSTD::move(*__i)); - typedef reverse_iterator<_BidirectionalIterator> _RBi; - typedef reverse_iterator _Rv; - __merge(move_iterator<_RBi>(_RBi(__middle)), move_iterator<_RBi>(_RBi(__first)), - move_iterator<_Rv>(_Rv(__p)), move_iterator<_Rv>(_Rv(__buff)), - _RBi(__last), __negate<_Compare>(__comp)); - } -} - -template -void -__inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, - _Compare __comp, typename iterator_traits<_BidirectionalIterator>::difference_type __len1, - typename iterator_traits<_BidirectionalIterator>::difference_type __len2, - typename iterator_traits<_BidirectionalIterator>::value_type* __buff, ptrdiff_t __buff_size) -{ - typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; - while (true) - { - // if __middle == __last, we're done - if (__len2 == 0) - return; - if (__len1 <= __buff_size || __len2 <= __buff_size) - return __buffered_inplace_merge<_Compare> - (__first, __middle, __last, __comp, __len1, __len2, __buff); - // shrink [__first, __middle) as much as possible (with no moves), returning if it shrinks to 0 - for (; true; ++__first, (void) --__len1) - { - if (__len1 == 0) - return; - if (__comp(*__middle, *__first)) - break; - } - // __first < __middle < __last - // *__first > *__middle - // partition [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last) such that - // all elements in: - // [__first, __m1) <= [__middle, __m2) - // [__middle, __m2) < [__m1, __middle) - // [__m1, __middle) <= [__m2, __last) - // and __m1 or __m2 is in the middle of its range - _BidirectionalIterator __m1; // "median" of [__first, __middle) - _BidirectionalIterator __m2; // "median" of [__middle, __last) - difference_type __len11; // distance(__first, __m1) - difference_type __len21; // distance(__middle, __m2) - // binary search smaller range - if (__len1 < __len2) - { // __len >= 1, __len2 >= 2 - __len21 = __len2 / 2; - __m2 = __middle; - _VSTD::advance(__m2, __len21); - __m1 = __upper_bound<_Compare>(__first, __middle, *__m2, __comp); - __len11 = _VSTD::distance(__first, __m1); - } - else - { - if (__len1 == 1) - { // __len1 >= __len2 && __len2 > 0, therefore __len2 == 1 - // It is known *__first > *__middle - swap(*__first, *__middle); - return; - } - // __len1 >= 2, __len2 >= 1 - __len11 = __len1 / 2; - __m1 = __first; - _VSTD::advance(__m1, __len11); - __m2 = __lower_bound<_Compare>(__middle, __last, *__m1, __comp); - __len21 = _VSTD::distance(__middle, __m2); - } - difference_type __len12 = __len1 - __len11; // distance(__m1, __middle) - difference_type __len22 = __len2 - __len21; // distance(__m2, __last) - // [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last) - // swap middle two partitions - __middle = _VSTD::rotate(__m1, __middle, __m2); - // __len12 and __len21 now have swapped meanings - // merge smaller range with recurisve call and larger with tail recursion elimination - if (__len11 + __len21 < __len12 + __len22) - { - __inplace_merge<_Compare>(__first, __m1, __middle, __comp, __len11, __len21, __buff, __buff_size); -// __inplace_merge<_Compare>(__middle, __m2, __last, __comp, __len12, __len22, __buff, __buff_size); - __first = __middle; - __middle = __m2; - __len1 = __len12; - __len2 = __len22; - } - else - { - __inplace_merge<_Compare>(__middle, __m2, __last, __comp, __len12, __len22, __buff, __buff_size); -// __inplace_merge<_Compare>(__first, __m1, __middle, __comp, __len11, __len21, __buff, __buff_size); - __last = __middle; - __middle = __m1; - __len1 = __len11; - __len2 = __len21; - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, - _Compare __comp) -{ - typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; - typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; - difference_type __len1 = _VSTD::distance(__first, __middle); - difference_type __len2 = _VSTD::distance(__middle, __last); - difference_type __buf_size = _VSTD::min(__len1, __len2); - pair __buf = _VSTD::get_temporary_buffer(__buf_size); - unique_ptr __h(__buf.first); - -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return _VSTD::__inplace_merge<_Comp_ref>(__first, __middle, __last, __c, __len1, __len2, - __buf.first, __buf.second); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return _VSTD::__inplace_merge<_Comp_ref>(__first, __middle, __last, __comp, __len1, __len2, - __buf.first, __buf.second); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last) -{ - _VSTD::inplace_merge(__first, __middle, __last, - __less::value_type>()); -} - -// stable_sort - -template -void -__merge_move_construct(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - typename iterator_traits<_InputIterator1>::value_type* __result, _Compare __comp) -{ - typedef typename iterator_traits<_InputIterator1>::value_type value_type; - __destruct_n __d(0); - unique_ptr __h(__result, __d); - for (; true; ++__result) - { - if (__first1 == __last1) - { - for (; __first2 != __last2; ++__first2, ++__result, __d.__incr((value_type*)0)) - ::new (__result) value_type(_VSTD::move(*__first2)); - __h.release(); - return; - } - if (__first2 == __last2) - { - for (; __first1 != __last1; ++__first1, ++__result, __d.__incr((value_type*)0)) - ::new (__result) value_type(_VSTD::move(*__first1)); - __h.release(); - return; - } - if (__comp(*__first2, *__first1)) - { - ::new (__result) value_type(_VSTD::move(*__first2)); - __d.__incr((value_type*)0); - ++__first2; - } - else - { - ::new (__result) value_type(_VSTD::move(*__first1)); - __d.__incr((value_type*)0); - ++__first1; - } - } -} - -template -void -__merge_move_assign(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result, _Compare __comp) -{ - for (; __first1 != __last1; ++__result) - { - if (__first2 == __last2) - { - for (; __first1 != __last1; ++__first1, ++__result) - *__result = _VSTD::move(*__first1); - return; - } - if (__comp(*__first2, *__first1)) - { - *__result = _VSTD::move(*__first2); - ++__first2; - } - else - { - *__result = _VSTD::move(*__first1); - ++__first1; - } - } - for (; __first2 != __last2; ++__first2, ++__result) - *__result = _VSTD::move(*__first2); -} - -template -void -__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len, - typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size); - -template -void -__stable_sort_move(_RandomAccessIterator __first1, _RandomAccessIterator __last1, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len, - typename iterator_traits<_RandomAccessIterator>::value_type* __first2) -{ - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - switch (__len) - { - case 0: - return; - case 1: - ::new(__first2) value_type(_VSTD::move(*__first1)); - return; - case 2: - __destruct_n __d(0); - unique_ptr __h2(__first2, __d); - if (__comp(*--__last1, *__first1)) - { - ::new(__first2) value_type(_VSTD::move(*__last1)); - __d.__incr((value_type*)0); - ++__first2; - ::new(__first2) value_type(_VSTD::move(*__first1)); - } - else - { - ::new(__first2) value_type(_VSTD::move(*__first1)); - __d.__incr((value_type*)0); - ++__first2; - ::new(__first2) value_type(_VSTD::move(*__last1)); - } - __h2.release(); - return; - } - if (__len <= 8) - { - __insertion_sort_move<_Compare>(__first1, __last1, __first2, __comp); - return; - } - typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; - _RandomAccessIterator __m = __first1 + __l2; - __stable_sort<_Compare>(__first1, __m, __comp, __l2, __first2, __l2); - __stable_sort<_Compare>(__m, __last1, __comp, __len - __l2, __first2 + __l2, __len - __l2); - __merge_move_construct<_Compare>(__first1, __m, __m, __last1, __first2, __comp); -} - -template -struct __stable_sort_switch -{ - static const unsigned value = 128*is_trivially_copy_assignable<_Tp>::value; -}; - -template -void -__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len, - typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size) -{ - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - switch (__len) - { - case 0: - case 1: - return; - case 2: - if (__comp(*--__last, *__first)) - swap(*__first, *__last); - return; - } - if (__len <= static_cast(__stable_sort_switch::value)) - { - __insertion_sort<_Compare>(__first, __last, __comp); - return; - } - typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; - _RandomAccessIterator __m = __first + __l2; - if (__len <= __buff_size) - { - __destruct_n __d(0); - unique_ptr __h2(__buff, __d); - __stable_sort_move<_Compare>(__first, __m, __comp, __l2, __buff); - __d.__set(__l2, (value_type*)0); - __stable_sort_move<_Compare>(__m, __last, __comp, __len - __l2, __buff + __l2); - __d.__set(__len, (value_type*)0); - __merge_move_assign<_Compare>(__buff, __buff + __l2, __buff + __l2, __buff + __len, __first, __comp); -// __merge<_Compare>(move_iterator(__buff), -// move_iterator(__buff + __l2), -// move_iterator<_RandomAccessIterator>(__buff + __l2), -// move_iterator<_RandomAccessIterator>(__buff + __len), -// __first, __comp); - return; - } - __stable_sort<_Compare>(__first, __m, __comp, __l2, __buff, __buff_size); - __stable_sort<_Compare>(__m, __last, __comp, __len - __l2, __buff, __buff_size); - __inplace_merge<_Compare>(__first, __m, __last, __comp, __l2, __len - __l2, __buff, __buff_size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - difference_type __len = __last - __first; - pair __buf(0, 0); - unique_ptr __h; - if (__len > static_cast(__stable_sort_switch::value)) - { - __buf = _VSTD::get_temporary_buffer(__len); - __h.reset(__buf.first); - } -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - __stable_sort<_Comp_ref>(__first, __last, __c, __len, __buf.first, __buf.second); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - __stable_sort<_Comp_ref>(__first, __last, __comp, __len, __buf.first, __buf.second); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - _VSTD::stable_sort(__first, __last, __less::value_type>()); -} - -// is_heap_until - -template -_RandomAccessIterator -is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - typedef typename _VSTD::iterator_traits<_RandomAccessIterator>::difference_type difference_type; - difference_type __len = __last - __first; - difference_type __p = 0; - difference_type __c = 1; - _RandomAccessIterator __pp = __first; - while (__c < __len) - { - _RandomAccessIterator __cp = __first + __c; - if (__comp(*__pp, *__cp)) - return __cp; - ++__c; - ++__cp; - if (__c == __len) - return __last; - if (__comp(*__pp, *__cp)) - return __cp; - ++__p; - ++__pp; - __c = 2 * __p + 1; - } - return __last; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_RandomAccessIterator -is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - return _VSTD::is_heap_until(__first, __last, __less::value_type>()); -} - -// is_heap - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - return _VSTD::is_heap_until(__first, __last, __comp) == __last; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - return _VSTD::is_heap(__first, __last, __less::value_type>()); -} - -// push_heap - -template -void -__sift_up(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len) -{ - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - if (__len > 1) - { - __len = (__len - 2) / 2; - _RandomAccessIterator __ptr = __first + __len; - if (__comp(*__ptr, *--__last)) - { - value_type __t(_VSTD::move(*__last)); - do - { - *__last = _VSTD::move(*__ptr); - __last = __ptr; - if (__len == 0) - break; - __len = (__len - 1) / 2; - __ptr = __first + __len; - } while (__comp(*__ptr, __t)); - *__last = _VSTD::move(__t); - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - __sift_up<_Comp_ref>(__first, __last, __c, __last - __first); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - __sift_up<_Comp_ref>(__first, __last, __comp, __last - __first); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - _VSTD::push_heap(__first, __last, __less::value_type>()); -} - -// pop_heap - -template -void -__sift_down(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len, - _RandomAccessIterator __start) -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; - // left-child of __start is at 2 * __start + 1 - // right-child of __start is at 2 * __start + 2 - difference_type __child = __start - __first; - - if (__len < 2 || (__len - 2) / 2 < __child) - return; - - __child = 2 * __child + 1; - _RandomAccessIterator __child_i = __first + __child; - - if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + 1))) { - // right-child exists and is greater than left-child - ++__child_i; - ++__child; - } - - // check if we are in heap-order - if (__comp(*__child_i, *__start)) - // we are, __start is larger than it's largest child - return; - - value_type __top(_VSTD::move(*__start)); - do - { - // we are not in heap-order, swap the parent with it's largest child - *__start = _VSTD::move(*__child_i); - __start = __child_i; - - if ((__len - 2) / 2 < __child) - break; - - // recompute the child based off of the updated parent - __child = 2 * __child + 1; - __child_i = __first + __child; - - if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + 1))) { - // right-child exists and is greater than left-child - ++__child_i; - ++__child; - } - - // check if we are in heap-order - } while (!__comp(*__child_i, __top)); - *__start = _VSTD::move(__top); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, - typename iterator_traits<_RandomAccessIterator>::difference_type __len) -{ - if (__len > 1) - { - swap(*__first, *--__last); - __sift_down<_Compare>(__first, __last, __comp, __len - 1, __first); - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - __pop_heap<_Comp_ref>(__first, __last, __c, __last - __first); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - __pop_heap<_Comp_ref>(__first, __last, __comp, __last - __first); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - _VSTD::pop_heap(__first, __last, __less::value_type>()); -} - -// make_heap - -template -void -__make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - difference_type __n = __last - __first; - if (__n > 1) - { - // start from the first parent, there is no need to consider children - for (difference_type __start = (__n - 2) / 2; __start >= 0; --__start) - { - __sift_down<_Compare>(__first, __last, __comp, __n, __first + __start); - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - __make_heap<_Comp_ref>(__first, __last, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - __make_heap<_Comp_ref>(__first, __last, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - _VSTD::make_heap(__first, __last, __less::value_type>()); -} - -// sort_heap - -template -void -__sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - for (difference_type __n = __last - __first; __n > 1; --__last, --__n) - __pop_heap<_Compare>(__first, __last, __comp, __n); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - __sort_heap<_Comp_ref>(__first, __last, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - __sort_heap<_Comp_ref>(__first, __last, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - _VSTD::sort_heap(__first, __last, __less::value_type>()); -} - -// partial_sort - -template -void -__partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, - _Compare __comp) -{ - __make_heap<_Compare>(__first, __middle, __comp); - typename iterator_traits<_RandomAccessIterator>::difference_type __len = __middle - __first; - for (_RandomAccessIterator __i = __middle; __i != __last; ++__i) - { - if (__comp(*__i, *__first)) - { - swap(*__i, *__first); - __sift_down<_Compare>(__first, __middle, __comp, __len, __first); - } - } - __sort_heap<_Compare>(__first, __middle, __comp); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, - _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - __partial_sort<_Comp_ref>(__first, __middle, __last, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - __partial_sort<_Comp_ref>(__first, __middle, __last, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) -{ - _VSTD::partial_sort(__first, __middle, __last, - __less::value_type>()); -} - -// partial_sort_copy - -template -_RandomAccessIterator -__partial_sort_copy(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __result_first, _RandomAccessIterator __result_last, _Compare __comp) -{ - _RandomAccessIterator __r = __result_first; - if (__r != __result_last) - { - for (; __first != __last && __r != __result_last; (void) ++__first, ++__r) - *__r = *__first; - __make_heap<_Compare>(__result_first, __r, __comp); - typename iterator_traits<_RandomAccessIterator>::difference_type __len = __r - __result_first; - for (; __first != __last; ++__first) - if (__comp(*__first, *__result_first)) - { - *__result_first = *__first; - __sift_down<_Compare>(__result_first, __r, __comp, __len, __result_first); - } - __sort_heap<_Compare>(__result_first, __r, __comp); - } - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_RandomAccessIterator -partial_sort_copy(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __result_first, _RandomAccessIterator __result_last, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __partial_sort_copy<_Comp_ref>(__first, __last, __result_first, __result_last, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __partial_sort_copy<_Comp_ref>(__first, __last, __result_first, __result_last, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_RandomAccessIterator -partial_sort_copy(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __result_first, _RandomAccessIterator __result_last) -{ - return _VSTD::partial_sort_copy(__first, __last, __result_first, __result_last, - __less::value_type>()); -} - -// nth_element - -template -void -__nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp) -{ - // _Compare is known to be a reference type - typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; - const difference_type __limit = 7; - while (true) - { - __restart: - if (__nth == __last) - return; - difference_type __len = __last - __first; - switch (__len) - { - case 0: - case 1: - return; - case 2: - if (__comp(*--__last, *__first)) - swap(*__first, *__last); - return; - case 3: - { - _RandomAccessIterator __m = __first; - _VSTD::__sort3<_Compare>(__first, ++__m, --__last, __comp); - return; - } - } - if (__len <= __limit) - { - __selection_sort<_Compare>(__first, __last, __comp); - return; - } - // __len > __limit >= 3 - _RandomAccessIterator __m = __first + __len/2; - _RandomAccessIterator __lm1 = __last; - unsigned __n_swaps = _VSTD::__sort3<_Compare>(__first, __m, --__lm1, __comp); - // *__m is median - // partition [__first, __m) < *__m and *__m <= [__m, __last) - // (this inhibits tossing elements equivalent to __m around unnecessarily) - _RandomAccessIterator __i = __first; - _RandomAccessIterator __j = __lm1; - // j points beyond range to be tested, *__lm1 is known to be <= *__m - // The search going up is known to be guarded but the search coming down isn't. - // Prime the downward search with a guard. - if (!__comp(*__i, *__m)) // if *__first == *__m - { - // *__first == *__m, *__first doesn't go in first part - // manually guard downward moving __j against __i - while (true) - { - if (__i == --__j) - { - // *__first == *__m, *__m <= all other elements - // Parition instead into [__first, __i) == *__first and *__first < [__i, __last) - ++__i; // __first + 1 - __j = __last; - if (!__comp(*__first, *--__j)) // we need a guard if *__first == *(__last-1) - { - while (true) - { - if (__i == __j) - return; // [__first, __last) all equivalent elements - if (__comp(*__first, *__i)) - { - swap(*__i, *__j); - ++__n_swaps; - ++__i; - break; - } - ++__i; - } - } - // [__first, __i) == *__first and *__first < [__j, __last) and __j == __last - 1 - if (__i == __j) - return; - while (true) - { - while (!__comp(*__first, *__i)) - ++__i; - while (__comp(*__first, *--__j)) - ; - if (__i >= __j) - break; - swap(*__i, *__j); - ++__n_swaps; - ++__i; - } - // [__first, __i) == *__first and *__first < [__i, __last) - // The first part is sorted, - if (__nth < __i) - return; - // __nth_element the secod part - // __nth_element<_Compare>(__i, __nth, __last, __comp); - __first = __i; - goto __restart; - } - if (__comp(*__j, *__m)) - { - swap(*__i, *__j); - ++__n_swaps; - break; // found guard for downward moving __j, now use unguarded partition - } - } - } - ++__i; - // j points beyond range to be tested, *__lm1 is known to be <= *__m - // if not yet partitioned... - if (__i < __j) - { - // known that *(__i - 1) < *__m - while (true) - { - // __m still guards upward moving __i - while (__comp(*__i, *__m)) - ++__i; - // It is now known that a guard exists for downward moving __j - while (!__comp(*--__j, *__m)) - ; - if (__i >= __j) - break; - swap(*__i, *__j); - ++__n_swaps; - // It is known that __m != __j - // If __m just moved, follow it - if (__m == __i) - __m = __j; - ++__i; - } - } - // [__first, __i) < *__m and *__m <= [__i, __last) - if (__i != __m && __comp(*__m, *__i)) - { - swap(*__i, *__m); - ++__n_swaps; - } - // [__first, __i) < *__i and *__i <= [__i+1, __last) - if (__nth == __i) - return; - if (__n_swaps == 0) - { - // We were given a perfectly partitioned sequence. Coincidence? - if (__nth < __i) - { - // Check for [__first, __i) already sorted - __j = __m = __first; - while (++__j != __i) - { - if (__comp(*__j, *__m)) - // not yet sorted, so sort - goto not_sorted; - __m = __j; - } - // [__first, __i) sorted - return; - } - else - { - // Check for [__i, __last) already sorted - __j = __m = __i; - while (++__j != __last) - { - if (__comp(*__j, *__m)) - // not yet sorted, so sort - goto not_sorted; - __m = __j; - } - // [__i, __last) sorted - return; - } - } -not_sorted: - // __nth_element on range containing __nth - if (__nth < __i) - { - // __nth_element<_Compare>(__first, __nth, __i, __comp); - __last = __i; - } - else - { - // __nth_element<_Compare>(__i+1, __nth, __last, __comp); - __first = ++__i; - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - __nth_element<_Comp_ref>(__first, __nth, __last, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - __nth_element<_Comp_ref>(__first, __nth, __last, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last) -{ - _VSTD::nth_element(__first, __nth, __last, __less::value_type>()); -} - -// includes - -template -bool -__includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, - _Compare __comp) -{ - for (; __first2 != __last2; ++__first1) - { - if (__first1 == __last1 || __comp(*__first2, *__first1)) - return false; - if (!__comp(*__first1, *__first2)) - ++__first2; - } - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, - _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __includes<_Comp_ref>(__first1, __last1, __first2, __last2, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __includes<_Comp_ref>(__first1, __last1, __first2, __last2, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) -{ - return _VSTD::includes(__first1, __last1, __first2, __last2, - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); -} - -// set_union - -template -_OutputIterator -__set_union(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ - for (; __first1 != __last1; ++__result) - { - if (__first2 == __last2) - return _VSTD::copy(__first1, __last1, __result); - if (__comp(*__first2, *__first1)) - { - *__result = *__first2; - ++__first2; - } - else - { - *__result = *__first1; - if (!__comp(*__first1, *__first2)) - ++__first2; - ++__first1; - } - } - return _VSTD::copy(__first2, __last2, __result); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -set_union(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __set_union<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __set_union<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -set_union(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) -{ - return _VSTD::set_union(__first1, __last1, __first2, __last2, __result, - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); -} - -// set_intersection - -template -_OutputIterator -__set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ - while (__first1 != __last1 && __first2 != __last2) - { - if (__comp(*__first1, *__first2)) - ++__first1; - else - { - if (!__comp(*__first2, *__first1)) - { - *__result = *__first1; - ++__result; - ++__first1; - } - ++__first2; - } - } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __set_intersection<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __set_intersection<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) -{ - return _VSTD::set_intersection(__first1, __last1, __first2, __last2, __result, - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); -} - -// set_difference - -template -_OutputIterator -__set_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ - while (__first1 != __last1) - { - if (__first2 == __last2) - return _VSTD::copy(__first1, __last1, __result); - if (__comp(*__first1, *__first2)) - { - *__result = *__first1; - ++__result; - ++__first1; - } - else - { - if (!__comp(*__first2, *__first1)) - ++__first1; - ++__first2; - } - } - return __result; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -set_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __set_difference<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __set_difference<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -set_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) -{ - return _VSTD::set_difference(__first1, __last1, __first2, __last2, __result, - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); -} - -// set_symmetric_difference - -template -_OutputIterator -__set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ - while (__first1 != __last1) - { - if (__first2 == __last2) - return _VSTD::copy(__first1, __last1, __result); - if (__comp(*__first1, *__first2)) - { - *__result = *__first1; - ++__result; - ++__first1; - } - else - { - if (__comp(*__first2, *__first1)) - { - *__result = *__first2; - ++__result; - } - else - ++__first1; - ++__first2; - } - } - return _VSTD::copy(__first2, __last2, __result); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __set_symmetric_difference<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __set_symmetric_difference<_Comp_ref>(__first1, __last1, __first2, __last2, __result, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_OutputIterator -set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) -{ - return _VSTD::set_symmetric_difference(__first1, __last1, __first2, __last2, __result, - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); -} - -// lexicographical_compare - -template -bool -__lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) -{ - for (; __first2 != __last2; ++__first1, (void) ++__first2) - { - if (__first1 == __last1 || __comp(*__first1, *__first2)) - return true; - if (__comp(*__first2, *__first1)) - return false; - } - return false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __lexicographical_compare<_Comp_ref>(__first1, __last1, __first2, __last2, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __lexicographical_compare<_Comp_ref>(__first1, __last1, __first2, __last2, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2) -{ - return _VSTD::lexicographical_compare(__first1, __last1, __first2, __last2, - __less::value_type, - typename iterator_traits<_InputIterator2>::value_type>()); -} - -// next_permutation - -template -bool -__next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) -{ - _BidirectionalIterator __i = __last; - if (__first == __last || __first == --__i) - return false; - while (true) - { - _BidirectionalIterator __ip1 = __i; - if (__comp(*--__i, *__ip1)) - { - _BidirectionalIterator __j = __last; - while (!__comp(*__i, *--__j)) - ; - swap(*__i, *__j); - _VSTD::reverse(__ip1, __last); - return true; - } - if (__i == __first) - { - _VSTD::reverse(__first, __last); - return false; - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __next_permutation<_Comp_ref>(__first, __last, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __next_permutation<_Comp_ref>(__first, __last, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) -{ - return _VSTD::next_permutation(__first, __last, - __less::value_type>()); -} - -// prev_permutation - -template -bool -__prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) -{ - _BidirectionalIterator __i = __last; - if (__first == __last || __first == --__i) - return false; - while (true) - { - _BidirectionalIterator __ip1 = __i; - if (__comp(*__ip1, *--__i)) - { - _BidirectionalIterator __j = __last; - while (!__comp(*--__j, *__i)) - ; - swap(*__i, *__j); - _VSTD::reverse(__ip1, __last); - return true; - } - if (__i == __first) - { - _VSTD::reverse(__first, __last); - return false; - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) -{ -#ifdef _LIBCPP_DEBUG - typedef typename add_lvalue_reference<__debug_less<_Compare> >::type _Comp_ref; - __debug_less<_Compare> __c(__comp); - return __prev_permutation<_Comp_ref>(__first, __last, __c); -#else // _LIBCPP_DEBUG - typedef typename add_lvalue_reference<_Compare>::type _Comp_ref; - return __prev_permutation<_Comp_ref>(__first, __last, __comp); -#endif // _LIBCPP_DEBUG -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) -{ - return _VSTD::prev_permutation(__first, __last, - __less::value_type>()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value, - _Tp ->::type -__rotate_left(_Tp __t, _Tp __n = 1) -{ - const unsigned __bits = static_cast(sizeof(_Tp) * __CHAR_BIT__ - 1); - __n &= __bits; - return static_cast<_Tp>((__t << __n) | (static_cast::type>(__t) >> (__bits - __n))); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value, - _Tp ->::type -__rotate_right(_Tp __t, _Tp __n = 1) -{ - const unsigned __bits = static_cast(sizeof(_Tp) * __CHAR_BIT__ - 1); - __n &= __bits; - return static_cast<_Tp>((__t << (__bits - __n)) | (static_cast::type>(__t) >> __n)); -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_ALGORITHM diff --git a/libcxx/include/array b/libcxx/include/array deleted file mode 100644 index 2e02a43ed..000000000 --- a/libcxx/include/array +++ /dev/null @@ -1,331 +0,0 @@ -// -*- C++ -*- -//===---------------------------- array -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_ARRAY -#define _LIBCPP_ARRAY - -/* - array synopsis - -namespace std -{ -template -struct array -{ - // types: - typedef T & reference; - typedef const T & const_reference; - typedef implementation defined iterator; - typedef implementation defined const_iterator; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef T value_type; - typedef T* pointer; - typedef const T* const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // No explicit construct/copy/destroy for aggregate type - void fill(const T& u); - void swap(array& a) noexcept(noexcept(swap(declval(), declval()))); - - // iterators: - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - reverse_iterator rbegin() noexcept; - const_reverse_iterator rbegin() const noexcept; - reverse_iterator rend() noexcept; - const_reverse_iterator rend() const noexcept; - - const_iterator cbegin() const noexcept; - const_iterator cend() const noexcept; - const_reverse_iterator crbegin() const noexcept; - const_reverse_iterator crend() const noexcept; - - // capacity: - constexpr size_type size() const noexcept; - constexpr size_type max_size() const noexcept; - constexpr bool empty() const noexcept; - - // element access: - reference operator[](size_type n); - const_reference operator[](size_type n) const; // constexpr in C++14 - const_reference at(size_type n) const; // constexpr in C++14 - reference at(size_type n); - - reference front(); - const_reference front() const; // constexpr in C++14 - reference back(); - const_reference back() const; // constexpr in C++14 - - T* data() noexcept; - const T* data() const noexcept; -}; - -template - bool operator==(const array& x, const array& y); -template - bool operator!=(const array& x, const array& y); -template - bool operator<(const array& x, const array& y); -template - bool operator>(const array& x, const array& y); -template - bool operator<=(const array& x, const array& y); -template - bool operator>=(const array& x, const array& y); - -template - void swap(array& x, array& y) noexcept(noexcept(x.swap(y))); - -template class tuple_size; -template class tuple_element; -template struct tuple_size>; -template struct tuple_element>; -template T& get(array&) noexcept; // constexpr in C++14 -template const T& get(const array&) noexcept; // constexpr in C++14 -template T&& get(array&&) noexcept; // constexpr in C++14 - -} // std - -*/ - -#include <__config> -#include <__tuple> -#include -#include -#include -#include -#include -#if defined(_LIBCPP_NO_EXCEPTIONS) - #include -#endif - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -struct _LIBCPP_TYPE_VIS_ONLY array -{ - // types: - typedef array __self; - typedef _Tp value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef value_type* iterator; - typedef const value_type* const_iterator; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - value_type __elems_[_Size > 0 ? _Size : 1]; - - // No explicit construct/copy/destroy for aggregate type - _LIBCPP_INLINE_VISIBILITY void fill(const value_type& __u) - {_VSTD::fill_n(__elems_, _Size, __u);} - _LIBCPP_INLINE_VISIBILITY - void swap(array& __a) _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value) - {_VSTD::swap_ranges(__elems_, __elems_ + _Size, __a.__elems_);} - - // iterators: - _LIBCPP_INLINE_VISIBILITY - iterator begin() _NOEXCEPT {return iterator(__elems_);} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT {return const_iterator(__elems_);} - _LIBCPP_INLINE_VISIBILITY - iterator end() _NOEXCEPT {return iterator(__elems_ + _Size);} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT {return const_iterator(__elems_ + _Size);} - - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rbegin() _NOEXCEPT {return reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rbegin() const _NOEXCEPT {return const_reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rend() _NOEXCEPT {return reverse_iterator(begin());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rend() const _NOEXCEPT {return const_reverse_iterator(begin());} - - _LIBCPP_INLINE_VISIBILITY - const_iterator cbegin() const _NOEXCEPT {return begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator cend() const _NOEXCEPT {return end();} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crbegin() const _NOEXCEPT {return rbegin();} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crend() const _NOEXCEPT {return rend();} - - // capacity: - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR size_type size() const _NOEXCEPT {return _Size;} - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR size_type max_size() const _NOEXCEPT {return _Size;} - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR bool empty() const _NOEXCEPT {return _Size == 0;} - - // element access: - _LIBCPP_INLINE_VISIBILITY reference operator[](size_type __n) {return __elems_[__n];} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const_reference operator[](size_type __n) const {return __elems_[__n];} - reference at(size_type __n); - _LIBCPP_CONSTEXPR_AFTER_CXX11 const_reference at(size_type __n) const; - - _LIBCPP_INLINE_VISIBILITY reference front() {return __elems_[0];} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const_reference front() const {return __elems_[0];} - _LIBCPP_INLINE_VISIBILITY reference back() {return __elems_[_Size > 0 ? _Size-1 : 0];} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 const_reference back() const {return __elems_[_Size > 0 ? _Size-1 : 0];} - - _LIBCPP_INLINE_VISIBILITY - value_type* data() _NOEXCEPT {return __elems_;} - _LIBCPP_INLINE_VISIBILITY - const value_type* data() const _NOEXCEPT {return __elems_;} -}; - -template -typename array<_Tp, _Size>::reference -array<_Tp, _Size>::at(size_type __n) -{ - if (__n >= _Size) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("array::at"); -#else - assert(!"array::at out_of_range"); -#endif - return __elems_[__n]; -} - -template -_LIBCPP_CONSTEXPR_AFTER_CXX11 -typename array<_Tp, _Size>::const_reference -array<_Tp, _Size>::at(size_type __n) const -{ - if (__n >= _Size) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("array::at"); -#else - assert(!"array::at out_of_range"); -#endif - return __elems_[__n]; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) -{ - return _VSTD::equal(__x.__elems_, __x.__elems_ + _Size, __y.__elems_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) -{ - return _VSTD::lexicographical_compare(__x.__elems_, __x.__elems_ + _Size, __y.__elems_, __y.__elems_ + _Size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) -{ - return !(__x < __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - __is_swappable<_Tp>::value, - void ->::type -swap(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) - _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value) -{ - __x.swap(__y); -} - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_size > - : public integral_constant {}; - -template -class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, array<_Tp, _Size> > -{ -public: - typedef _Tp type; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp& -get(array<_Tp, _Size>& __a) _NOEXCEPT -{ - static_assert(_Ip < _Size, "Index out of bounds in std::get<> (std::array)"); - return __a.__elems_[_Ip]; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -const _Tp& -get(const array<_Tp, _Size>& __a) _NOEXCEPT -{ - static_assert(_Ip < _Size, "Index out of bounds in std::get<> (const std::array)"); - return __a.__elems_[_Ip]; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp&& -get(array<_Tp, _Size>&& __a) _NOEXCEPT -{ - static_assert(_Ip < _Size, "Index out of bounds in std::get<> (std::array &&)"); - return _VSTD::move(__a.__elems_[_Ip]); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_ARRAY diff --git a/libcxx/include/atomic b/libcxx/include/atomic deleted file mode 100644 index 0427a9133..000000000 --- a/libcxx/include/atomic +++ /dev/null @@ -1,1798 +0,0 @@ -// -*- C++ -*- -//===--------------------------- atomic -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_ATOMIC -#define _LIBCPP_ATOMIC - -/* - atomic synopsis - -namespace std -{ - -// order and consistency - -typedef enum memory_order -{ - memory_order_relaxed, - memory_order_consume, // load-consume - memory_order_acquire, // load-acquire - memory_order_release, // store-release - memory_order_acq_rel, // store-release load-acquire - memory_order_seq_cst // store-release load-acquire -} memory_order; - -template T kill_dependency(T y) noexcept; - -// lock-free property - -#define ATOMIC_BOOL_LOCK_FREE unspecified -#define ATOMIC_CHAR_LOCK_FREE unspecified -#define ATOMIC_CHAR16_T_LOCK_FREE unspecified -#define ATOMIC_CHAR32_T_LOCK_FREE unspecified -#define ATOMIC_WCHAR_T_LOCK_FREE unspecified -#define ATOMIC_SHORT_LOCK_FREE unspecified -#define ATOMIC_INT_LOCK_FREE unspecified -#define ATOMIC_LONG_LOCK_FREE unspecified -#define ATOMIC_LLONG_LOCK_FREE unspecified -#define ATOMIC_POINTER_LOCK_FREE unspecified - -// flag type and operations - -typedef struct atomic_flag -{ - bool test_and_set(memory_order m = memory_order_seq_cst) volatile noexcept; - bool test_and_set(memory_order m = memory_order_seq_cst) noexcept; - void clear(memory_order m = memory_order_seq_cst) volatile noexcept; - void clear(memory_order m = memory_order_seq_cst) noexcept; - 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; -} atomic_flag; - -bool - atomic_flag_test_and_set(volatile atomic_flag* obj) noexcept; - -bool - atomic_flag_test_and_set(atomic_flag* obj) noexcept; - -bool - atomic_flag_test_and_set_explicit(volatile atomic_flag* obj, - memory_order m) noexcept; - -bool - atomic_flag_test_and_set_explicit(atomic_flag* obj, memory_order m) noexcept; - -void - atomic_flag_clear(volatile atomic_flag* obj) noexcept; - -void - atomic_flag_clear(atomic_flag* obj) noexcept; - -void - atomic_flag_clear_explicit(volatile atomic_flag* obj, memory_order m) noexcept; - -void - atomic_flag_clear_explicit(atomic_flag* obj, memory_order m) noexcept; - -#define ATOMIC_FLAG_INIT see below -#define ATOMIC_VAR_INIT(value) see below - -template -struct atomic -{ - bool is_lock_free() const volatile noexcept; - bool is_lock_free() const noexcept; - void store(T desr, memory_order m = memory_order_seq_cst) volatile noexcept; - void store(T desr, memory_order m = memory_order_seq_cst) noexcept; - T load(memory_order m = memory_order_seq_cst) const volatile noexcept; - T load(memory_order m = memory_order_seq_cst) const noexcept; - operator T() const volatile noexcept; - operator T() const noexcept; - T exchange(T desr, memory_order m = memory_order_seq_cst) volatile noexcept; - T exchange(T desr, memory_order m = memory_order_seq_cst) noexcept; - bool compare_exchange_weak(T& expc, T desr, - memory_order s, memory_order f) volatile noexcept; - bool compare_exchange_weak(T& expc, T desr, memory_order s, memory_order f) noexcept; - bool compare_exchange_strong(T& expc, T desr, - memory_order s, memory_order f) volatile noexcept; - bool compare_exchange_strong(T& expc, T desr, - memory_order s, memory_order f) noexcept; - bool compare_exchange_weak(T& expc, T desr, - memory_order m = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_weak(T& expc, T desr, - memory_order m = memory_order_seq_cst) noexcept; - bool compare_exchange_strong(T& expc, T desr, - memory_order m = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_strong(T& expc, T desr, - memory_order m = memory_order_seq_cst) noexcept; - - atomic() noexcept = default; - constexpr atomic(T desr) noexcept; - atomic(const atomic&) = delete; - atomic& operator=(const atomic&) = delete; - atomic& operator=(const atomic&) volatile = delete; - T operator=(T) volatile noexcept; - T operator=(T) noexcept; -}; - -template <> -struct atomic -{ - bool is_lock_free() const volatile noexcept; - bool is_lock_free() const noexcept; - void store(integral desr, memory_order m = memory_order_seq_cst) volatile noexcept; - void store(integral desr, memory_order m = memory_order_seq_cst) noexcept; - integral load(memory_order m = memory_order_seq_cst) const volatile noexcept; - integral load(memory_order m = memory_order_seq_cst) const noexcept; - operator integral() const volatile noexcept; - operator integral() const noexcept; - integral exchange(integral desr, - memory_order m = memory_order_seq_cst) volatile noexcept; - integral exchange(integral desr, memory_order m = memory_order_seq_cst) noexcept; - bool compare_exchange_weak(integral& expc, integral desr, - memory_order s, memory_order f) volatile noexcept; - bool compare_exchange_weak(integral& expc, integral desr, - memory_order s, memory_order f) noexcept; - bool compare_exchange_strong(integral& expc, integral desr, - memory_order s, memory_order f) volatile noexcept; - bool compare_exchange_strong(integral& expc, integral desr, - memory_order s, memory_order f) noexcept; - bool compare_exchange_weak(integral& expc, integral desr, - memory_order m = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_weak(integral& expc, integral desr, - memory_order m = memory_order_seq_cst) noexcept; - bool compare_exchange_strong(integral& expc, integral desr, - memory_order m = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_strong(integral& expc, integral desr, - memory_order m = memory_order_seq_cst) noexcept; - - integral - fetch_add(integral op, memory_order m = memory_order_seq_cst) volatile noexcept; - integral fetch_add(integral op, memory_order m = memory_order_seq_cst) noexcept; - integral - fetch_sub(integral op, memory_order m = memory_order_seq_cst) volatile noexcept; - integral fetch_sub(integral op, memory_order m = memory_order_seq_cst) noexcept; - integral - fetch_and(integral op, memory_order m = memory_order_seq_cst) volatile noexcept; - integral fetch_and(integral op, memory_order m = memory_order_seq_cst) noexcept; - integral - fetch_or(integral op, memory_order m = memory_order_seq_cst) volatile noexcept; - integral fetch_or(integral op, memory_order m = memory_order_seq_cst) noexcept; - integral - fetch_xor(integral op, memory_order m = memory_order_seq_cst) volatile noexcept; - integral fetch_xor(integral op, memory_order m = memory_order_seq_cst) noexcept; - - atomic() noexcept = default; - constexpr atomic(integral desr) noexcept; - atomic(const atomic&) = delete; - atomic& operator=(const atomic&) = delete; - atomic& operator=(const atomic&) volatile = delete; - integral operator=(integral desr) volatile noexcept; - integral operator=(integral desr) noexcept; - - integral operator++(int) volatile noexcept; - integral operator++(int) noexcept; - integral operator--(int) volatile noexcept; - integral operator--(int) noexcept; - integral operator++() volatile noexcept; - integral operator++() noexcept; - integral operator--() volatile noexcept; - integral operator--() noexcept; - integral operator+=(integral op) volatile noexcept; - integral operator+=(integral op) noexcept; - integral operator-=(integral op) volatile noexcept; - integral operator-=(integral op) noexcept; - integral operator&=(integral op) volatile noexcept; - integral operator&=(integral op) noexcept; - integral operator|=(integral op) volatile noexcept; - integral operator|=(integral op) noexcept; - integral operator^=(integral op) volatile noexcept; - integral operator^=(integral op) noexcept; -}; - -template -struct atomic -{ - bool is_lock_free() const volatile noexcept; - bool is_lock_free() const noexcept; - void store(T* desr, memory_order m = memory_order_seq_cst) volatile noexcept; - void store(T* desr, memory_order m = memory_order_seq_cst) noexcept; - T* load(memory_order m = memory_order_seq_cst) const volatile noexcept; - T* load(memory_order m = memory_order_seq_cst) const noexcept; - operator T*() const volatile noexcept; - operator T*() const noexcept; - T* exchange(T* desr, memory_order m = memory_order_seq_cst) volatile noexcept; - T* exchange(T* desr, memory_order m = memory_order_seq_cst) noexcept; - bool compare_exchange_weak(T*& expc, T* desr, - memory_order s, memory_order f) volatile noexcept; - bool compare_exchange_weak(T*& expc, T* desr, - memory_order s, memory_order f) noexcept; - bool compare_exchange_strong(T*& expc, T* desr, - memory_order s, memory_order f) volatile noexcept; - bool compare_exchange_strong(T*& expc, T* desr, - memory_order s, memory_order f) noexcept; - bool compare_exchange_weak(T*& expc, T* desr, - memory_order m = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_weak(T*& expc, T* desr, - memory_order m = memory_order_seq_cst) noexcept; - bool compare_exchange_strong(T*& expc, T* desr, - memory_order m = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_strong(T*& expc, T* desr, - memory_order m = memory_order_seq_cst) noexcept; - T* fetch_add(ptrdiff_t op, memory_order m = memory_order_seq_cst) volatile noexcept; - T* fetch_add(ptrdiff_t op, memory_order m = memory_order_seq_cst) noexcept; - T* fetch_sub(ptrdiff_t op, memory_order m = memory_order_seq_cst) volatile noexcept; - T* fetch_sub(ptrdiff_t op, memory_order m = memory_order_seq_cst) noexcept; - - atomic() noexcept = default; - constexpr atomic(T* desr) noexcept; - atomic(const atomic&) = delete; - atomic& operator=(const atomic&) = delete; - atomic& operator=(const atomic&) volatile = delete; - - T* operator=(T*) volatile noexcept; - T* operator=(T*) noexcept; - T* operator++(int) volatile noexcept; - T* operator++(int) noexcept; - T* operator--(int) volatile noexcept; - T* operator--(int) noexcept; - T* operator++() volatile noexcept; - T* operator++() noexcept; - T* operator--() volatile noexcept; - T* operator--() noexcept; - T* operator+=(ptrdiff_t op) volatile noexcept; - T* operator+=(ptrdiff_t op) noexcept; - T* operator-=(ptrdiff_t op) volatile noexcept; - T* operator-=(ptrdiff_t op) noexcept; -}; - - -template - bool - atomic_is_lock_free(const volatile atomic* obj) noexcept; - -template - bool - atomic_is_lock_free(const atomic* obj) noexcept; - -template - void - atomic_init(volatile atomic* obj, T desr) noexcept; - -template - void - atomic_init(atomic* obj, T desr) noexcept; - -template - void - atomic_store(volatile atomic* obj, T desr) noexcept; - -template - void - atomic_store(atomic* obj, T desr) noexcept; - -template - void - atomic_store_explicit(volatile atomic* obj, T desr, memory_order m) noexcept; - -template - void - atomic_store_explicit(atomic* obj, T desr, memory_order m) noexcept; - -template - T - atomic_load(const volatile atomic* obj) noexcept; - -template - T - atomic_load(const atomic* obj) noexcept; - -template - T - atomic_load_explicit(const volatile atomic* obj, memory_order m) noexcept; - -template - T - atomic_load_explicit(const atomic* obj, memory_order m) noexcept; - -template - T - atomic_exchange(volatile atomic* obj, T desr) noexcept; - -template - T - atomic_exchange(atomic* obj, T desr) noexcept; - -template - T - atomic_exchange_explicit(volatile atomic* obj, T desr, memory_order m) noexcept; - -template - T - atomic_exchange_explicit(atomic* obj, T desr, memory_order m) noexcept; - -template - bool - atomic_compare_exchange_weak(volatile atomic* obj, T* expc, T desr) noexcept; - -template - bool - atomic_compare_exchange_weak(atomic* obj, T* expc, T desr) noexcept; - -template - bool - atomic_compare_exchange_strong(volatile atomic* obj, T* expc, T desr) noexcept; - -template - bool - atomic_compare_exchange_strong(atomic* obj, T* expc, T desr) noexcept; - -template - bool - atomic_compare_exchange_weak_explicit(volatile atomic* obj, T* expc, - T desr, - memory_order s, memory_order f) noexcept; - -template - bool - atomic_compare_exchange_weak_explicit(atomic* obj, T* expc, T desr, - memory_order s, memory_order f) noexcept; - -template - bool - atomic_compare_exchange_strong_explicit(volatile atomic* obj, - T* expc, T desr, - memory_order s, memory_order f) noexcept; - -template - bool - atomic_compare_exchange_strong_explicit(atomic* obj, T* expc, - T desr, - memory_order s, memory_order f) noexcept; - -template - Integral - atomic_fetch_add(volatile atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_add(atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_add_explicit(volatile atomic* obj, Integral op, - memory_order m) noexcept; -template - Integral - atomic_fetch_add_explicit(atomic* obj, Integral op, - memory_order m) noexcept; -template - Integral - atomic_fetch_sub(volatile atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_sub(atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_sub_explicit(volatile atomic* obj, Integral op, - memory_order m) noexcept; -template - Integral - atomic_fetch_sub_explicit(atomic* obj, Integral op, - memory_order m) noexcept; -template - Integral - atomic_fetch_and(volatile atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_and(atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_and_explicit(volatile atomic* obj, Integral op, - memory_order m) noexcept; -template - Integral - atomic_fetch_and_explicit(atomic* obj, Integral op, - memory_order m) noexcept; -template - Integral - atomic_fetch_or(volatile atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_or(atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_or_explicit(volatile atomic* obj, Integral op, - memory_order m) noexcept; -template - Integral - atomic_fetch_or_explicit(atomic* obj, Integral op, - memory_order m) noexcept; -template - Integral - atomic_fetch_xor(volatile atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_xor(atomic* obj, Integral op) noexcept; - -template - Integral - atomic_fetch_xor_explicit(volatile atomic* obj, Integral op, - memory_order m) noexcept; -template - Integral - atomic_fetch_xor_explicit(atomic* obj, Integral op, - memory_order m) noexcept; - -template - T* - atomic_fetch_add(volatile atomic* obj, ptrdiff_t op) noexcept; - -template - T* - atomic_fetch_add(atomic* obj, ptrdiff_t op) noexcept; - -template - T* - atomic_fetch_add_explicit(volatile atomic* obj, ptrdiff_t op, - memory_order m) noexcept; -template - T* - atomic_fetch_add_explicit(atomic* obj, ptrdiff_t op, memory_order m) noexcept; - -template - T* - atomic_fetch_sub(volatile atomic* obj, ptrdiff_t op) noexcept; - -template - T* - atomic_fetch_sub(atomic* obj, ptrdiff_t op) noexcept; - -template - T* - atomic_fetch_sub_explicit(volatile atomic* obj, ptrdiff_t op, - memory_order m) noexcept; -template - T* - atomic_fetch_sub_explicit(atomic* obj, ptrdiff_t op, memory_order m) noexcept; - -// Atomics for standard typedef types - -typedef atomic atomic_bool; -typedef atomic atomic_char; -typedef atomic atomic_schar; -typedef atomic atomic_uchar; -typedef atomic atomic_short; -typedef atomic atomic_ushort; -typedef atomic atomic_int; -typedef atomic atomic_uint; -typedef atomic atomic_long; -typedef atomic atomic_ulong; -typedef atomic atomic_llong; -typedef atomic atomic_ullong; -typedef atomic atomic_char16_t; -typedef atomic atomic_char32_t; -typedef atomic atomic_wchar_t; - -typedef atomic atomic_int_least8_t; -typedef atomic atomic_uint_least8_t; -typedef atomic atomic_int_least16_t; -typedef atomic atomic_uint_least16_t; -typedef atomic atomic_int_least32_t; -typedef atomic atomic_uint_least32_t; -typedef atomic atomic_int_least64_t; -typedef atomic atomic_uint_least64_t; - -typedef atomic atomic_int_fast8_t; -typedef atomic atomic_uint_fast8_t; -typedef atomic atomic_int_fast16_t; -typedef atomic atomic_uint_fast16_t; -typedef atomic atomic_int_fast32_t; -typedef atomic atomic_uint_fast32_t; -typedef atomic atomic_int_fast64_t; -typedef atomic atomic_uint_fast64_t; - -typedef atomic atomic_intptr_t; -typedef atomic atomic_uintptr_t; -typedef atomic atomic_size_t; -typedef atomic atomic_ptrdiff_t; -typedef atomic atomic_intmax_t; -typedef atomic atomic_uintmax_t; - -// fences - -void atomic_thread_fence(memory_order m) noexcept; -void atomic_signal_fence(memory_order m) noexcept; - -} // std - -*/ - -#include <__config> -#include -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#ifdef _LIBCPP_HAS_NO_THREADS -#error is not supported on this single threaded system -#else // !_LIBCPP_HAS_NO_THREADS - -_LIBCPP_BEGIN_NAMESPACE_STD - -#if !__has_feature(cxx_atomic) && _GNUC_VER < 407 -#error is not implemented -#else - -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; - -#if _GNUC_VER >= 407 -namespace __gcc_atomic { -template -struct __gcc_atomic_t { - __gcc_atomic_t() _NOEXCEPT {} - explicit __gcc_atomic_t(_Tp value) _NOEXCEPT : __a_value(value) {} - _Tp __a_value; -}; -#define _Atomic(x) __gcc_atomic::__gcc_atomic_t - -template _Tp __create(); - -template -typename enable_if__a_value = __create<_Td>()), char>::type - __test_atomic_assignable(int); -template -__two __test_atomic_assignable(...); - -template -struct __can_assign { - static const bool value = - sizeof(__test_atomic_assignable<_Tp, _Td>(1)) == sizeof(char); -}; - -static inline constexpr int __to_gcc_order(memory_order __order) { - // Avoid switch statement to make this a constexpr. - return __order == memory_order_relaxed ? __ATOMIC_RELAXED: - (__order == memory_order_acquire ? __ATOMIC_ACQUIRE: - (__order == memory_order_release ? __ATOMIC_RELEASE: - (__order == memory_order_seq_cst ? __ATOMIC_SEQ_CST: - (__order == memory_order_acq_rel ? __ATOMIC_ACQ_REL: - __ATOMIC_CONSUME)))); -} - -static inline constexpr int __to_gcc_failure_order(memory_order __order) { - // Avoid switch statement to make this a constexpr. - return __order == memory_order_relaxed ? __ATOMIC_RELAXED: - (__order == memory_order_acquire ? __ATOMIC_ACQUIRE: - (__order == memory_order_release ? __ATOMIC_RELAXED: - (__order == memory_order_seq_cst ? __ATOMIC_SEQ_CST: - (__order == memory_order_acq_rel ? __ATOMIC_ACQUIRE: - __ATOMIC_CONSUME)))); -} - -} // namespace __gcc_atomic - -template -static inline -typename enable_if< - __gcc_atomic::__can_assign::value>::type -__c11_atomic_init(volatile _Atomic(_Tp)* __a, _Tp __val) { - __a->__a_value = __val; -} - -template -static inline -typename enable_if< - !__gcc_atomic::__can_assign::value && - __gcc_atomic::__can_assign< _Atomic(_Tp)*, _Tp>::value>::type -__c11_atomic_init(volatile _Atomic(_Tp)* __a, _Tp __val) { - // [atomics.types.generic]p1 guarantees _Tp is trivially copyable. Because - // the default operator= in an object is not volatile, a byte-by-byte copy - // is required. - volatile char* to = reinterpret_cast(&__a->__a_value); - volatile char* end = to + sizeof(_Tp); - char* from = reinterpret_cast(&__val); - while (to != end) { - *to++ = *from++; - } -} - -template -static inline void __c11_atomic_init(_Atomic(_Tp)* __a, _Tp __val) { - __a->__a_value = __val; -} - -static inline void __c11_atomic_thread_fence(memory_order __order) { - __atomic_thread_fence(__gcc_atomic::__to_gcc_order(__order)); -} - -static inline void __c11_atomic_signal_fence(memory_order __order) { - __atomic_signal_fence(__gcc_atomic::__to_gcc_order(__order)); -} - -static inline bool __c11_atomic_is_lock_free(size_t __size) { - return __atomic_is_lock_free(__size, 0); -} - -template -static inline void __c11_atomic_store(volatile _Atomic(_Tp)* __a, _Tp __val, - memory_order __order) { - return __atomic_store(&__a->__a_value, &__val, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline void __c11_atomic_store(_Atomic(_Tp)* __a, _Tp __val, - memory_order __order) { - __atomic_store(&__a->__a_value, &__val, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_load(volatile _Atomic(_Tp)* __a, - memory_order __order) { - _Tp __ret; - __atomic_load(&__a->__a_value, &__ret, - __gcc_atomic::__to_gcc_order(__order)); - return __ret; -} - -template -static inline _Tp __c11_atomic_load(_Atomic(_Tp)* __a, memory_order __order) { - _Tp __ret; - __atomic_load(&__a->__a_value, &__ret, - __gcc_atomic::__to_gcc_order(__order)); - return __ret; -} - -template -static inline _Tp __c11_atomic_exchange(volatile _Atomic(_Tp)* __a, - _Tp __value, memory_order __order) { - _Tp __ret; - __atomic_exchange(&__a->__a_value, &__value, &__ret, - __gcc_atomic::__to_gcc_order(__order)); - return __ret; -} - -template -static inline _Tp __c11_atomic_exchange(_Atomic(_Tp)* __a, _Tp __value, - memory_order __order) { - _Tp __ret; - __atomic_exchange(&__a->__a_value, &__value, &__ret, - __gcc_atomic::__to_gcc_order(__order)); - return __ret; -} - -template -static inline bool __c11_atomic_compare_exchange_strong( - volatile _Atomic(_Tp)* __a, _Tp* __expected, _Tp __value, - memory_order __success, memory_order __failure) { - return __atomic_compare_exchange(&__a->__a_value, __expected, &__value, - false, - __gcc_atomic::__to_gcc_order(__success), - __gcc_atomic::__to_gcc_failure_order(__failure)); -} - -template -static inline bool __c11_atomic_compare_exchange_strong( - _Atomic(_Tp)* __a, _Tp* __expected, _Tp __value, memory_order __success, - memory_order __failure) { - return __atomic_compare_exchange(&__a->__a_value, __expected, &__value, - false, - __gcc_atomic::__to_gcc_order(__success), - __gcc_atomic::__to_gcc_failure_order(__failure)); -} - -template -static inline bool __c11_atomic_compare_exchange_weak( - volatile _Atomic(_Tp)* __a, _Tp* __expected, _Tp __value, - memory_order __success, memory_order __failure) { - return __atomic_compare_exchange(&__a->__a_value, __expected, &__value, - true, - __gcc_atomic::__to_gcc_order(__success), - __gcc_atomic::__to_gcc_failure_order(__failure)); -} - -template -static inline bool __c11_atomic_compare_exchange_weak( - _Atomic(_Tp)* __a, _Tp* __expected, _Tp __value, memory_order __success, - memory_order __failure) { - return __atomic_compare_exchange(&__a->__a_value, __expected, &__value, - true, - __gcc_atomic::__to_gcc_order(__success), - __gcc_atomic::__to_gcc_failure_order(__failure)); -} - -template -struct __skip_amt { enum {value = 1}; }; - -template -struct __skip_amt<_Tp*> { enum {value = sizeof(_Tp)}; }; - -// FIXME: Haven't figured out what the spec says about using arrays with -// atomic_fetch_add. Force a failure rather than creating bad behavior. -template -struct __skip_amt<_Tp[]> { }; -template -struct __skip_amt<_Tp[n]> { }; - -template -static inline _Tp __c11_atomic_fetch_add(volatile _Atomic(_Tp)* __a, - _Td __delta, memory_order __order) { - return __atomic_fetch_add(&__a->__a_value, __delta * __skip_amt<_Tp>::value, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_fetch_add(_Atomic(_Tp)* __a, _Td __delta, - memory_order __order) { - return __atomic_fetch_add(&__a->__a_value, __delta * __skip_amt<_Tp>::value, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_fetch_sub(volatile _Atomic(_Tp)* __a, - _Td __delta, memory_order __order) { - return __atomic_fetch_sub(&__a->__a_value, __delta * __skip_amt<_Tp>::value, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_fetch_sub(_Atomic(_Tp)* __a, _Td __delta, - memory_order __order) { - return __atomic_fetch_sub(&__a->__a_value, __delta * __skip_amt<_Tp>::value, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_fetch_and(volatile _Atomic(_Tp)* __a, - _Tp __pattern, memory_order __order) { - return __atomic_fetch_and(&__a->__a_value, __pattern, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_fetch_and(_Atomic(_Tp)* __a, - _Tp __pattern, memory_order __order) { - return __atomic_fetch_and(&__a->__a_value, __pattern, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_fetch_or(volatile _Atomic(_Tp)* __a, - _Tp __pattern, memory_order __order) { - return __atomic_fetch_or(&__a->__a_value, __pattern, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_fetch_or(_Atomic(_Tp)* __a, _Tp __pattern, - memory_order __order) { - return __atomic_fetch_or(&__a->__a_value, __pattern, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_fetch_xor(volatile _Atomic(_Tp)* __a, - _Tp __pattern, memory_order __order) { - return __atomic_fetch_xor(&__a->__a_value, __pattern, - __gcc_atomic::__to_gcc_order(__order)); -} - -template -static inline _Tp __c11_atomic_fetch_xor(_Atomic(_Tp)* __a, _Tp __pattern, - memory_order __order) { - return __atomic_fetch_xor(&__a->__a_value, __pattern, - __gcc_atomic::__to_gcc_order(__order)); -} -#endif // _GNUC_VER >= 407 - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -kill_dependency(_Tp __y) _NOEXCEPT -{ - return __y; -} - -// general atomic - -template ::value && !is_same<_Tp, bool>::value> -struct __atomic_base // false -{ - mutable _Atomic(_Tp) __a_; - - _LIBCPP_INLINE_VISIBILITY - bool is_lock_free() const volatile _NOEXCEPT - {return __c11_atomic_is_lock_free(sizeof(_Tp));} - _LIBCPP_INLINE_VISIBILITY - bool is_lock_free() const _NOEXCEPT - {return __c11_atomic_is_lock_free(sizeof(_Tp));} - _LIBCPP_INLINE_VISIBILITY - void store(_Tp __d, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {__c11_atomic_store(&__a_, __d, __m);} - _LIBCPP_INLINE_VISIBILITY - void store(_Tp __d, memory_order __m = memory_order_seq_cst) _NOEXCEPT - {__c11_atomic_store(&__a_, __d, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp load(memory_order __m = memory_order_seq_cst) const volatile _NOEXCEPT - {return __c11_atomic_load(&__a_, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp load(memory_order __m = memory_order_seq_cst) const _NOEXCEPT - {return __c11_atomic_load(&__a_, __m);} - _LIBCPP_INLINE_VISIBILITY - operator _Tp() const volatile _NOEXCEPT {return load();} - _LIBCPP_INLINE_VISIBILITY - operator _Tp() const _NOEXCEPT {return load();} - _LIBCPP_INLINE_VISIBILITY - _Tp exchange(_Tp __d, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {return __c11_atomic_exchange(&__a_, __d, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp exchange(_Tp __d, memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_exchange(&__a_, __d, __m);} - _LIBCPP_INLINE_VISIBILITY - bool compare_exchange_weak(_Tp& __e, _Tp __d, - memory_order __s, memory_order __f) volatile _NOEXCEPT - {return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __s, __f);} - _LIBCPP_INLINE_VISIBILITY - bool compare_exchange_weak(_Tp& __e, _Tp __d, - memory_order __s, memory_order __f) _NOEXCEPT - {return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __s, __f);} - _LIBCPP_INLINE_VISIBILITY - bool compare_exchange_strong(_Tp& __e, _Tp __d, - memory_order __s, memory_order __f) volatile _NOEXCEPT - {return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __s, __f);} - _LIBCPP_INLINE_VISIBILITY - bool compare_exchange_strong(_Tp& __e, _Tp __d, - memory_order __s, memory_order __f) _NOEXCEPT - {return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __s, __f);} - _LIBCPP_INLINE_VISIBILITY - bool compare_exchange_weak(_Tp& __e, _Tp __d, - memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __m, __m);} - _LIBCPP_INLINE_VISIBILITY - bool compare_exchange_weak(_Tp& __e, _Tp __d, - memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __m, __m);} - _LIBCPP_INLINE_VISIBILITY - bool compare_exchange_strong(_Tp& __e, _Tp __d, - memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __m, __m);} - _LIBCPP_INLINE_VISIBILITY - bool compare_exchange_strong(_Tp& __e, _Tp __d, - memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __m, __m);} - - _LIBCPP_INLINE_VISIBILITY -#ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS - __atomic_base() _NOEXCEPT = default; -#else - __atomic_base() _NOEXCEPT : __a_() {} -#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS - - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR __atomic_base(_Tp __d) _NOEXCEPT : __a_(__d) {} -#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS - __atomic_base(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) = delete; - __atomic_base& operator=(const __atomic_base&) volatile = delete; -#else // _LIBCPP_HAS_NO_DELETED_FUNCTIONS -private: - __atomic_base(const __atomic_base&); - __atomic_base& operator=(const __atomic_base&); - __atomic_base& operator=(const __atomic_base&) volatile; -#endif // _LIBCPP_HAS_NO_DELETED_FUNCTIONS -}; - -// atomic - -template -struct __atomic_base<_Tp, true> - : public __atomic_base<_Tp, false> -{ - typedef __atomic_base<_Tp, false> __base; - _LIBCPP_INLINE_VISIBILITY - __atomic_base() _NOEXCEPT _LIBCPP_DEFAULT - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR __atomic_base(_Tp __d) _NOEXCEPT : __base(__d) {} - - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {return __c11_atomic_fetch_add(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_fetch_add(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {return __c11_atomic_fetch_sub(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_fetch_sub(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {return __c11_atomic_fetch_and(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_fetch_and(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {return __c11_atomic_fetch_or(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_fetch_or(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {return __c11_atomic_fetch_xor(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_fetch_xor(&this->__a_, __op, __m);} - - _LIBCPP_INLINE_VISIBILITY - _Tp operator++(int) volatile _NOEXCEPT {return fetch_add(_Tp(1));} - _LIBCPP_INLINE_VISIBILITY - _Tp operator++(int) _NOEXCEPT {return fetch_add(_Tp(1));} - _LIBCPP_INLINE_VISIBILITY - _Tp operator--(int) volatile _NOEXCEPT {return fetch_sub(_Tp(1));} - _LIBCPP_INLINE_VISIBILITY - _Tp operator--(int) _NOEXCEPT {return fetch_sub(_Tp(1));} - _LIBCPP_INLINE_VISIBILITY - _Tp operator++() volatile _NOEXCEPT {return fetch_add(_Tp(1)) + _Tp(1);} - _LIBCPP_INLINE_VISIBILITY - _Tp operator++() _NOEXCEPT {return fetch_add(_Tp(1)) + _Tp(1);} - _LIBCPP_INLINE_VISIBILITY - _Tp operator--() volatile _NOEXCEPT {return fetch_sub(_Tp(1)) - _Tp(1);} - _LIBCPP_INLINE_VISIBILITY - _Tp operator--() _NOEXCEPT {return fetch_sub(_Tp(1)) - _Tp(1);} - _LIBCPP_INLINE_VISIBILITY - _Tp operator+=(_Tp __op) volatile _NOEXCEPT {return fetch_add(__op) + __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator+=(_Tp __op) _NOEXCEPT {return fetch_add(__op) + __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator-=(_Tp __op) volatile _NOEXCEPT {return fetch_sub(__op) - __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator-=(_Tp __op) _NOEXCEPT {return fetch_sub(__op) - __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator&=(_Tp __op) volatile _NOEXCEPT {return fetch_and(__op) & __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator&=(_Tp __op) _NOEXCEPT {return fetch_and(__op) & __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator|=(_Tp __op) volatile _NOEXCEPT {return fetch_or(__op) | __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator|=(_Tp __op) _NOEXCEPT {return fetch_or(__op) | __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator^=(_Tp __op) volatile _NOEXCEPT {return fetch_xor(__op) ^ __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator^=(_Tp __op) _NOEXCEPT {return fetch_xor(__op) ^ __op;} -}; - -// atomic - -template -struct atomic - : public __atomic_base<_Tp> -{ - typedef __atomic_base<_Tp> __base; - _LIBCPP_INLINE_VISIBILITY - atomic() _NOEXCEPT _LIBCPP_DEFAULT - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR atomic(_Tp __d) _NOEXCEPT : __base(__d) {} - - _LIBCPP_INLINE_VISIBILITY - _Tp operator=(_Tp __d) volatile _NOEXCEPT - {__base::store(__d); return __d;} - _LIBCPP_INLINE_VISIBILITY - _Tp operator=(_Tp __d) _NOEXCEPT - {__base::store(__d); return __d;} -}; - -// atomic - -template -struct atomic<_Tp*> - : public __atomic_base<_Tp*> -{ - typedef __atomic_base<_Tp*> __base; - _LIBCPP_INLINE_VISIBILITY - atomic() _NOEXCEPT _LIBCPP_DEFAULT - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_CONSTEXPR atomic(_Tp* __d) _NOEXCEPT : __base(__d) {} - - _LIBCPP_INLINE_VISIBILITY - _Tp* operator=(_Tp* __d) volatile _NOEXCEPT - {__base::store(__d); return __d;} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator=(_Tp* __d) _NOEXCEPT - {__base::store(__d); return __d;} - - _LIBCPP_INLINE_VISIBILITY - _Tp* fetch_add(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) - volatile _NOEXCEPT - {return __c11_atomic_fetch_add(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp* fetch_add(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_fetch_add(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp* fetch_sub(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) - volatile _NOEXCEPT - {return __c11_atomic_fetch_sub(&this->__a_, __op, __m);} - _LIBCPP_INLINE_VISIBILITY - _Tp* fetch_sub(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_fetch_sub(&this->__a_, __op, __m);} - - _LIBCPP_INLINE_VISIBILITY - _Tp* operator++(int) volatile _NOEXCEPT {return fetch_add(1);} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator++(int) _NOEXCEPT {return fetch_add(1);} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator--(int) volatile _NOEXCEPT {return fetch_sub(1);} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator--(int) _NOEXCEPT {return fetch_sub(1);} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator++() volatile _NOEXCEPT {return fetch_add(1) + 1;} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator++() _NOEXCEPT {return fetch_add(1) + 1;} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator--() volatile _NOEXCEPT {return fetch_sub(1) - 1;} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator--() _NOEXCEPT {return fetch_sub(1) - 1;} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator+=(ptrdiff_t __op) volatile _NOEXCEPT {return fetch_add(__op) + __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator+=(ptrdiff_t __op) _NOEXCEPT {return fetch_add(__op) + __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator-=(ptrdiff_t __op) volatile _NOEXCEPT {return fetch_sub(__op) - __op;} - _LIBCPP_INLINE_VISIBILITY - _Tp* operator-=(ptrdiff_t __op) _NOEXCEPT {return fetch_sub(__op) - __op;} -}; - -// atomic_is_lock_free - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT -{ - return __o->is_lock_free(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT -{ - return __o->is_lock_free(); -} - -// atomic_init - -template -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_init(volatile atomic<_Tp>* __o, _Tp __d) _NOEXCEPT -{ - __c11_atomic_init(&__o->__a_, __d); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_init(atomic<_Tp>* __o, _Tp __d) _NOEXCEPT -{ - __c11_atomic_init(&__o->__a_, __d); -} - -// atomic_store - -template -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_store(volatile atomic<_Tp>* __o, _Tp __d) _NOEXCEPT -{ - __o->store(__d); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_store(atomic<_Tp>* __o, _Tp __d) _NOEXCEPT -{ - __o->store(__d); -} - -// atomic_store_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_store_explicit(volatile atomic<_Tp>* __o, _Tp __d, memory_order __m) _NOEXCEPT -{ - __o->store(__d, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_store_explicit(atomic<_Tp>* __o, _Tp __d, memory_order __m) _NOEXCEPT -{ - __o->store(__d, __m); -} - -// atomic_load - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -atomic_load(const volatile atomic<_Tp>* __o) _NOEXCEPT -{ - return __o->load(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -atomic_load(const atomic<_Tp>* __o) _NOEXCEPT -{ - return __o->load(); -} - -// atomic_load_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -atomic_load_explicit(const volatile atomic<_Tp>* __o, memory_order __m) _NOEXCEPT -{ - return __o->load(__m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -atomic_load_explicit(const atomic<_Tp>* __o, memory_order __m) _NOEXCEPT -{ - return __o->load(__m); -} - -// atomic_exchange - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -atomic_exchange(volatile atomic<_Tp>* __o, _Tp __d) _NOEXCEPT -{ - return __o->exchange(__d); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -atomic_exchange(atomic<_Tp>* __o, _Tp __d) _NOEXCEPT -{ - return __o->exchange(__d); -} - -// atomic_exchange_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -atomic_exchange_explicit(volatile atomic<_Tp>* __o, _Tp __d, memory_order __m) _NOEXCEPT -{ - return __o->exchange(__d, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -atomic_exchange_explicit(atomic<_Tp>* __o, _Tp __d, memory_order __m) _NOEXCEPT -{ - return __o->exchange(__d, __m); -} - -// atomic_compare_exchange_weak - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_compare_exchange_weak(volatile atomic<_Tp>* __o, _Tp* __e, _Tp __d) _NOEXCEPT -{ - return __o->compare_exchange_weak(*__e, __d); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_compare_exchange_weak(atomic<_Tp>* __o, _Tp* __e, _Tp __d) _NOEXCEPT -{ - return __o->compare_exchange_weak(*__e, __d); -} - -// atomic_compare_exchange_strong - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_compare_exchange_strong(volatile atomic<_Tp>* __o, _Tp* __e, _Tp __d) _NOEXCEPT -{ - return __o->compare_exchange_strong(*__e, __d); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_compare_exchange_strong(atomic<_Tp>* __o, _Tp* __e, _Tp __d) _NOEXCEPT -{ - return __o->compare_exchange_strong(*__e, __d); -} - -// atomic_compare_exchange_weak_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_compare_exchange_weak_explicit(volatile atomic<_Tp>* __o, _Tp* __e, - _Tp __d, - memory_order __s, memory_order __f) _NOEXCEPT -{ - return __o->compare_exchange_weak(*__e, __d, __s, __f); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_compare_exchange_weak_explicit(atomic<_Tp>* __o, _Tp* __e, _Tp __d, - memory_order __s, memory_order __f) _NOEXCEPT -{ - return __o->compare_exchange_weak(*__e, __d, __s, __f); -} - -// atomic_compare_exchange_strong_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_compare_exchange_strong_explicit(volatile atomic<_Tp>* __o, - _Tp* __e, _Tp __d, - memory_order __s, memory_order __f) _NOEXCEPT -{ - return __o->compare_exchange_strong(*__e, __d, __s, __f); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_compare_exchange_strong_explicit(atomic<_Tp>* __o, _Tp* __e, - _Tp __d, - memory_order __s, memory_order __f) _NOEXCEPT -{ - return __o->compare_exchange_strong(*__e, __d, __s, __f); -} - -// atomic_fetch_add - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_add(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_add(__op); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_add(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_add(__op); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp* -atomic_fetch_add(volatile atomic<_Tp*>* __o, ptrdiff_t __op) _NOEXCEPT -{ - return __o->fetch_add(__op); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp* -atomic_fetch_add(atomic<_Tp*>* __o, ptrdiff_t __op) _NOEXCEPT -{ - return __o->fetch_add(__op); -} - -// atomic_fetch_add_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_add_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_add(__op, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_add_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_add(__op, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp* -atomic_fetch_add_explicit(volatile atomic<_Tp*>* __o, ptrdiff_t __op, - memory_order __m) _NOEXCEPT -{ - return __o->fetch_add(__op, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp* -atomic_fetch_add_explicit(atomic<_Tp*>* __o, ptrdiff_t __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_add(__op, __m); -} - -// atomic_fetch_sub - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_sub(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_sub(__op); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_sub(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_sub(__op); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp* -atomic_fetch_sub(volatile atomic<_Tp*>* __o, ptrdiff_t __op) _NOEXCEPT -{ - return __o->fetch_sub(__op); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp* -atomic_fetch_sub(atomic<_Tp*>* __o, ptrdiff_t __op) _NOEXCEPT -{ - return __o->fetch_sub(__op); -} - -// atomic_fetch_sub_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_sub_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_sub(__op, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_sub_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_sub(__op, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp* -atomic_fetch_sub_explicit(volatile atomic<_Tp*>* __o, ptrdiff_t __op, - memory_order __m) _NOEXCEPT -{ - return __o->fetch_sub(__op, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp* -atomic_fetch_sub_explicit(atomic<_Tp*>* __o, ptrdiff_t __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_sub(__op, __m); -} - -// atomic_fetch_and - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_and(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_and(__op); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_and(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_and(__op); -} - -// atomic_fetch_and_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_and_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_and(__op, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_and_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_and(__op, __m); -} - -// atomic_fetch_or - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_or(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_or(__op); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_or(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_or(__op); -} - -// atomic_fetch_or_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_or_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_or(__op, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_or_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_or(__op, __m); -} - -// atomic_fetch_xor - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_xor(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_xor(__op); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_xor(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT -{ - return __o->fetch_xor(__op); -} - -// atomic_fetch_xor_explicit - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_xor_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_xor(__op, __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value && !is_same<_Tp, bool>::value, - _Tp ->::type -atomic_fetch_xor_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _NOEXCEPT -{ - return __o->fetch_xor(__op, __m); -} - -// flag type and operations - -typedef struct atomic_flag -{ - _Atomic(bool) __a_; - - _LIBCPP_INLINE_VISIBILITY - bool test_and_set(memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {return __c11_atomic_exchange(&__a_, true, __m);} - _LIBCPP_INLINE_VISIBILITY - bool test_and_set(memory_order __m = memory_order_seq_cst) _NOEXCEPT - {return __c11_atomic_exchange(&__a_, true, __m);} - _LIBCPP_INLINE_VISIBILITY - void clear(memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT - {__c11_atomic_store(&__a_, false, __m);} - _LIBCPP_INLINE_VISIBILITY - void clear(memory_order __m = memory_order_seq_cst) _NOEXCEPT - {__c11_atomic_store(&__a_, false, __m);} - - _LIBCPP_INLINE_VISIBILITY -#ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS - atomic_flag() _NOEXCEPT = default; -#else - atomic_flag() _NOEXCEPT : __a_() {} -#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS - - _LIBCPP_INLINE_VISIBILITY - atomic_flag(bool __b) _NOEXCEPT : __a_(__b) {} - -#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS - atomic_flag(const atomic_flag&) = delete; - atomic_flag& operator=(const atomic_flag&) = delete; - atomic_flag& operator=(const atomic_flag&) volatile = delete; -#else // _LIBCPP_HAS_NO_DELETED_FUNCTIONS -private: - atomic_flag(const atomic_flag&); - atomic_flag& operator=(const atomic_flag&); - atomic_flag& operator=(const atomic_flag&) volatile; -#endif // _LIBCPP_HAS_NO_DELETED_FUNCTIONS -} atomic_flag; - -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_flag_test_and_set(volatile atomic_flag* __o) _NOEXCEPT -{ - return __o->test_and_set(); -} - -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_flag_test_and_set(atomic_flag* __o) _NOEXCEPT -{ - return __o->test_and_set(); -} - -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_flag_test_and_set_explicit(volatile atomic_flag* __o, memory_order __m) _NOEXCEPT -{ - return __o->test_and_set(__m); -} - -inline _LIBCPP_INLINE_VISIBILITY -bool -atomic_flag_test_and_set_explicit(atomic_flag* __o, memory_order __m) _NOEXCEPT -{ - return __o->test_and_set(__m); -} - -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_flag_clear(volatile atomic_flag* __o) _NOEXCEPT -{ - __o->clear(); -} - -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_flag_clear(atomic_flag* __o) _NOEXCEPT -{ - __o->clear(); -} - -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_flag_clear_explicit(volatile atomic_flag* __o, memory_order __m) _NOEXCEPT -{ - __o->clear(__m); -} - -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_flag_clear_explicit(atomic_flag* __o, memory_order __m) _NOEXCEPT -{ - __o->clear(__m); -} - -// fences - -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_thread_fence(memory_order __m) _NOEXCEPT -{ - __c11_atomic_thread_fence(__m); -} - -inline _LIBCPP_INLINE_VISIBILITY -void -atomic_signal_fence(memory_order __m) _NOEXCEPT -{ - __c11_atomic_signal_fence(__m); -} - -// Atomics for standard typedef types - -typedef atomic atomic_bool; -typedef atomic atomic_char; -typedef atomic atomic_schar; -typedef atomic atomic_uchar; -typedef atomic atomic_short; -typedef atomic atomic_ushort; -typedef atomic atomic_int; -typedef atomic atomic_uint; -typedef atomic atomic_long; -typedef atomic atomic_ulong; -typedef atomic atomic_llong; -typedef atomic atomic_ullong; -typedef atomic atomic_char16_t; -typedef atomic atomic_char32_t; -typedef atomic atomic_wchar_t; - -typedef atomic atomic_int_least8_t; -typedef atomic atomic_uint_least8_t; -typedef atomic atomic_int_least16_t; -typedef atomic atomic_uint_least16_t; -typedef atomic atomic_int_least32_t; -typedef atomic atomic_uint_least32_t; -typedef atomic atomic_int_least64_t; -typedef atomic atomic_uint_least64_t; - -typedef atomic atomic_int_fast8_t; -typedef atomic atomic_uint_fast8_t; -typedef atomic atomic_int_fast16_t; -typedef atomic atomic_uint_fast16_t; -typedef atomic atomic_int_fast32_t; -typedef atomic atomic_uint_fast32_t; -typedef atomic atomic_int_fast64_t; -typedef atomic atomic_uint_fast64_t; - -typedef atomic atomic_intptr_t; -typedef atomic atomic_uintptr_t; -typedef atomic atomic_size_t; -typedef atomic atomic_ptrdiff_t; -typedef atomic atomic_intmax_t; -typedef atomic atomic_uintmax_t; - -#define ATOMIC_FLAG_INIT {false} -#define ATOMIC_VAR_INIT(__v) {__v} - -// lock-free property - -#define ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE -#define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_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_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_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 // !__has_feature(cxx_atomic) - -_LIBCPP_END_NAMESPACE_STD - -#endif // !_LIBCPP_HAS_NO_THREADS - -#endif // _LIBCPP_ATOMIC diff --git a/libcxx/include/bitset b/libcxx/include/bitset deleted file mode 100644 index 8c278cc72..000000000 --- a/libcxx/include/bitset +++ /dev/null @@ -1,1081 +0,0 @@ -// -*- C++ -*- -//===---------------------------- bitset ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_BITSET -#define _LIBCPP_BITSET - -/* - bitset synopsis - -namespace std -{ - -namespace std { - -template -class bitset -{ -public: - // bit reference: - class reference - { - friend class bitset; - reference() noexcept; - public: - ~reference() noexcept; - reference& operator=(bool x) noexcept; // for b[i] = x; - reference& operator=(const reference&) noexcept; // for b[i] = b[j]; - bool operator~() const noexcept; // flips the bit - operator bool() const noexcept; // for x = b[i]; - reference& flip() noexcept; // for b[i].flip(); - }; - - // 23.3.5.1 constructors: - constexpr bitset() noexcept; - constexpr bitset(unsigned long long val) noexcept; - template - explicit bitset(const charT* str, - typename basic_string::size_type n = basic_string::npos, - charT zero = charT('0'), charT one = charT('1')); - template - explicit bitset(const basic_string& str, - typename basic_string::size_type pos = 0, - typename basic_string::size_type n = - basic_string::npos, - charT zero = charT('0'), charT one = charT('1')); - - // 23.3.5.2 bitset operations: - bitset& operator&=(const bitset& rhs) noexcept; - bitset& operator|=(const bitset& rhs) noexcept; - bitset& operator^=(const bitset& rhs) noexcept; - bitset& operator<<=(size_t pos) noexcept; - bitset& operator>>=(size_t pos) noexcept; - bitset& set() noexcept; - bitset& set(size_t pos, bool val = true); - bitset& reset() noexcept; - bitset& reset(size_t pos); - bitset operator~() const noexcept; - bitset& flip() noexcept; - bitset& flip(size_t pos); - - // element access: - constexpr bool operator[](size_t pos) const; // for b[i]; - reference operator[](size_t pos); // for b[i]; - unsigned long to_ulong() const; - unsigned long long to_ullong() const; - template - basic_string to_string(charT zero = charT('0'), charT one = charT('1')) const; - template - basic_string > to_string(charT zero = charT('0'), charT one = charT('1')) const; - template - basic_string, allocator > to_string(charT zero = charT('0'), charT one = charT('1')) const; - basic_string, allocator > to_string(char zero = '0', char one = '1') const; - size_t count() const noexcept; - constexpr size_t size() const noexcept; - bool operator==(const bitset& rhs) const noexcept; - bool operator!=(const bitset& rhs) const noexcept; - bool test(size_t pos) const; - bool all() const noexcept; - bool any() const noexcept; - bool none() const noexcept; - bitset operator<<(size_t pos) const noexcept; - bitset operator>>(size_t pos) const noexcept; -}; - -// 23.3.5.3 bitset operators: -template -bitset operator&(const bitset&, const bitset&) noexcept; - -template -bitset operator|(const bitset&, const bitset&) noexcept; - -template -bitset operator^(const bitset&, const bitset&) noexcept; - -template -basic_istream& -operator>>(basic_istream& is, bitset& x); - -template -basic_ostream& -operator<<(basic_ostream& os, const bitset& x); - -template struct hash>; - -} // std - -*/ - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#include <__config> -#include <__bit_reference> -#include -#include -#include -#include -#include -#include <__functional_base> -#if defined(_LIBCPP_NO_EXCEPTIONS) - #include -#endif - -#include <__undef_min_max> - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -class __bitset; - -template -struct __has_storage_type<__bitset<_N_words, _Size> > -{ - static const bool value = true; -}; - -template -class __bitset -{ -public: - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef size_type __storage_type; -protected: - typedef __bitset __self; - typedef __storage_type* __storage_pointer; - typedef const __storage_type* __const_storage_pointer; - static const unsigned __bits_per_word = static_cast(sizeof(__storage_type) * CHAR_BIT); - - friend class __bit_reference<__bitset>; - friend class __bit_const_reference<__bitset>; - friend class __bit_iterator<__bitset, false>; - friend class __bit_iterator<__bitset, true>; - friend struct __bit_array<__bitset>; - - __storage_type __first_[_N_words]; - - typedef __bit_reference<__bitset> reference; - typedef __bit_const_reference<__bitset> const_reference; - typedef __bit_iterator<__bitset, false> iterator; - typedef __bit_iterator<__bitset, true> const_iterator; - - _LIBCPP_CONSTEXPR __bitset() _NOEXCEPT; - explicit _LIBCPP_CONSTEXPR __bitset(unsigned long long __v) _NOEXCEPT; - - _LIBCPP_INLINE_VISIBILITY reference __make_ref(size_t __pos) _NOEXCEPT - {return reference(__first_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR const_reference __make_ref(size_t __pos) const _NOEXCEPT - {return const_reference(__first_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);} - _LIBCPP_INLINE_VISIBILITY iterator __make_iter(size_t __pos) _NOEXCEPT - {return iterator(__first_ + __pos / __bits_per_word, __pos % __bits_per_word);} - _LIBCPP_INLINE_VISIBILITY const_iterator __make_iter(size_t __pos) const _NOEXCEPT - {return const_iterator(__first_ + __pos / __bits_per_word, __pos % __bits_per_word);} - - void operator&=(const __bitset& __v) _NOEXCEPT; - void operator|=(const __bitset& __v) _NOEXCEPT; - void operator^=(const __bitset& __v) _NOEXCEPT; - - void flip() _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY unsigned long to_ulong() const - {return to_ulong(integral_constant());} - _LIBCPP_INLINE_VISIBILITY unsigned long long to_ullong() const - {return to_ullong(integral_constant());} - - bool all() const _NOEXCEPT; - bool any() const _NOEXCEPT; - size_t __hash_code() const _NOEXCEPT; -private: -#ifdef _LIBCPP_HAS_NO_CONSTEXPR - void __init(unsigned long long __v, false_type) _NOEXCEPT; - void __init(unsigned long long __v, true_type) _NOEXCEPT; -#endif // _LIBCPP_HAS_NO_CONSTEXPR - unsigned long to_ulong(false_type) const; - unsigned long to_ulong(true_type) const; - unsigned long long to_ullong(false_type) const; - unsigned long long to_ullong(true_type) const; - unsigned long long to_ullong(true_type, false_type) const; - unsigned long long to_ullong(true_type, true_type) const; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -__bitset<_N_words, _Size>::__bitset() _NOEXCEPT -#ifndef _LIBCPP_HAS_NO_CONSTEXPR - : __first_{0} -#endif -{ -#ifdef _LIBCPP_HAS_NO_CONSTEXPR - _VSTD::fill_n(__first_, _N_words, __storage_type(0)); -#endif -} - -#ifdef _LIBCPP_HAS_NO_CONSTEXPR - -template -void -__bitset<_N_words, _Size>::__init(unsigned long long __v, false_type) _NOEXCEPT -{ - __storage_type __t[sizeof(unsigned long long) / sizeof(__storage_type)]; - for (size_t __i = 0; __i < sizeof(__t)/sizeof(__t[0]); ++__i, __v >>= __bits_per_word) - __t[__i] = static_cast<__storage_type>(__v); - _VSTD::copy(__t, __t + sizeof(__t)/sizeof(__t[0]), __first_); - _VSTD::fill(__first_ + sizeof(__t)/sizeof(__t[0]), __first_ + sizeof(__first_)/sizeof(__first_[0]), - __storage_type(0)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__bitset<_N_words, _Size>::__init(unsigned long long __v, true_type) _NOEXCEPT -{ - __first_[0] = __v; - _VSTD::fill(__first_ + 1, __first_ + sizeof(__first_)/sizeof(__first_[0]), __storage_type(0)); -} - -#endif // _LIBCPP_HAS_NO_CONSTEXPR - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -__bitset<_N_words, _Size>::__bitset(unsigned long long __v) _NOEXCEPT -#ifndef _LIBCPP_HAS_NO_CONSTEXPR -#if __SIZEOF_SIZE_T__ == 8 - : __first_{__v} -#elif __SIZEOF_SIZE_T__ == 4 - : __first_{__v, __v >> __bits_per_word} -#else -#error This constructor has not been ported to this platform -#endif -#endif -{ -#ifdef _LIBCPP_HAS_NO_CONSTEXPR - __init(__v, integral_constant()); -#endif -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__bitset<_N_words, _Size>::operator&=(const __bitset& __v) _NOEXCEPT -{ - for (size_type __i = 0; __i < _N_words; ++__i) - __first_[__i] &= __v.__first_[__i]; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__bitset<_N_words, _Size>::operator|=(const __bitset& __v) _NOEXCEPT -{ - for (size_type __i = 0; __i < _N_words; ++__i) - __first_[__i] |= __v.__first_[__i]; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__bitset<_N_words, _Size>::operator^=(const __bitset& __v) _NOEXCEPT -{ - for (size_type __i = 0; __i < _N_words; ++__i) - __first_[__i] ^= __v.__first_[__i]; -} - -template -void -__bitset<_N_words, _Size>::flip() _NOEXCEPT -{ - // do middle whole words - size_type __n = _Size; - __storage_pointer __p = __first_; - for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word) - *__p = ~*__p; - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - __storage_type __b = *__p & __m; - *__p &= ~__m; - *__p |= ~__b & __m; - } -} - -template -unsigned long -__bitset<_N_words, _Size>::to_ulong(false_type) const -{ - const_iterator __e = __make_iter(_Size); - const_iterator __i = _VSTD::find(__make_iter(sizeof(unsigned long) * CHAR_BIT), __e, true); - if (__i != __e) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw overflow_error("bitset to_ulong overflow error"); -#else - assert(!"bitset to_ulong overflow error"); -#endif - return __first_[0]; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -unsigned long -__bitset<_N_words, _Size>::to_ulong(true_type) const -{ - return __first_[0]; -} - -template -unsigned long long -__bitset<_N_words, _Size>::to_ullong(false_type) const -{ - const_iterator __e = __make_iter(_Size); - const_iterator __i = _VSTD::find(__make_iter(sizeof(unsigned long long) * CHAR_BIT), __e, true); - if (__i != __e) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw overflow_error("bitset to_ullong overflow error"); -#else - assert(!"bitset to_ullong overflow error"); -#endif - return to_ullong(true_type()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -unsigned long long -__bitset<_N_words, _Size>::to_ullong(true_type) const -{ - return to_ullong(true_type(), integral_constant()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -unsigned long long -__bitset<_N_words, _Size>::to_ullong(true_type, false_type) const -{ - return __first_[0]; -} - -template -unsigned long long -__bitset<_N_words, _Size>::to_ullong(true_type, true_type) const -{ - unsigned long long __r = __first_[0]; - for (std::size_t __i = 1; __i < sizeof(unsigned long long) / sizeof(__storage_type); ++__i) - __r |= static_cast(__first_[__i]) << (sizeof(__storage_type) * CHAR_BIT); - return __r; -} - -template -bool -__bitset<_N_words, _Size>::all() const _NOEXCEPT -{ - // do middle whole words - size_type __n = _Size; - __const_storage_pointer __p = __first_; - for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word) - if (~*__p) - return false; - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - if (~*__p & __m) - return false; - } - return true; -} - -template -bool -__bitset<_N_words, _Size>::any() const _NOEXCEPT -{ - // do middle whole words - size_type __n = _Size; - __const_storage_pointer __p = __first_; - for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word) - if (*__p) - return true; - // do last partial word - if (__n > 0) - { - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); - if (*__p & __m) - return true; - } - return false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -size_t -__bitset<_N_words, _Size>::__hash_code() const _NOEXCEPT -{ - size_t __h = 0; - for (size_type __i = 0; __i < _N_words; ++__i) - __h ^= __first_[__i]; - return __h; -} - -template -class __bitset<1, _Size> -{ -public: - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef size_type __storage_type; -protected: - typedef __bitset __self; - typedef __storage_type* __storage_pointer; - typedef const __storage_type* __const_storage_pointer; - static const unsigned __bits_per_word = static_cast(sizeof(__storage_type) * CHAR_BIT); - - friend class __bit_reference<__bitset>; - friend class __bit_const_reference<__bitset>; - friend class __bit_iterator<__bitset, false>; - friend class __bit_iterator<__bitset, true>; - friend struct __bit_array<__bitset>; - - __storage_type __first_; - - typedef __bit_reference<__bitset> reference; - typedef __bit_const_reference<__bitset> const_reference; - typedef __bit_iterator<__bitset, false> iterator; - typedef __bit_iterator<__bitset, true> const_iterator; - - _LIBCPP_CONSTEXPR __bitset() _NOEXCEPT; - explicit _LIBCPP_CONSTEXPR __bitset(unsigned long long __v) _NOEXCEPT; - - _LIBCPP_INLINE_VISIBILITY reference __make_ref(size_t __pos) _NOEXCEPT - {return reference(&__first_, __storage_type(1) << __pos);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR const_reference __make_ref(size_t __pos) const _NOEXCEPT - {return const_reference(&__first_, __storage_type(1) << __pos);} - _LIBCPP_INLINE_VISIBILITY iterator __make_iter(size_t __pos) _NOEXCEPT - {return iterator(&__first_ + __pos / __bits_per_word, __pos % __bits_per_word);} - _LIBCPP_INLINE_VISIBILITY const_iterator __make_iter(size_t __pos) const _NOEXCEPT - {return const_iterator(&__first_ + __pos / __bits_per_word, __pos % __bits_per_word);} - - void operator&=(const __bitset& __v) _NOEXCEPT; - void operator|=(const __bitset& __v) _NOEXCEPT; - void operator^=(const __bitset& __v) _NOEXCEPT; - - void flip() _NOEXCEPT; - - unsigned long to_ulong() const; - unsigned long long to_ullong() const; - - bool all() const _NOEXCEPT; - bool any() const _NOEXCEPT; - - size_t __hash_code() const _NOEXCEPT; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -__bitset<1, _Size>::__bitset() _NOEXCEPT - : __first_(0) -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -__bitset<1, _Size>::__bitset(unsigned long long __v) _NOEXCEPT - : __first_(static_cast<__storage_type>(__v)) -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__bitset<1, _Size>::operator&=(const __bitset& __v) _NOEXCEPT -{ - __first_ &= __v.__first_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__bitset<1, _Size>::operator|=(const __bitset& __v) _NOEXCEPT -{ - __first_ |= __v.__first_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__bitset<1, _Size>::operator^=(const __bitset& __v) _NOEXCEPT -{ - __first_ ^= __v.__first_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__bitset<1, _Size>::flip() _NOEXCEPT -{ - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - _Size); - __first_ = ~__first_; - __first_ &= __m; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -unsigned long -__bitset<1, _Size>::to_ulong() const -{ - return __first_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -unsigned long long -__bitset<1, _Size>::to_ullong() const -{ - return __first_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -__bitset<1, _Size>::all() const _NOEXCEPT -{ - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - _Size); - return !(~__first_ & __m); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -__bitset<1, _Size>::any() const _NOEXCEPT -{ - __storage_type __m = ~__storage_type(0) >> (__bits_per_word - _Size); - return __first_ & __m; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -size_t -__bitset<1, _Size>::__hash_code() const _NOEXCEPT -{ - return __first_; -} - -template <> -class __bitset<0, 0> -{ -public: - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef size_type __storage_type; -protected: - typedef __bitset __self; - typedef __storage_type* __storage_pointer; - typedef const __storage_type* __const_storage_pointer; - static const unsigned __bits_per_word = static_cast(sizeof(__storage_type) * CHAR_BIT); - - friend class __bit_reference<__bitset>; - friend class __bit_const_reference<__bitset>; - friend class __bit_iterator<__bitset, false>; - friend class __bit_iterator<__bitset, true>; - friend struct __bit_array<__bitset>; - - typedef __bit_reference<__bitset> reference; - typedef __bit_const_reference<__bitset> const_reference; - typedef __bit_iterator<__bitset, false> iterator; - typedef __bit_iterator<__bitset, true> const_iterator; - - _LIBCPP_CONSTEXPR __bitset() _NOEXCEPT; - explicit _LIBCPP_CONSTEXPR __bitset(unsigned long long) _NOEXCEPT; - - _LIBCPP_INLINE_VISIBILITY reference __make_ref(size_t) _NOEXCEPT - {return reference(0, 1);} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR const_reference __make_ref(size_t) const _NOEXCEPT - {return const_reference(0, 1);} - _LIBCPP_INLINE_VISIBILITY iterator __make_iter(size_t) _NOEXCEPT - {return iterator(0, 0);} - _LIBCPP_INLINE_VISIBILITY const_iterator __make_iter(size_t) const _NOEXCEPT - {return const_iterator(0, 0);} - - _LIBCPP_INLINE_VISIBILITY void operator&=(const __bitset&) _NOEXCEPT {} - _LIBCPP_INLINE_VISIBILITY void operator|=(const __bitset&) _NOEXCEPT {} - _LIBCPP_INLINE_VISIBILITY void operator^=(const __bitset&) _NOEXCEPT {} - - _LIBCPP_INLINE_VISIBILITY void flip() _NOEXCEPT {} - - _LIBCPP_INLINE_VISIBILITY unsigned long to_ulong() const {return 0;} - _LIBCPP_INLINE_VISIBILITY unsigned long long to_ullong() const {return 0;} - - _LIBCPP_INLINE_VISIBILITY bool all() const _NOEXCEPT {return true;} - _LIBCPP_INLINE_VISIBILITY bool any() const _NOEXCEPT {return false;} - - _LIBCPP_INLINE_VISIBILITY size_t __hash_code() const _NOEXCEPT {return 0;} -}; - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -__bitset<0, 0>::__bitset() _NOEXCEPT -{ -} - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -__bitset<0, 0>::__bitset(unsigned long long) _NOEXCEPT -{ -} - -template class _LIBCPP_TYPE_VIS_ONLY bitset; -template struct _LIBCPP_TYPE_VIS_ONLY hash >; - -template -class _LIBCPP_TYPE_VIS_ONLY bitset - : private __bitset<_Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1, _Size> -{ -public: - static const unsigned __n_words = _Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1; - typedef __bitset<__n_words, _Size> base; - -public: - typedef typename base::reference reference; - typedef typename base::const_reference const_reference; - - // 23.3.5.1 constructors: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR bitset() _NOEXCEPT {} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - bitset(unsigned long long __v) _NOEXCEPT : base(__v) {} - template - explicit bitset(const _CharT* __str, - typename basic_string<_CharT>::size_type __n = basic_string<_CharT>::npos, - _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')); - template - explicit bitset(const basic_string<_CharT,_Traits,_Allocator>& __str, - typename basic_string<_CharT,_Traits,_Allocator>::size_type __pos = 0, - typename basic_string<_CharT,_Traits,_Allocator>::size_type __n = - (basic_string<_CharT,_Traits,_Allocator>::npos), - _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')); - - // 23.3.5.2 bitset operations: - bitset& operator&=(const bitset& __rhs) _NOEXCEPT; - bitset& operator|=(const bitset& __rhs) _NOEXCEPT; - bitset& operator^=(const bitset& __rhs) _NOEXCEPT; - bitset& operator<<=(size_t __pos) _NOEXCEPT; - bitset& operator>>=(size_t __pos) _NOEXCEPT; - bitset& set() _NOEXCEPT; - bitset& set(size_t __pos, bool __val = true); - bitset& reset() _NOEXCEPT; - bitset& reset(size_t __pos); - bitset operator~() const _NOEXCEPT; - bitset& flip() _NOEXCEPT; - bitset& flip(size_t __pos); - - // element access: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - const_reference operator[](size_t __p) const {return base::__make_ref(__p);} - _LIBCPP_INLINE_VISIBILITY reference operator[](size_t __p) {return base::__make_ref(__p);} - unsigned long to_ulong() const; - unsigned long long to_ullong() const; - template - basic_string<_CharT, _Traits, _Allocator> to_string(_CharT __zero = _CharT('0'), - _CharT __one = _CharT('1')) const; - template - basic_string<_CharT, _Traits, allocator<_CharT> > to_string(_CharT __zero = _CharT('0'), - _CharT __one = _CharT('1')) const; - template - basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > to_string(_CharT __zero = _CharT('0'), - _CharT __one = _CharT('1')) const; - basic_string, allocator > to_string(char __zero = '0', - char __one = '1') const; - size_t count() const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR size_t size() const _NOEXCEPT {return _Size;} - bool operator==(const bitset& __rhs) const _NOEXCEPT; - bool operator!=(const bitset& __rhs) const _NOEXCEPT; - bool test(size_t __pos) const; - bool all() const _NOEXCEPT; - bool any() const _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY bool none() const _NOEXCEPT {return !any();} - bitset operator<<(size_t __pos) const _NOEXCEPT; - bitset operator>>(size_t __pos) const _NOEXCEPT; - -private: - - _LIBCPP_INLINE_VISIBILITY - size_t __hash_code() const _NOEXCEPT {return base::__hash_code();} - - friend struct hash; -}; - -template -template -bitset<_Size>::bitset(const _CharT* __str, - typename basic_string<_CharT>::size_type __n, - _CharT __zero, _CharT __one) -{ - size_t __rlen = _VSTD::min(__n, char_traits<_CharT>::length(__str)); - for (size_t __i = 0; __i < __rlen; ++__i) - if (__str[__i] != __zero && __str[__i] != __one) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw invalid_argument("bitset string ctor has invalid argument"); -#else - assert(!"bitset string ctor has invalid argument"); -#endif - size_t _Mp = _VSTD::min(__rlen, _Size); - size_t __i = 0; - for (; __i < _Mp; ++__i) - { - _CharT __c = __str[_Mp - 1 - __i]; - if (__c == __zero) - (*this)[__i] = false; - else - (*this)[__i] = true; - } - _VSTD::fill(base::__make_iter(__i), base::__make_iter(_Size), false); -} - -template -template -bitset<_Size>::bitset(const basic_string<_CharT,_Traits,_Allocator>& __str, - typename basic_string<_CharT,_Traits,_Allocator>::size_type __pos, - typename basic_string<_CharT,_Traits,_Allocator>::size_type __n, - _CharT __zero, _CharT __one) -{ - if (__pos > __str.size()) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("bitset string pos out of range"); -#else - assert(!"bitset string pos out of range"); -#endif - size_t __rlen = _VSTD::min(__n, __str.size() - __pos); - for (size_t __i = __pos; __i < __pos + __rlen; ++__i) - if (!_Traits::eq(__str[__i], __zero) && !_Traits::eq(__str[__i], __one)) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw invalid_argument("bitset string ctor has invalid argument"); -#else - assert(!"bitset string ctor has invalid argument"); -#endif - size_t _Mp = _VSTD::min(__rlen, _Size); - size_t __i = 0; - for (; __i < _Mp; ++__i) - { - _CharT __c = __str[__pos + _Mp - 1 - __i]; - if (_Traits::eq(__c, __zero)) - (*this)[__i] = false; - else - (*this)[__i] = true; - } - _VSTD::fill(base::__make_iter(__i), base::__make_iter(_Size), false); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size>& -bitset<_Size>::operator&=(const bitset& __rhs) _NOEXCEPT -{ - base::operator&=(__rhs); - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size>& -bitset<_Size>::operator|=(const bitset& __rhs) _NOEXCEPT -{ - base::operator|=(__rhs); - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size>& -bitset<_Size>::operator^=(const bitset& __rhs) _NOEXCEPT -{ - base::operator^=(__rhs); - return *this; -} - -template -bitset<_Size>& -bitset<_Size>::operator<<=(size_t __pos) _NOEXCEPT -{ - __pos = _VSTD::min(__pos, _Size); - _VSTD::copy_backward(base::__make_iter(0), base::__make_iter(_Size - __pos), base::__make_iter(_Size)); - _VSTD::fill_n(base::__make_iter(0), __pos, false); - return *this; -} - -template -bitset<_Size>& -bitset<_Size>::operator>>=(size_t __pos) _NOEXCEPT -{ - __pos = _VSTD::min(__pos, _Size); - _VSTD::copy(base::__make_iter(__pos), base::__make_iter(_Size), base::__make_iter(0)); - _VSTD::fill_n(base::__make_iter(_Size - __pos), __pos, false); - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size>& -bitset<_Size>::set() _NOEXCEPT -{ - _VSTD::fill_n(base::__make_iter(0), _Size, true); - return *this; -} - -template -bitset<_Size>& -bitset<_Size>::set(size_t __pos, bool __val) -{ - if (__pos >= _Size) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("bitset set argument out of range"); -#else - assert(!"bitset set argument out of range"); -#endif - (*this)[__pos] = __val; - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size>& -bitset<_Size>::reset() _NOEXCEPT -{ - _VSTD::fill_n(base::__make_iter(0), _Size, false); - return *this; -} - -template -bitset<_Size>& -bitset<_Size>::reset(size_t __pos) -{ - if (__pos >= _Size) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("bitset reset argument out of range"); -#else - assert(!"bitset reset argument out of range"); -#endif - (*this)[__pos] = false; - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size> -bitset<_Size>::operator~() const _NOEXCEPT -{ - bitset __x(*this); - __x.flip(); - return __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size>& -bitset<_Size>::flip() _NOEXCEPT -{ - base::flip(); - return *this; -} - -template -bitset<_Size>& -bitset<_Size>::flip(size_t __pos) -{ - if (__pos >= _Size) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("bitset flip argument out of range"); -#else - assert(!"bitset flip argument out of range"); -#endif - reference r = base::__make_ref(__pos); - r = ~r; - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -unsigned long -bitset<_Size>::to_ulong() const -{ - return base::to_ulong(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -unsigned long long -bitset<_Size>::to_ullong() const -{ - return base::to_ullong(); -} - -template -template -basic_string<_CharT, _Traits, _Allocator> -bitset<_Size>::to_string(_CharT __zero, _CharT __one) const -{ - basic_string<_CharT, _Traits, _Allocator> __r(_Size, __zero); - for (size_t __i = 0; __i < _Size; ++__i) - { - if ((*this)[__i]) - __r[_Size - 1 - __i] = __one; - } - return __r; -} - -template -template -inline _LIBCPP_INLINE_VISIBILITY -basic_string<_CharT, _Traits, allocator<_CharT> > -bitset<_Size>::to_string(_CharT __zero, _CharT __one) const -{ - return to_string<_CharT, _Traits, allocator<_CharT> >(__zero, __one); -} - -template -template -inline _LIBCPP_INLINE_VISIBILITY -basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > -bitset<_Size>::to_string(_CharT __zero, _CharT __one) const -{ - return to_string<_CharT, char_traits<_CharT>, allocator<_CharT> >(__zero, __one); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_string, allocator > -bitset<_Size>::to_string(char __zero, char __one) const -{ - return to_string, allocator >(__zero, __one); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -size_t -bitset<_Size>::count() const _NOEXCEPT -{ - return static_cast(_VSTD::count(base::__make_iter(0), base::__make_iter(_Size), true)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -bitset<_Size>::operator==(const bitset& __rhs) const _NOEXCEPT -{ - return _VSTD::equal(base::__make_iter(0), base::__make_iter(_Size), __rhs.__make_iter(0)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -bitset<_Size>::operator!=(const bitset& __rhs) const _NOEXCEPT -{ - return !(*this == __rhs); -} - -template -bool -bitset<_Size>::test(size_t __pos) const -{ - if (__pos >= _Size) -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("bitset test argument out of range"); -#else - assert(!"bitset test argument out of range"); -#endif - return (*this)[__pos]; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -bitset<_Size>::all() const _NOEXCEPT -{ - return base::all(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -bitset<_Size>::any() const _NOEXCEPT -{ - return base::any(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size> -bitset<_Size>::operator<<(size_t __pos) const _NOEXCEPT -{ - bitset __r = *this; - __r <<= __pos; - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size> -bitset<_Size>::operator>>(size_t __pos) const _NOEXCEPT -{ - bitset __r = *this; - __r >>= __pos; - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size> -operator&(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT -{ - bitset<_Size> __r = __x; - __r &= __y; - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size> -operator|(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT -{ - bitset<_Size> __r = __x; - __r |= __y; - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bitset<_Size> -operator^(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT -{ - bitset<_Size> __r = __x; - __r ^= __y; - return __r; -} - -template -struct _LIBCPP_TYPE_VIS_ONLY hash > - : public unary_function, size_t> -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(const bitset<_Size>& __bs) const _NOEXCEPT - {return __bs.__hash_code();} -}; - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Size>& __x); - -template -basic_ostream<_CharT, _Traits>& -operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x); - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_BITSET diff --git a/libcxx/include/cassert b/libcxx/include/cassert deleted file mode 100644 index 377599064..000000000 --- a/libcxx/include/cassert +++ /dev/null @@ -1,25 +0,0 @@ -// -*- C++ -*- -//===-------------------------- cassert -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -/* - cassert synopsis - -Macros: - - assert - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif diff --git a/libcxx/include/ccomplex b/libcxx/include/ccomplex deleted file mode 100644 index 6ed116445..000000000 --- a/libcxx/include/ccomplex +++ /dev/null @@ -1,29 +0,0 @@ -// -*- C++ -*- -//===--------------------------- ccomplex ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CCOMPLEX -#define _LIBCPP_CCOMPLEX - -/* - ccomplex synopsis - -#include - -*/ - -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -// hh 080623 Created - -#endif // _LIBCPP_CCOMPLEX diff --git a/libcxx/include/cctype b/libcxx/include/cctype deleted file mode 100644 index 26c740f73..000000000 --- a/libcxx/include/cctype +++ /dev/null @@ -1,165 +0,0 @@ -// -*- C++ -*- -//===---------------------------- cctype ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CCTYPE -#define _LIBCPP_CCTYPE - -/* - cctype synopsis - -namespace std -{ - -int isalnum(int c); -int isalpha(int c); -int isblank(int c); // C99 -int iscntrl(int c); -int isdigit(int c); -int isgraph(int c); -int islower(int c); -int isprint(int c); -int ispunct(int c); -int isspace(int c); -int isupper(int c); -int isxdigit(int c); -int tolower(int c); -int toupper(int c); - -} // std -*/ - -#include <__config> -#include -#if defined(_LIBCPP_MSVCRT) -#include "support/win32/support.h" -#include "support/win32/locale_win32.h" -#endif // _LIBCPP_MSVCRT - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -#ifdef isalnum -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isalnum(int __c) {return isalnum(__c);} -#undef isalnum -inline _LIBCPP_INLINE_VISIBILITY int isalnum(int __c) {return __libcpp_isalnum(__c);} -#else // isalnum -using ::isalnum; -#endif // isalnum - -#ifdef isalpha -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isalpha(int __c) {return isalpha(__c);} -#undef isalpha -inline _LIBCPP_INLINE_VISIBILITY int isalpha(int __c) {return __libcpp_isalpha(__c);} -#else // isalpha -using ::isalpha; -#endif // isalpha - -#ifdef isblank -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isblank(int __c) {return isblank(__c);} -#undef isblank -inline _LIBCPP_INLINE_VISIBILITY int isblank(int __c) {return __libcpp_isblank(__c);} -#else // isblank -using ::isblank; -#endif // isblank - -#ifdef iscntrl -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iscntrl(int __c) {return iscntrl(__c);} -#undef iscntrl -inline _LIBCPP_INLINE_VISIBILITY int iscntrl(int __c) {return __libcpp_iscntrl(__c);} -#else // iscntrl -using ::iscntrl; -#endif // iscntrl - -#ifdef isdigit -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isdigit(int __c) {return isdigit(__c);} -#undef isdigit -inline _LIBCPP_INLINE_VISIBILITY int isdigit(int __c) {return __libcpp_isdigit(__c);} -#else // isdigit -using ::isdigit; -#endif // isdigit - -#ifdef isgraph -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isgraph(int __c) {return isgraph(__c);} -#undef isgraph -inline _LIBCPP_INLINE_VISIBILITY int isgraph(int __c) {return __libcpp_isgraph(__c);} -#else // isgraph -using ::isgraph; -#endif // isgraph - -#ifdef islower -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_islower(int __c) {return islower(__c);} -#undef islower -inline _LIBCPP_INLINE_VISIBILITY int islower(int __c) {return __libcpp_islower(__c);} -#else // islower -using ::islower; -#endif // islower - -#ifdef isprint -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isprint(int __c) {return isprint(__c);} -#undef isprint -inline _LIBCPP_INLINE_VISIBILITY int isprint(int __c) {return __libcpp_isprint(__c);} -#else // isprint -using ::isprint; -#endif // isprint - -#ifdef ispunct -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_ispunct(int __c) {return ispunct(__c);} -#undef ispunct -inline _LIBCPP_INLINE_VISIBILITY int ispunct(int __c) {return __libcpp_ispunct(__c);} -#else // ispunct -using ::ispunct; -#endif // ispunct - -#ifdef isspace -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isspace(int __c) {return isspace(__c);} -#undef isspace -inline _LIBCPP_INLINE_VISIBILITY int isspace(int __c) {return __libcpp_isspace(__c);} -#else // isspace -using ::isspace; -#endif // isspace - -#ifdef isupper -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isupper(int __c) {return isupper(__c);} -#undef isupper -inline _LIBCPP_INLINE_VISIBILITY int isupper(int __c) {return __libcpp_isupper(__c);} -#else // isupper -using ::isupper; -#endif // isupper - -#ifdef isxdigit -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_isxdigit(int __c) {return isxdigit(__c);} -#undef isxdigit -inline _LIBCPP_INLINE_VISIBILITY int isxdigit(int __c) {return __libcpp_isxdigit(__c);} -#else // isxdigit -using ::isxdigit; -#endif // isxdigit - -#ifdef tolower -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_tolower(int __c) {return tolower(__c);} -#undef tolower -inline _LIBCPP_INLINE_VISIBILITY int tolower(int __c) {return __libcpp_tolower(__c);} -#else // tolower -using ::tolower; -#endif // tolower - -#ifdef toupper -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_toupper(int __c) {return toupper(__c);} -#undef toupper -inline _LIBCPP_INLINE_VISIBILITY int toupper(int __c) {return __libcpp_toupper(__c);} -#else // toupper -using ::toupper; -#endif // toupper - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CCTYPE diff --git a/libcxx/include/cerrno b/libcxx/include/cerrno deleted file mode 100644 index 9804e4e3d..000000000 --- a/libcxx/include/cerrno +++ /dev/null @@ -1,393 +0,0 @@ -// -*- C++ -*- -//===-------------------------- cerrno ------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CERRNO -#define _LIBCPP_CERRNO - -/* - cerrno synopsis - -Macros: - - EDOM - EILSEQ // C99 - ERANGE - errno - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) - -#ifdef ELAST - -const int __elast1 = ELAST+1; -const int __elast2 = ELAST+2; - -#else - -const int __elast1 = 104; -const int __elast2 = 105; - -#endif - -#ifdef ENOTRECOVERABLE - -#define EOWNERDEAD __elast1 - -#ifdef ELAST -#undef ELAST -#define ELAST EOWNERDEAD -#endif - -#elif defined(EOWNERDEAD) - -#define ENOTRECOVERABLE __elast1 -#ifdef ELAST -#undef ELAST -#define ELAST ENOTRECOVERABLE -#endif - -#else // defined(EOWNERDEAD) - -#define EOWNERDEAD __elast1 -#define ENOTRECOVERABLE __elast2 -#ifdef ELAST -#undef ELAST -#define ELAST ENOTRECOVERABLE -#endif - -#endif // defined(EOWNERDEAD) - -#endif // !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) - -// supply errno values likely to be missing, particularly on Windows - -#ifndef EAFNOSUPPORT -#define EAFNOSUPPORT 9901 -#endif - -#ifndef EADDRINUSE -#define EADDRINUSE 9902 -#endif - -#ifndef EADDRNOTAVAIL -#define EADDRNOTAVAIL 9903 -#endif - -#ifndef EISCONN -#define EISCONN 9904 -#endif - -#ifndef EBADMSG -#define EBADMSG 9905 -#endif - -#ifndef ECONNABORTED -#define ECONNABORTED 9906 -#endif - -#ifndef EALREADY -#define EALREADY 9907 -#endif - -#ifndef ECONNREFUSED -#define ECONNREFUSED 9908 -#endif - -#ifndef ECONNRESET -#define ECONNRESET 9909 -#endif - -#ifndef EDESTADDRREQ -#define EDESTADDRREQ 9910 -#endif - -#ifndef EHOSTUNREACH -#define EHOSTUNREACH 9911 -#endif - -#ifndef EIDRM -#define EIDRM 9912 -#endif - -#ifndef EMSGSIZE -#define EMSGSIZE 9913 -#endif - -#ifndef ENETDOWN -#define ENETDOWN 9914 -#endif - -#ifndef ENETRESET -#define ENETRESET 9915 -#endif - -#ifndef ENETUNREACH -#define ENETUNREACH 9916 -#endif - -#ifndef ENOBUFS -#define ENOBUFS 9917 -#endif - -#ifndef ENOLINK -#define ENOLINK 9918 -#endif - -#ifndef ENODATA -#define ENODATA 9919 -#endif - -#ifndef ENOMSG -#define ENOMSG 9920 -#endif - -#ifndef ENOPROTOOPT -#define ENOPROTOOPT 9921 -#endif - -#ifndef ENOSR -#define ENOSR 9922 -#endif - -#ifndef ENOTSOCK -#define ENOTSOCK 9923 -#endif - -#ifndef ENOSTR -#define ENOSTR 9924 -#endif - -#ifndef ENOTCONN -#define ENOTCONN 9925 -#endif - -#ifndef ENOTSUP -#define ENOTSUP 9926 -#endif - -#ifndef ECANCELED -#define ECANCELED 9927 -#endif - -#ifndef EINPROGRESS -#define EINPROGRESS 9928 -#endif - -#ifndef EOPNOTSUPP -#define EOPNOTSUPP 9929 -#endif - -#ifndef EWOULDBLOCK -#define EWOULDBLOCK 9930 -#endif - -#ifndef EOWNERDEAD -#define EOWNERDEAD 9931 -#endif - -#ifndef EPROTO -#define EPROTO 9932 -#endif - -#ifndef EPROTONOSUPPORT -#define EPROTONOSUPPORT 9933 -#endif - -#ifndef ENOTRECOVERABLE -#define ENOTRECOVERABLE 9934 -#endif - -#ifndef ETIME -#define ETIME 9935 -#endif - -#ifndef ETXTBSY -#define ETXTBSY 9936 -#endif - -#ifndef ETIMEDOUT -#define ETIMEDOUT 9938 -#endif - -#ifndef ELOOP -#define ELOOP 9939 -#endif - -#ifndef EOVERFLOW -#define EOVERFLOW 9940 -#endif - -#ifndef EPROTOTYPE -#define EPROTOTYPE 9941 -#endif - -#ifndef ENOSYS -#define ENOSYS 9942 -#endif - -#ifndef EINVAL -#define EINVAL 9943 -#endif - -#ifndef ERANGE -#define ERANGE 9944 -#endif - -#ifndef EILSEQ -#define EILSEQ 9945 -#endif - -// Windows Mobile doesn't appear to define these: - -#ifndef E2BIG -#define E2BIG 9946 -#endif - -#ifndef EDOM -#define EDOM 9947 -#endif - -#ifndef EFAULT -#define EFAULT 9948 -#endif - -#ifndef EBADF -#define EBADF 9949 -#endif - -#ifndef EPIPE -#define EPIPE 9950 -#endif - -#ifndef EXDEV -#define EXDEV 9951 -#endif - -#ifndef EBUSY -#define EBUSY 9952 -#endif - -#ifndef ENOTEMPTY -#define ENOTEMPTY 9953 -#endif - -#ifndef ENOEXEC -#define ENOEXEC 9954 -#endif - -#ifndef EEXIST -#define EEXIST 9955 -#endif - -#ifndef EFBIG -#define EFBIG 9956 -#endif - -#ifndef ENAMETOOLONG -#define ENAMETOOLONG 9957 -#endif - -#ifndef ENOTTY -#define ENOTTY 9958 -#endif - -#ifndef EINTR -#define EINTR 9959 -#endif - -#ifndef ESPIPE -#define ESPIPE 9960 -#endif - -#ifndef EIO -#define EIO 9961 -#endif - -#ifndef EISDIR -#define EISDIR 9962 -#endif - -#ifndef ECHILD -#define ECHILD 9963 -#endif - -#ifndef ENOLCK -#define ENOLCK 9964 -#endif - -#ifndef ENOSPC -#define ENOSPC 9965 -#endif - -#ifndef ENXIO -#define ENXIO 9966 -#endif - -#ifndef ENODEV -#define ENODEV 9967 -#endif - -#ifndef ENOENT -#define ENOENT 9968 -#endif - -#ifndef ESRCH -#define ESRCH 9969 -#endif - -#ifndef ENOTDIR -#define ENOTDIR 9970 -#endif - -#ifndef ENOMEM -#define ENOMEM 9971 -#endif - -#ifndef EPERM -#define EPERM 9972 -#endif - -#ifndef EACCES -#define EACCES 9973 -#endif - -#ifndef EROFS -#define EROFS 9974 -#endif - -#ifndef EDEADLK -#define EDEADLK 9975 -#endif - -#ifndef EAGAIN -#define EAGAIN 9976 -#endif - -#ifndef ENFILE -#define ENFILE 9977 -#endif - -#ifndef EMFILE -#define EMFILE 9978 -#endif - -#ifndef EMLINK -#define EMLINK 9979 -#endif - -#endif // _LIBCPP_CERRNO diff --git a/libcxx/include/cfenv b/libcxx/include/cfenv deleted file mode 100644 index dd7db37f8..000000000 --- a/libcxx/include/cfenv +++ /dev/null @@ -1,82 +0,0 @@ -// -*- C++ -*- -//===---------------------------- cctype ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CFENV -#define _LIBCPP_CFENV - -/* - cfenv synopsis - -This entire header is C99 / C++0X - -Macros: - - FE_DIVBYZERO - FE_INEXACT - FE_INVALID - FE_OVERFLOW - FE_UNDERFLOW - FE_ALL_EXCEPT - FE_DOWNWARD - FE_TONEAREST - FE_TOWARDZERO - FE_UPWARD - FE_DFL_ENV - -namespace std -{ - -Types: - - fenv_t - fexcept_t - -int feclearexcept(int excepts); -int fegetexceptflag(fexcept_t* flagp, int excepts); -int feraiseexcept(int excepts); -int fesetexceptflag(const fexcept_t* flagp, int excepts); -int fetestexcept(int excepts); -int fegetround(); -int fesetround(int round); -int fegetenv(fenv_t* envp); -int feholdexcept(fenv_t* envp); -int fesetenv(const fenv_t* envp); -int feupdateenv(const fenv_t* envp); - -} // std -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::fenv_t; -using ::fexcept_t; - -using ::feclearexcept; -using ::fegetexceptflag; -using ::feraiseexcept; -using ::fesetexceptflag; -using ::fetestexcept; -using ::fegetround; -using ::fesetround; -using ::fegetenv; -using ::feholdexcept; -using ::fesetenv; -using ::feupdateenv; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CFENV diff --git a/libcxx/include/cfloat b/libcxx/include/cfloat deleted file mode 100644 index 5fa56550f..000000000 --- a/libcxx/include/cfloat +++ /dev/null @@ -1,78 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cfloat -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CFLOAT -#define _LIBCPP_CFLOAT - -/* - cfloat synopsis - -Macros: - - FLT_ROUNDS - FLT_EVAL_METHOD // C99 - FLT_RADIX - - FLT_MANT_DIG - DBL_MANT_DIG - LDBL_MANT_DIG - - DECIMAL_DIG // C99 - - FLT_DIG - DBL_DIG - LDBL_DIG - - FLT_MIN_EXP - DBL_MIN_EXP - LDBL_MIN_EXP - - FLT_MIN_10_EXP - DBL_MIN_10_EXP - LDBL_MIN_10_EXP - - FLT_MAX_EXP - DBL_MAX_EXP - LDBL_MAX_EXP - - FLT_MAX_10_EXP - DBL_MAX_10_EXP - LDBL_MAX_10_EXP - - FLT_MAX - DBL_MAX - LDBL_MAX - - FLT_EPSILON - DBL_EPSILON - LDBL_EPSILON - - FLT_MIN - DBL_MIN - LDBL_MIN - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#ifndef FLT_EVAL_METHOD -#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ -#endif - -#ifndef DECIMAL_DIG -#define DECIMAL_DIG __DECIMAL_DIG__ -#endif - -#endif // _LIBCPP_CFLOAT diff --git a/libcxx/include/chrono b/libcxx/include/chrono deleted file mode 100644 index 9229234ce..000000000 --- a/libcxx/include/chrono +++ /dev/null @@ -1,1031 +0,0 @@ -// -*- C++ -*- -//===---------------------------- chrono ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CHRONO -#define _LIBCPP_CHRONO - -/* - chrono synopsis - -namespace std -{ -namespace chrono -{ - -template -constexpr -ToDuration -duration_cast(const duration& fd); - -template struct treat_as_floating_point : is_floating_point {}; - -template -struct duration_values -{ -public: - static constexpr Rep zero(); - static constexpr Rep max(); - static constexpr Rep min(); -}; - -// duration - -template > -class duration -{ - static_assert(!__is_duration::value, "A duration representation can not be a duration"); - static_assert(__is_ratio::value, "Second template parameter of duration must be a std::ratio"); - static_assert(Period::num > 0, "duration period must be positive"); -public: - typedef Rep rep; - typedef Period period; - - constexpr duration() = default; - template - constexpr explicit duration(const Rep2& r, - typename enable_if - < - is_convertible::value && - (treat_as_floating_point::value || - !treat_as_floating_point::value && !treat_as_floating_point::value) - >::type* = 0); - - // conversions - template - constexpr duration(const duration& d, - typename enable_if - < - treat_as_floating_point::value || - ratio_divide::type::den == 1 - >::type* = 0); - - // observer - - constexpr rep count() const; - - // arithmetic - - constexpr duration operator+() const; - constexpr duration operator-() const; - duration& operator++(); - duration operator++(int); - duration& operator--(); - duration operator--(int); - - duration& operator+=(const duration& d); - duration& operator-=(const duration& d); - - duration& operator*=(const rep& rhs); - duration& operator/=(const rep& rhs); - - // special values - - static constexpr duration zero(); - static constexpr duration min(); - static constexpr duration max(); -}; - -typedef duration nanoseconds; -typedef duration microseconds; -typedef duration milliseconds; -typedef duration seconds; -typedef duration< long, ratio< 60> > minutes; -typedef duration< long, ratio<3600> > hours; - -template -class time_point -{ -public: - typedef Clock clock; - typedef Duration duration; - typedef typename duration::rep rep; - typedef typename duration::period period; -private: - duration d_; // exposition only - -public: - time_point(); // has value "epoch" // constexpr in C++14 - explicit time_point(const duration& d); // same as time_point() + d // constexpr in C++14 - - // conversions - template - time_point(const time_point& t); // constexpr in C++14 - - // observer - - duration time_since_epoch() const; // constexpr in C++14 - - // arithmetic - - time_point& operator+=(const duration& d); - time_point& operator-=(const duration& d); - - // special values - - static constexpr time_point min(); - static constexpr time_point max(); -}; - -} // chrono - -// common_type traits -template - struct common_type, chrono::duration>; - -template - struct common_type, chrono::time_point>; - -namespace chrono { - -// duration arithmetic -template - constexpr - typename common_type, duration>::type - operator+(const duration& lhs, const duration& rhs); -template - constexpr - typename common_type, duration>::type - operator-(const duration& lhs, const duration& rhs); -template - constexpr - duration::type, Period> - operator*(const duration& d, const Rep2& s); -template - constexpr - duration::type, Period> - operator*(const Rep1& s, const duration& d); -template - constexpr - duration::type, Period> - operator/(const duration& d, const Rep2& s); -template - constexpr - typename common_type::type - operator/(const duration& lhs, const duration& rhs); - -// duration comparisons -template - constexpr - bool operator==(const duration& lhs, const duration& rhs); -template - constexpr - bool operator!=(const duration& lhs, const duration& rhs); -template - constexpr - bool operator< (const duration& lhs, const duration& rhs); -template - constexpr - bool operator<=(const duration& lhs, const duration& rhs); -template - constexpr - bool operator> (const duration& lhs, const duration& rhs); -template - constexpr - bool operator>=(const duration& lhs, const duration& rhs); - -// duration_cast -template - ToDuration duration_cast(const duration& d); - -// time_point arithmetic (all constexpr in C++14) -template - time_point>::type> - operator+(const time_point& lhs, const duration& rhs); -template - time_point, Duration2>::type> - operator+(const duration& lhs, const time_point& rhs); -template - time_point>::type> - operator-(const time_point& lhs, const duration& rhs); -template - typename common_type::type - operator-(const time_point& lhs, const time_point& rhs); - -// time_point comparisons (all constexpr in C++14) -template - bool operator==(const time_point& lhs, const time_point& rhs); -template - bool operator!=(const time_point& lhs, const time_point& rhs); -template - bool operator< (const time_point& lhs, const time_point& rhs); -template - bool operator<=(const time_point& lhs, const time_point& rhs); -template - bool operator> (const time_point& lhs, const time_point& rhs); -template - bool operator>=(const time_point& lhs, const time_point& rhs); - -// time_point_cast (constexpr in C++14) - -template - time_point time_point_cast(const time_point& t); - -// Clocks - -class system_clock -{ -public: - typedef microseconds duration; - typedef duration::rep rep; - typedef duration::period period; - typedef chrono::time_point time_point; - static const bool is_steady = false; // constexpr in C++14 - - static time_point now() noexcept; - static time_t to_time_t (const time_point& __t) noexcept; - static time_point from_time_t(time_t __t) noexcept; -}; - -class steady_clock -{ -public: - typedef nanoseconds duration; - typedef duration::rep rep; - typedef duration::period period; - typedef chrono::time_point time_point; - static const bool is_steady = true; // constexpr in C++14 - - static time_point now() noexcept; -}; - -typedef steady_clock high_resolution_clock; - -} // chrono - -constexpr chrono::hours operator "" h(unsigned long long); // C++14 -constexpr chrono::duration> operator "" h(long double); // C++14 -constexpr chrono::minutes operator "" min(unsigned long long); // C++14 -constexpr chrono::duration> operator "" min(long double); // C++14 -constexpr chrono::seconds operator "" s(unsigned long long); // C++14 -constexpr chrono::duration operator "" s(long double); // C++14 -constexpr chrono::milliseconds operator "" ms(unsigned long long); // C++14 -constexpr chrono::duration operator "" ms(long double); // C++14 -constexpr chrono::microseconds operator "" us(unsigned long long); // C++14 -constexpr chrono::duration operator "" us(long double); // C++14 -constexpr chrono::nanoseconds operator "" ns(unsigned long long); // C++14 -constexpr chrono::duration operator "" ns(long double); // C++14 - -} // std -*/ - -#include <__config> -#include -#include -#include -#include - -#include <__undef_min_max> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -namespace chrono -{ - -template > class _LIBCPP_TYPE_VIS_ONLY duration; - -template -struct __is_duration : false_type {}; - -template -struct __is_duration > : true_type {}; - -template -struct __is_duration > : true_type {}; - -template -struct __is_duration > : true_type {}; - -template -struct __is_duration > : true_type {}; - -} // chrono - -template -struct _LIBCPP_TYPE_VIS_ONLY common_type, - chrono::duration<_Rep2, _Period2> > -{ - typedef chrono::duration::type, - typename __ratio_gcd<_Period1, _Period2>::type> type; -}; - -namespace chrono { - -// duration_cast - -template ::type, - bool = _Period::num == 1, - bool = _Period::den == 1> -struct __duration_cast; - -template -struct __duration_cast<_FromDuration, _ToDuration, _Period, true, true> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - _ToDuration operator()(const _FromDuration& __fd) const - { - return _ToDuration(static_cast(__fd.count())); - } -}; - -template -struct __duration_cast<_FromDuration, _ToDuration, _Period, true, false> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - _ToDuration operator()(const _FromDuration& __fd) const - { - typedef typename common_type::type _Ct; - return _ToDuration(static_cast( - static_cast<_Ct>(__fd.count()) / static_cast<_Ct>(_Period::den))); - } -}; - -template -struct __duration_cast<_FromDuration, _ToDuration, _Period, false, true> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - _ToDuration operator()(const _FromDuration& __fd) const - { - typedef typename common_type::type _Ct; - return _ToDuration(static_cast( - static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num))); - } -}; - -template -struct __duration_cast<_FromDuration, _ToDuration, _Period, false, false> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - _ToDuration operator()(const _FromDuration& __fd) const - { - typedef typename common_type::type _Ct; - return _ToDuration(static_cast( - static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num) - / static_cast<_Ct>(_Period::den))); - } -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename enable_if -< - __is_duration<_ToDuration>::value, - _ToDuration ->::type -duration_cast(const duration<_Rep, _Period>& __fd) -{ - return __duration_cast, _ToDuration>()(__fd); -} - -template -struct _LIBCPP_TYPE_VIS_ONLY treat_as_floating_point : is_floating_point<_Rep> {}; - -template -struct _LIBCPP_TYPE_VIS_ONLY duration_values -{ -public: - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() {return _Rep(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep max() {return numeric_limits<_Rep>::max();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep min() {return numeric_limits<_Rep>::lowest();} -}; - -// duration - -template -class _LIBCPP_TYPE_VIS_ONLY duration -{ - static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration"); - static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio"); - static_assert(_Period::num > 0, "duration period must be positive"); - - template - struct __no_overflow - { - private: - static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value; - static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value; - static const intmax_t __n1 = _R1::num / __gcd_n1_n2; - static const intmax_t __d1 = _R1::den / __gcd_d1_d2; - static const intmax_t __n2 = _R2::num / __gcd_n1_n2; - static const intmax_t __d2 = _R2::den / __gcd_d1_d2; - static const intmax_t max = -((intmax_t(1) << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1); - - template - struct __mul // __overflow == false - { - static const intmax_t value = _Xp * _Yp; - }; - - template - struct __mul<_Xp, _Yp, true> - { - static const intmax_t value = 1; - }; - - public: - static const bool value = (__n1 <= max / __d2) && (__n2 <= max / __d1); - typedef ratio<__mul<__n1, __d2, !value>::value, - __mul<__n2, __d1, !value>::value> type; - }; - -public: - typedef _Rep rep; - typedef _Period period; -private: - rep __rep_; -public: - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR -#ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS - duration() = default; -#else - duration() {} -#endif - - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - explicit duration(const _Rep2& __r, - typename enable_if - < - is_convertible<_Rep2, rep>::value && - (treat_as_floating_point::value || - !treat_as_floating_point<_Rep2>::value) - >::type* = 0) - : __rep_(__r) {} - - // conversions - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - duration(const duration<_Rep2, _Period2>& __d, - typename enable_if - < - __no_overflow<_Period2, period>::value && ( - treat_as_floating_point::value || - (__no_overflow<_Period2, period>::type::den == 1 && - !treat_as_floating_point<_Rep2>::value)) - >::type* = 0) - : __rep_(_VSTD::chrono::duration_cast(__d).count()) {} - - // observer - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR rep count() const {return __rep_;} - - // arithmetic - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR duration operator+() const {return *this;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR duration operator-() const {return duration(-__rep_);} - _LIBCPP_INLINE_VISIBILITY duration& operator++() {++__rep_; return *this;} - _LIBCPP_INLINE_VISIBILITY duration operator++(int) {return duration(__rep_++);} - _LIBCPP_INLINE_VISIBILITY duration& operator--() {--__rep_; return *this;} - _LIBCPP_INLINE_VISIBILITY duration operator--(int) {return duration(__rep_--);} - - _LIBCPP_INLINE_VISIBILITY duration& operator+=(const duration& __d) {__rep_ += __d.count(); return *this;} - _LIBCPP_INLINE_VISIBILITY duration& operator-=(const duration& __d) {__rep_ -= __d.count(); return *this;} - - _LIBCPP_INLINE_VISIBILITY duration& operator*=(const rep& rhs) {__rep_ *= rhs; return *this;} - _LIBCPP_INLINE_VISIBILITY duration& operator/=(const rep& rhs) {__rep_ /= rhs; return *this;} - _LIBCPP_INLINE_VISIBILITY duration& operator%=(const rep& rhs) {__rep_ %= rhs; return *this;} - _LIBCPP_INLINE_VISIBILITY duration& operator%=(const duration& rhs) {__rep_ %= rhs.count(); return *this;} - - // special values - - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration zero() {return duration(duration_values::zero());} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration min() {return duration(duration_values::min());} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration max() {return duration(duration_values::max());} -}; - -typedef duration nanoseconds; -typedef duration microseconds; -typedef duration milliseconds; -typedef duration seconds; -typedef duration< long, ratio< 60> > minutes; -typedef duration< long, ratio<3600> > hours; - -// Duration == - -template -struct __duration_eq -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const - { - typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct; - return _Ct(__lhs).count() == _Ct(__rhs).count(); - } -}; - -template -struct __duration_eq<_LhsDuration, _LhsDuration> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const - {return __lhs.count() == __rhs.count();} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator==(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return __duration_eq, duration<_Rep2, _Period2> >()(__lhs, __rhs); -} - -// Duration != - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator!=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return !(__lhs == __rhs); -} - -// Duration < - -template -struct __duration_lt -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const - { - typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct; - return _Ct(__lhs).count() < _Ct(__rhs).count(); - } -}; - -template -struct __duration_lt<_LhsDuration, _LhsDuration> -{ - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const - {return __lhs.count() < __rhs.count();} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator< (const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return __duration_lt, duration<_Rep2, _Period2> >()(__lhs, __rhs); -} - -// Duration > - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator> (const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return __rhs < __lhs; -} - -// Duration <= - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator<=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return !(__rhs < __lhs); -} - -// Duration >= - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -bool -operator>=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return !(__lhs < __rhs); -} - -// Duration + - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename common_type, duration<_Rep2, _Period2> >::type -operator+(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; - return _Cd(_Cd(__lhs).count() + _Cd(__rhs).count()); -} - -// Duration - - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename common_type, duration<_Rep2, _Period2> >::type -operator-(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; - return _Cd(_Cd(__lhs).count() - _Cd(__rhs).count()); -} - -// Duration * - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename enable_if -< - is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value, - duration::type, _Period> ->::type -operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) -{ - typedef typename common_type<_Rep1, _Rep2>::type _Cr; - typedef duration<_Cr, _Period> _Cd; - return _Cd(_Cd(__d).count() * static_cast<_Cr>(__s)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename enable_if -< - is_convertible<_Rep1, typename common_type<_Rep1, _Rep2>::type>::value, - duration::type, _Period> ->::type -operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) -{ - return __d * __s; -} - -// Duration / - -template ::value> -struct __duration_divide_result -{ -}; - -template ::type>::value> -struct __duration_divide_imp -{ -}; - -template -struct __duration_divide_imp, _Rep2, true> -{ - typedef duration::type, _Period> type; -}; - -template -struct __duration_divide_result, _Rep2, false> - : __duration_divide_imp, _Rep2> -{ -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename __duration_divide_result, _Rep2>::type -operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) -{ - typedef typename common_type<_Rep1, _Rep2>::type _Cr; - typedef duration<_Cr, _Period> _Cd; - return _Cd(_Cd(__d).count() / static_cast<_Cr>(__s)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename common_type<_Rep1, _Rep2>::type -operator/(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef typename common_type, duration<_Rep2, _Period2> >::type _Ct; - return _Ct(__lhs).count() / _Ct(__rhs).count(); -} - -// Duration % - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename __duration_divide_result, _Rep2>::type -operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) -{ - typedef typename common_type<_Rep1, _Rep2>::type _Cr; - typedef duration<_Cr, _Period> _Cd; - return _Cd(_Cd(__d).count() % static_cast<_Cr>(__s)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -typename common_type, duration<_Rep2, _Period2> >::type -operator%(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef typename common_type<_Rep1, _Rep2>::type _Cr; - typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; - return _Cd(static_cast<_Cr>(_Cd(__lhs).count()) % static_cast<_Cr>(_Cd(__rhs).count())); -} - -////////////////////////////////////////////////////////// -///////////////////// time_point ///////////////////////// -////////////////////////////////////////////////////////// - -template -class _LIBCPP_TYPE_VIS_ONLY time_point -{ - static_assert(__is_duration<_Duration>::value, - "Second template parameter of time_point must be a std::chrono::duration"); -public: - typedef _Clock clock; - typedef _Duration duration; - typedef typename duration::rep rep; - typedef typename duration::period period; -private: - duration __d_; - -public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 time_point() : __d_(duration::zero()) {} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 explicit time_point(const duration& __d) : __d_(__d) {} - - // conversions - template - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - time_point(const time_point& t, - typename enable_if - < - is_convertible<_Duration2, duration>::value - >::type* = 0) - : __d_(t.time_since_epoch()) {} - - // observer - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 duration time_since_epoch() const {return __d_;} - - // arithmetic - - _LIBCPP_INLINE_VISIBILITY time_point& operator+=(const duration& __d) {__d_ += __d; return *this;} - _LIBCPP_INLINE_VISIBILITY time_point& operator-=(const duration& __d) {__d_ -= __d; return *this;} - - // special values - - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point min() {return time_point(duration::min());} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point max() {return time_point(duration::max());} -}; - -} // chrono - -template -struct _LIBCPP_TYPE_VIS_ONLY common_type, - chrono::time_point<_Clock, _Duration2> > -{ - typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type; -}; - -namespace chrono { - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -time_point<_Clock, _ToDuration> -time_point_cast(const time_point<_Clock, _Duration>& __t) -{ - return time_point<_Clock, _ToDuration>(_VSTD::chrono::duration_cast<_ToDuration>(__t.time_since_epoch())); -} - -// time_point == - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator==(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __lhs.time_since_epoch() == __rhs.time_since_epoch(); -} - -// time_point != - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator!=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return !(__lhs == __rhs); -} - -// time_point < - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator<(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __lhs.time_since_epoch() < __rhs.time_since_epoch(); -} - -// time_point > - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator>(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __rhs < __lhs; -} - -// time_point <= - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator<=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return !(__rhs < __lhs); -} - -// time_point >= - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator>=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return !(__lhs < __rhs); -} - -// time_point operator+(time_point x, duration y); - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> -operator+(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - typedef time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> _Tr; - return _Tr (__lhs.time_since_epoch() + __rhs); -} - -// time_point operator+(duration x, time_point y); - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -time_point<_Clock, typename common_type, _Duration2>::type> -operator+(const duration<_Rep1, _Period1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __rhs + __lhs; -} - -// time_point operator-(time_point x, duration y); - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> -operator-(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs) -{ - return __lhs + (-__rhs); -} - -// duration operator-(time_point x, time_point y); - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -typename common_type<_Duration1, _Duration2>::type -operator-(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) -{ - return __lhs.time_since_epoch() - __rhs.time_since_epoch(); -} - -////////////////////////////////////////////////////////// -/////////////////////// clocks /////////////////////////// -////////////////////////////////////////////////////////// - -class _LIBCPP_TYPE_VIS system_clock -{ -public: - typedef microseconds duration; - typedef duration::rep rep; - typedef duration::period period; - typedef chrono::time_point time_point; - static _LIBCPP_CONSTEXPR_AFTER_CXX11 const bool is_steady = false; - - static time_point now() _NOEXCEPT; - static time_t to_time_t (const time_point& __t) _NOEXCEPT; - static time_point from_time_t(time_t __t) _NOEXCEPT; -}; - -#ifndef _LIBCPP_HAS_NO_MONOTONIC_CLOCK -class _LIBCPP_TYPE_VIS steady_clock -{ -public: - typedef nanoseconds duration; - typedef duration::rep rep; - typedef duration::period period; - typedef chrono::time_point time_point; - static _LIBCPP_CONSTEXPR_AFTER_CXX11 const bool is_steady = true; - - static time_point now() _NOEXCEPT; -}; - -typedef steady_clock high_resolution_clock; -#else -typedef system_clock high_resolution_clock; -#endif - -} // chrono - -#if _LIBCPP_STD_VER > 11 -// Suffixes for duration literals [time.duration.literals] -inline namespace literals -{ - inline namespace chrono_literals - { - - constexpr chrono::hours operator"" h(unsigned long long __h) - { - return chrono::hours(static_cast(__h)); - } - - constexpr chrono::duration> operator"" h(long double __h) - { - return chrono::duration>(__h); - } - - - constexpr chrono::minutes operator"" min(unsigned long long __m) - { - return chrono::minutes(static_cast(__m)); - } - - constexpr chrono::duration> operator"" min(long double __m) - { - return chrono::duration> (__m); - } - - - constexpr chrono::seconds operator"" s(unsigned long long __s) - { - return chrono::seconds(static_cast(__s)); - } - - constexpr chrono::duration operator"" s(long double __s) - { - return chrono::duration (__s); - } - - - constexpr chrono::milliseconds operator"" ms(unsigned long long __ms) - { - return chrono::milliseconds(static_cast(__ms)); - } - - constexpr chrono::duration operator"" ms(long double __ms) - { - return chrono::duration(__ms); - } - - - constexpr chrono::microseconds operator"" us(unsigned long long __us) - { - return chrono::microseconds(static_cast(__us)); - } - - constexpr chrono::duration operator"" us(long double __us) - { - return chrono::duration (__us); - } - - - constexpr chrono::nanoseconds operator"" ns(unsigned long long __ns) - { - return chrono::nanoseconds(static_cast(__ns)); - } - - constexpr chrono::duration operator"" ns(long double __ns) - { - return chrono::duration (__ns); - } - -}} - -namespace chrono { // hoist the literals into namespace std::chrono - using namespace literals::chrono_literals; -} - -#endif - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CHRONO diff --git a/libcxx/include/cinttypes b/libcxx/include/cinttypes deleted file mode 100644 index cfd763c98..000000000 --- a/libcxx/include/cinttypes +++ /dev/null @@ -1,261 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cinttypes --------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CINTTYPES -#define _LIBCPP_CINTTYPES - -/* - cinttypes synopsis - -This entire header is C99 / C++0X - -#include // includes - -Macros: - - PRId8 - PRId16 - PRId32 - PRId64 - - PRIdLEAST8 - PRIdLEAST16 - PRIdLEAST32 - PRIdLEAST64 - - PRIdFAST8 - PRIdFAST16 - PRIdFAST32 - PRIdFAST64 - - PRIdMAX - PRIdPTR - - PRIi8 - PRIi16 - PRIi32 - PRIi64 - - PRIiLEAST8 - PRIiLEAST16 - PRIiLEAST32 - PRIiLEAST64 - - PRIiFAST8 - PRIiFAST16 - PRIiFAST32 - PRIiFAST64 - - PRIiMAX - PRIiPTR - - PRIo8 - PRIo16 - PRIo32 - PRIo64 - - PRIoLEAST8 - PRIoLEAST16 - PRIoLEAST32 - PRIoLEAST64 - - PRIoFAST8 - PRIoFAST16 - PRIoFAST32 - PRIoFAST64 - - PRIoMAX - PRIoPTR - - PRIu8 - PRIu16 - PRIu32 - PRIu64 - - PRIuLEAST8 - PRIuLEAST16 - PRIuLEAST32 - PRIuLEAST64 - - PRIuFAST8 - PRIuFAST16 - PRIuFAST32 - PRIuFAST64 - - PRIuMAX - PRIuPTR - - PRIx8 - PRIx16 - PRIx32 - PRIx64 - - PRIxLEAST8 - PRIxLEAST16 - PRIxLEAST32 - PRIxLEAST64 - - PRIxFAST8 - PRIxFAST16 - PRIxFAST32 - PRIxFAST64 - - PRIxMAX - PRIxPTR - - PRIX8 - PRIX16 - PRIX32 - PRIX64 - - PRIXLEAST8 - PRIXLEAST16 - PRIXLEAST32 - PRIXLEAST64 - - PRIXFAST8 - PRIXFAST16 - PRIXFAST32 - PRIXFAST64 - - PRIXMAX - PRIXPTR - - SCNd8 - SCNd16 - SCNd32 - SCNd64 - - SCNdLEAST8 - SCNdLEAST16 - SCNdLEAST32 - SCNdLEAST64 - - SCNdFAST8 - SCNdFAST16 - SCNdFAST32 - SCNdFAST64 - - SCNdMAX - SCNdPTR - - SCNi8 - SCNi16 - SCNi32 - SCNi64 - - SCNiLEAST8 - SCNiLEAST16 - SCNiLEAST32 - SCNiLEAST64 - - SCNiFAST8 - SCNiFAST16 - SCNiFAST32 - SCNiFAST64 - - SCNiMAX - SCNiPTR - - SCNo8 - SCNo16 - SCNo32 - SCNo64 - - SCNoLEAST8 - SCNoLEAST16 - SCNoLEAST32 - SCNoLEAST64 - - SCNoFAST8 - SCNoFAST16 - SCNoFAST32 - SCNoFAST64 - - SCNoMAX - SCNoPTR - - SCNu8 - SCNu16 - SCNu32 - SCNu64 - - SCNuLEAST8 - SCNuLEAST16 - SCNuLEAST32 - SCNuLEAST64 - - SCNuFAST8 - SCNuFAST16 - SCNuFAST32 - SCNuFAST64 - - SCNuMAX - SCNuPTR - - SCNx8 - SCNx16 - SCNx32 - SCNx64 - - SCNxLEAST8 - SCNxLEAST16 - SCNxLEAST32 - SCNxLEAST64 - - SCNxFAST8 - SCNxFAST16 - SCNxFAST32 - SCNxFAST64 - - SCNxMAX - SCNxPTR - -namespace std -{ - -Types: - - imaxdiv_t - -intmax_t imaxabs(intmax_t j); -imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom); -intmax_t strtoimax(const char* restrict nptr, char** restrict endptr, int base); -uintmax_t strtoumax(const char* restrict nptr, char** restrict endptr, int base); -intmax_t wcstoimax(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); -uintmax_t wcstoumax(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); - -} // std -*/ - -#include <__config> -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using::imaxdiv_t; - -#undef imaxabs -using::imaxabs; -#undef imaxdiv -using::imaxdiv; -using::strtoimax; -using::strtoumax; -using::wcstoimax; -using::wcstoumax; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CINTTYPES diff --git a/libcxx/include/ciso646 b/libcxx/include/ciso646 deleted file mode 100644 index b2efc72a9..000000000 --- a/libcxx/include/ciso646 +++ /dev/null @@ -1,25 +0,0 @@ -// -*- C++ -*- -//===--------------------------- ciso646 ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CISO646 -#define _LIBCPP_CISO646 - -/* - ciso646 synopsis - -*/ - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#endif // _LIBCPP_CISO646 diff --git a/libcxx/include/climits b/libcxx/include/climits deleted file mode 100644 index 81ffecdf6..000000000 --- a/libcxx/include/climits +++ /dev/null @@ -1,48 +0,0 @@ -// -*- C++ -*- -//===--------------------------- climits ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CLIMITS -#define _LIBCPP_CLIMITS - -/* - climits synopsis - -Macros: - - CHAR_BIT - SCHAR_MIN - SCHAR_MAX - UCHAR_MAX - CHAR_MIN - CHAR_MAX - MB_LEN_MAX - SHRT_MIN - SHRT_MAX - USHRT_MAX - INT_MIN - INT_MAX - UINT_MAX - LONG_MIN - LONG_MAX - ULONG_MAX - LLONG_MIN // C99 - LLONG_MAX // C99 - ULLONG_MAX // C99 - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#endif // _LIBCPP_CLIMITS diff --git a/libcxx/include/clocale b/libcxx/include/clocale deleted file mode 100644 index f8b8f0dd3..000000000 --- a/libcxx/include/clocale +++ /dev/null @@ -1,53 +0,0 @@ -// -*- C++ -*- -//===--------------------------- clocale ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CLOCALE -#define _LIBCPP_CLOCALE - -/* - clocale synopsis - -Macros: - - LC_ALL - LC_COLLATE - LC_CTYPE - LC_MONETARY - LC_NUMERIC - LC_TIME - NULL - -namespace std -{ - -struct lconv; -char* setlocale(int category, const char* locale); -lconv* localeconv(); - -} // std - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::lconv; -using ::setlocale; -using ::localeconv; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CLOCALE diff --git a/libcxx/include/cmath b/libcxx/include/cmath deleted file mode 100644 index 5f9aaedd5..000000000 --- a/libcxx/include/cmath +++ /dev/null @@ -1,1697 +0,0 @@ -// -*- C++ -*- -//===---------------------------- cmath -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CMATH -#define _LIBCPP_CMATH - -/* - cmath synopsis - -Macros: - - HUGE_VAL - HUGE_VALF // C99 - HUGE_VALL // C99 - INFINITY // C99 - NAN // C99 - FP_INFINITE // C99 - FP_NAN // C99 - FP_NORMAL // C99 - FP_SUBNORMAL // C99 - FP_ZERO // C99 - FP_FAST_FMA // C99 - FP_FAST_FMAF // C99 - FP_FAST_FMAL // C99 - FP_ILOGB0 // C99 - FP_ILOGBNAN // C99 - MATH_ERRNO // C99 - MATH_ERREXCEPT // C99 - math_errhandling // C99 - -namespace std -{ - -Types: - - float_t // C99 - double_t // C99 - -// C90 - -floating_point abs(floating_point x); - -floating_point acos (arithmetic x); -float acosf(float x); -long double acosl(long double x); - -floating_point asin (arithmetic x); -float asinf(float x); -long double asinl(long double x); - -floating_point atan (arithmetic x); -float atanf(float x); -long double atanl(long double x); - -floating_point atan2 (arithmetic y, arithmetic x); -float atan2f(float y, float x); -long double atan2l(long double y, long double x); - -floating_point ceil (arithmetic x); -float ceilf(float x); -long double ceill(long double x); - -floating_point cos (arithmetic x); -float cosf(float x); -long double cosl(long double x); - -floating_point cosh (arithmetic x); -float coshf(float x); -long double coshl(long double x); - -floating_point exp (arithmetic x); -float expf(float x); -long double expl(long double x); - -floating_point fabs (arithmetic x); -float fabsf(float x); -long double fabsl(long double x); - -floating_point floor (arithmetic x); -float floorf(float x); -long double floorl(long double x); - -floating_point fmod (arithmetic x, arithmetic y); -float fmodf(float x, float y); -long double fmodl(long double x, long double y); - -floating_point frexp (arithmetic value, int* exp); -float frexpf(float value, int* exp); -long double frexpl(long double value, int* exp); - -floating_point ldexp (arithmetic value, int exp); -float ldexpf(float value, int exp); -long double ldexpl(long double value, int exp); - -floating_point log (arithmetic x); -float logf(float x); -long double logl(long double x); - -floating_point log10 (arithmetic x); -float log10f(float x); -long double log10l(long double x); - -floating_point modf (floating_point value, floating_point* iptr); -float modff(float value, float* iptr); -long double modfl(long double value, long double* iptr); - -floating_point pow (arithmetic x, arithmetic y); -float powf(float x, float y); -long double powl(long double x, long double y); - -floating_point sin (arithmetic x); -float sinf(float x); -long double sinl(long double x); - -floating_point sinh (arithmetic x); -float sinhf(float x); -long double sinhl(long double x); - -floating_point sqrt (arithmetic x); -float sqrtf(float x); -long double sqrtl(long double x); - -floating_point tan (arithmetic x); -float tanf(float x); -long double tanl(long double x); - -floating_point tanh (arithmetic x); -float tanhf(float x); -long double tanhl(long double x); - -// C99 - -bool signbit(arithmetic x); - -int fpclassify(arithmetic x); - -bool isfinite(arithmetic x); -bool isinf(arithmetic x); -bool isnan(arithmetic x); -bool isnormal(arithmetic x); - -bool isgreater(arithmetic x, arithmetic y); -bool isgreaterequal(arithmetic x, arithmetic y); -bool isless(arithmetic x, arithmetic y); -bool islessequal(arithmetic x, arithmetic y); -bool islessgreater(arithmetic x, arithmetic y); -bool isunordered(arithmetic x, arithmetic y); - -floating_point acosh (arithmetic x); -float acoshf(float x); -long double acoshl(long double x); - -floating_point asinh (arithmetic x); -float asinhf(float x); -long double asinhl(long double x); - -floating_point atanh (arithmetic x); -float atanhf(float x); -long double atanhl(long double x); - -floating_point cbrt (arithmetic x); -float cbrtf(float x); -long double cbrtl(long double x); - -floating_point copysign (arithmetic x, arithmetic y); -float copysignf(float x, float y); -long double copysignl(long double x, long double y); - -floating_point erf (arithmetic x); -float erff(float x); -long double erfl(long double x); - -floating_point erfc (arithmetic x); -float erfcf(float x); -long double erfcl(long double x); - -floating_point exp2 (arithmetic x); -float exp2f(float x); -long double exp2l(long double x); - -floating_point expm1 (arithmetic x); -float expm1f(float x); -long double expm1l(long double x); - -floating_point fdim (arithmetic x, arithmetic y); -float fdimf(float x, float y); -long double fdiml(long double x, long double y); - -floating_point fma (arithmetic x, arithmetic y, arithmetic z); -float fmaf(float x, float y, float z); -long double fmal(long double x, long double y, long double z); - -floating_point fmax (arithmetic x, arithmetic y); -float fmaxf(float x, float y); -long double fmaxl(long double x, long double y); - -floating_point fmin (arithmetic x, arithmetic y); -float fminf(float x, float y); -long double fminl(long double x, long double y); - -floating_point hypot (arithmetic x, arithmetic y); -float hypotf(float x, float y); -long double hypotl(long double x, long double y); - -int ilogb (arithmetic x); -int ilogbf(float x); -int ilogbl(long double x); - -floating_point lgamma (arithmetic x); -float lgammaf(float x); -long double lgammal(long double x); - -long long llrint (arithmetic x); -long long llrintf(float x); -long long llrintl(long double x); - -long long llround (arithmetic x); -long long llroundf(float x); -long long llroundl(long double x); - -floating_point log1p (arithmetic x); -float log1pf(float x); -long double log1pl(long double x); - -floating_point log2 (arithmetic x); -float log2f(float x); -long double log2l(long double x); - -floating_point logb (arithmetic x); -float logbf(float x); -long double logbl(long double x); - -long lrint (arithmetic x); -long lrintf(float x); -long lrintl(long double x); - -long lround (arithmetic x); -long lroundf(float x); -long lroundl(long double x); - -double nan (const char* str); -float nanf(const char* str); -long double nanl(const char* str); - -floating_point nearbyint (arithmetic x); -float nearbyintf(float x); -long double nearbyintl(long double x); - -floating_point nextafter (arithmetic x, arithmetic y); -float nextafterf(float x, float y); -long double nextafterl(long double x, long double y); - -floating_point nexttoward (arithmetic x, long double y); -float nexttowardf(float x, long double y); -long double nexttowardl(long double x, long double y); - -floating_point remainder (arithmetic x, arithmetic y); -float remainderf(float x, float y); -long double remainderl(long double x, long double y); - -floating_point remquo (arithmetic x, arithmetic y, int* pquo); -float remquof(float x, float y, int* pquo); -long double remquol(long double x, long double y, int* pquo); - -floating_point rint (arithmetic x); -float rintf(float x); -long double rintl(long double x); - -floating_point round (arithmetic x); -float roundf(float x); -long double roundl(long double x); - -floating_point scalbln (arithmetic x, long ex); -float scalblnf(float x, long ex); -long double scalblnl(long double x, long ex); - -floating_point scalbn (arithmetic x, int ex); -float scalbnf(float x, int ex); -long double scalbnl(long double x, int ex); - -floating_point tgamma (arithmetic x); -float tgammaf(float x); -long double tgammal(long double x); - -floating_point trunc (arithmetic x); -float truncf(float x); -long double truncl(long double x); - -} // std - -*/ - -#include <__config> -#include -#include - -#ifdef _LIBCPP_MSVCRT -#include "support/win32/math_win32.h" -#endif - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -// signbit - -#ifdef signbit - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_signbit(_A1 __lcpp_x) _NOEXCEPT -{ - return signbit(__lcpp_x); -} - -#undef signbit - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if::value, bool>::type -signbit(_A1 __lcpp_x) _NOEXCEPT -{ - return __libcpp_signbit((typename std::__promote<_A1>::type)__lcpp_x); -} - -#endif // signbit - -// fpclassify - -#ifdef fpclassify - -template -_LIBCPP_ALWAYS_INLINE -int -__libcpp_fpclassify(_A1 __lcpp_x) _NOEXCEPT -{ - return fpclassify(__lcpp_x); -} - -#undef fpclassify - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if::value, int>::type -fpclassify(_A1 __lcpp_x) _NOEXCEPT -{ - return __libcpp_fpclassify((typename std::__promote<_A1>::type)__lcpp_x); -} - -#endif // fpclassify - -// isfinite - -#ifdef isfinite - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_isfinite(_A1 __lcpp_x) _NOEXCEPT -{ - return isfinite(__lcpp_x); -} - -#undef isfinite - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if::value, bool>::type -isfinite(_A1 __lcpp_x) _NOEXCEPT -{ - return __libcpp_isfinite((typename std::__promote<_A1>::type)__lcpp_x); -} - -#endif // isfinite - -// isinf - -#ifdef isinf - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_isinf(_A1 __lcpp_x) _NOEXCEPT -{ - return isinf(__lcpp_x); -} - -#undef isinf - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if::value, bool>::type -isinf(_A1 __lcpp_x) _NOEXCEPT -{ - return __libcpp_isinf((typename std::__promote<_A1>::type)__lcpp_x); -} - -#endif // isinf - -// isnan - -#ifdef isnan - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_isnan(_A1 __lcpp_x) _NOEXCEPT -{ - return isnan(__lcpp_x); -} - -#undef isnan - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if::value, bool>::type -isnan(_A1 __lcpp_x) _NOEXCEPT -{ - return __libcpp_isnan((typename std::__promote<_A1>::type)__lcpp_x); -} - -#endif // isnan - -// isnormal - -#ifdef isnormal - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_isnormal(_A1 __lcpp_x) _NOEXCEPT -{ - return isnormal(__lcpp_x); -} - -#undef isnormal - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if::value, bool>::type -isnormal(_A1 __lcpp_x) _NOEXCEPT -{ - return __libcpp_isnormal((typename std::__promote<_A1>::type)__lcpp_x); -} - -#endif // isnormal - -// isgreater - -#ifdef isgreater - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_isgreater(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - return isgreater(__lcpp_x, __lcpp_y); -} - -#undef isgreater - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if -< - std::is_arithmetic<_A1>::value && - std::is_arithmetic<_A2>::value, - bool ->::type -isgreater(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename std::__promote<_A1, _A2>::type type; - return __libcpp_isgreater((type)__lcpp_x, (type)__lcpp_y); -} - -#endif // isgreater - -// isgreaterequal - -#ifdef isgreaterequal - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_isgreaterequal(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - return isgreaterequal(__lcpp_x, __lcpp_y); -} - -#undef isgreaterequal - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if -< - std::is_arithmetic<_A1>::value && - std::is_arithmetic<_A2>::value, - bool ->::type -isgreaterequal(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename std::__promote<_A1, _A2>::type type; - return __libcpp_isgreaterequal((type)__lcpp_x, (type)__lcpp_y); -} - -#endif // isgreaterequal - -// isless - -#ifdef isless - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_isless(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - return isless(__lcpp_x, __lcpp_y); -} - -#undef isless - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if -< - std::is_arithmetic<_A1>::value && - std::is_arithmetic<_A2>::value, - bool ->::type -isless(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename std::__promote<_A1, _A2>::type type; - return __libcpp_isless((type)__lcpp_x, (type)__lcpp_y); -} - -#endif // isless - -// islessequal - -#ifdef islessequal - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_islessequal(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - return islessequal(__lcpp_x, __lcpp_y); -} - -#undef islessequal - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if -< - std::is_arithmetic<_A1>::value && - std::is_arithmetic<_A2>::value, - bool ->::type -islessequal(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename std::__promote<_A1, _A2>::type type; - return __libcpp_islessequal((type)__lcpp_x, (type)__lcpp_y); -} - -#endif // islessequal - -// islessgreater - -#ifdef islessgreater - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_islessgreater(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - return islessgreater(__lcpp_x, __lcpp_y); -} - -#undef islessgreater - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if -< - std::is_arithmetic<_A1>::value && - std::is_arithmetic<_A2>::value, - bool ->::type -islessgreater(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename std::__promote<_A1, _A2>::type type; - return __libcpp_islessgreater((type)__lcpp_x, (type)__lcpp_y); -} - -#endif // islessgreater - -// isunordered - -#ifdef isunordered - -template -_LIBCPP_ALWAYS_INLINE -bool -__libcpp_isunordered(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - return isunordered(__lcpp_x, __lcpp_y); -} - -#undef isunordered - -template -inline _LIBCPP_INLINE_VISIBILITY -typename std::enable_if -< - std::is_arithmetic<_A1>::value && - std::is_arithmetic<_A2>::value, - bool ->::type -isunordered(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename std::__promote<_A1, _A2>::type type; - return __libcpp_isunordered((type)__lcpp_x, (type)__lcpp_y); -} - -#endif // isunordered - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::signbit; -using ::fpclassify; -using ::isfinite; -using ::isinf; -using ::isnan; -using ::isnormal; -using ::isgreater; -using ::isgreaterequal; -using ::isless; -using ::islessequal; -using ::islessgreater; -using ::isunordered; -using ::isunordered; - -using ::float_t; -using ::double_t; - -// abs - -#if defined(__sun__) -using ::abs; -#endif - -#if !defined(_AIX) && !defined(__sun__) -inline _LIBCPP_INLINE_VISIBILITY -float -abs(float __lcpp_x) _NOEXCEPT {return fabsf(__lcpp_x);} - -inline _LIBCPP_INLINE_VISIBILITY -double -abs(double __lcpp_x) _NOEXCEPT {return fabs(__lcpp_x);} - -inline _LIBCPP_INLINE_VISIBILITY -long double -abs(long double __lcpp_x) _NOEXCEPT {return fabsl(__lcpp_x);} -#endif // !defined(_AIX) - -#ifndef __sun__ - -// acos - -using ::acos; -using ::acosf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float acos(float __lcpp_x) _NOEXCEPT {return acosf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __lcpp_x) _NOEXCEPT {return acosl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -acos(_A1 __lcpp_x) _NOEXCEPT {return acos((double)__lcpp_x);} - -// asin - -using ::asin; -using ::asinf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float asin(float __lcpp_x) _NOEXCEPT {return asinf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double asin(long double __lcpp_x) _NOEXCEPT {return asinl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -asin(_A1 __lcpp_x) _NOEXCEPT {return asin((double)__lcpp_x);} - -// atan - -using ::atan; -using ::atanf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float atan(float __lcpp_x) _NOEXCEPT {return atanf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double atan(long double __lcpp_x) _NOEXCEPT {return atanl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -atan(_A1 __lcpp_x) _NOEXCEPT {return atan((double)__lcpp_x);} - -// atan2 - -using ::atan2; -using ::atan2f; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float atan2(float __lcpp_y, float __lcpp_x) _NOEXCEPT {return atan2f(__lcpp_y, __lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double atan2(long double __lcpp_y, long double __lcpp_x) _NOEXCEPT {return atan2l(__lcpp_y, __lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -atan2(_A1 __lcpp_y, _A2 __lcpp_x) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return atan2((__result_type)__lcpp_y, (__result_type)__lcpp_x); -} - -// ceil - -using ::ceil; -using ::ceilf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float ceil(float __lcpp_x) _NOEXCEPT {return ceilf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double ceil(long double __lcpp_x) _NOEXCEPT {return ceill(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -ceil(_A1 __lcpp_x) _NOEXCEPT {return ceil((double)__lcpp_x);} - -// cos - -using ::cos; -using ::cosf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float cos(float __lcpp_x) _NOEXCEPT {return cosf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double cos(long double __lcpp_x) _NOEXCEPT {return cosl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -cos(_A1 __lcpp_x) _NOEXCEPT {return cos((double)__lcpp_x);} - -// cosh - -using ::cosh; -using ::coshf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float cosh(float __lcpp_x) _NOEXCEPT {return coshf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double cosh(long double __lcpp_x) _NOEXCEPT {return coshl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -cosh(_A1 __lcpp_x) _NOEXCEPT {return cosh((double)__lcpp_x);} - -#endif // __sun__ -// exp - -using ::exp; -using ::expf; - -#ifndef __sun__ - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float exp(float __lcpp_x) _NOEXCEPT {return expf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double exp(long double __lcpp_x) _NOEXCEPT {return expl(__lcpp_x);} -#endif - - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -exp(_A1 __lcpp_x) _NOEXCEPT {return exp((double)__lcpp_x);} - -// fabs - -using ::fabs; -using ::fabsf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float fabs(float __lcpp_x) _NOEXCEPT {return fabsf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double fabs(long double __lcpp_x) _NOEXCEPT {return fabsl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -fabs(_A1 __lcpp_x) _NOEXCEPT {return fabs((double)__lcpp_x);} - -// floor - -using ::floor; -using ::floorf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float floor(float __lcpp_x) _NOEXCEPT {return floorf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double floor(long double __lcpp_x) _NOEXCEPT {return floorl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -floor(_A1 __lcpp_x) _NOEXCEPT {return floor((double)__lcpp_x);} - -// fmod - -#endif //__sun__ -using ::fmod; -using ::fmodf; -#ifndef __sun__ - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float fmod(float __lcpp_x, float __lcpp_y) _NOEXCEPT {return fmodf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double fmod(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return fmodl(__lcpp_x, __lcpp_y);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -fmod(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return fmod((__result_type)__lcpp_x, (__result_type)__lcpp_y); -} - - -// frexp - -using ::frexp; -using ::frexpf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float frexp(float __lcpp_x, int* __lcpp_e) _NOEXCEPT {return frexpf(__lcpp_x, __lcpp_e);} -inline _LIBCPP_INLINE_VISIBILITY long double frexp(long double __lcpp_x, int* __lcpp_e) _NOEXCEPT {return frexpl(__lcpp_x, __lcpp_e);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -frexp(_A1 __lcpp_x, int* __lcpp_e) _NOEXCEPT {return frexp((double)__lcpp_x, __lcpp_e);} - -// ldexp - -using ::ldexp; -using ::ldexpf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float ldexp(float __lcpp_x, int __lcpp_e) _NOEXCEPT {return ldexpf(__lcpp_x, __lcpp_e);} -inline _LIBCPP_INLINE_VISIBILITY long double ldexp(long double __lcpp_x, int __lcpp_e) _NOEXCEPT {return ldexpl(__lcpp_x, __lcpp_e);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -ldexp(_A1 __lcpp_x, int __lcpp_e) _NOEXCEPT {return ldexp((double)__lcpp_x, __lcpp_e);} - -// log - -#endif // __sun__ -using ::log; -using ::logf; -#ifndef __sun__ - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float log(float __lcpp_x) _NOEXCEPT {return logf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double log(long double __lcpp_x) _NOEXCEPT {return logl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -log(_A1 __lcpp_x) _NOEXCEPT {return log((double)__lcpp_x);} - - -// log10 - -using ::log10; -using ::log10f; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float log10(float __lcpp_x) _NOEXCEPT {return log10f(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double log10(long double __lcpp_x) _NOEXCEPT {return log10l(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -log10(_A1 __lcpp_x) _NOEXCEPT {return log10((double)__lcpp_x);} - -// modf - -using ::modf; -using ::modff; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float modf(float __lcpp_x, float* __lcpp_y) _NOEXCEPT {return modff(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double modf(long double __lcpp_x, long double* __lcpp_y) _NOEXCEPT {return modfl(__lcpp_x, __lcpp_y);} -#endif - -// pow - -#endif // __sun__ -using ::pow; -using ::powf; - -#ifndef __sun__ - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float pow(float __lcpp_x, float __lcpp_y) _NOEXCEPT {return powf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double pow(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return powl(__lcpp_x, __lcpp_y);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -pow(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return pow((__result_type)__lcpp_x, (__result_type)__lcpp_y); -} - -// sin - -using ::sin; -using ::sinf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float sin(float __lcpp_x) _NOEXCEPT {return sinf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double sin(long double __lcpp_x) _NOEXCEPT {return sinl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -sin(_A1 __lcpp_x) _NOEXCEPT {return sin((double)__lcpp_x);} - -// sinh - -using ::sinh; -using ::sinhf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float sinh(float __lcpp_x) _NOEXCEPT {return sinhf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double sinh(long double __lcpp_x) _NOEXCEPT {return sinhl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -sinh(_A1 __lcpp_x) _NOEXCEPT {return sinh((double)__lcpp_x);} - -// sqrt - -#endif // __sun__ -using ::sqrt; -using ::sqrtf; - - -#if !(defined(_LIBCPP_MSVCRT) || defined(__sun__) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float sqrt(float __lcpp_x) _NOEXCEPT {return sqrtf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double sqrt(long double __lcpp_x) _NOEXCEPT {return sqrtl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -sqrt(_A1 __lcpp_x) _NOEXCEPT {return sqrt((double)__lcpp_x);} - -// tan - -using ::tan; -using ::tanf; -#ifndef __sun__ - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float tan(float __lcpp_x) _NOEXCEPT {return tanf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double tan(long double __lcpp_x) _NOEXCEPT {return tanl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -tan(_A1 __lcpp_x) _NOEXCEPT {return tan((double)__lcpp_x);} - -// tanh - -using ::tanh; -using ::tanhf; - -#if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) -inline _LIBCPP_INLINE_VISIBILITY float tanh(float __lcpp_x) _NOEXCEPT {return tanhf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double tanh(long double __lcpp_x) _NOEXCEPT {return tanhl(__lcpp_x);} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -tanh(_A1 __lcpp_x) _NOEXCEPT {return tanh((double)__lcpp_x);} - -// acosh - -#ifndef _LIBCPP_MSVCRT -using ::acosh; -using ::acoshf; - -inline _LIBCPP_INLINE_VISIBILITY float acosh(float __lcpp_x) _NOEXCEPT {return acoshf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double acosh(long double __lcpp_x) _NOEXCEPT {return acoshl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -acosh(_A1 __lcpp_x) _NOEXCEPT {return acosh((double)__lcpp_x);} -#endif - -// asinh - -#ifndef _LIBCPP_MSVCRT -using ::asinh; -using ::asinhf; - -inline _LIBCPP_INLINE_VISIBILITY float asinh(float __lcpp_x) _NOEXCEPT {return asinhf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double asinh(long double __lcpp_x) _NOEXCEPT {return asinhl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -asinh(_A1 __lcpp_x) _NOEXCEPT {return asinh((double)__lcpp_x);} -#endif - -// atanh - -#ifndef _LIBCPP_MSVCRT -using ::atanh; -using ::atanhf; - -inline _LIBCPP_INLINE_VISIBILITY float atanh(float __lcpp_x) _NOEXCEPT {return atanhf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double atanh(long double __lcpp_x) _NOEXCEPT {return atanhl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -atanh(_A1 __lcpp_x) _NOEXCEPT {return atanh((double)__lcpp_x);} -#endif - -// cbrt - -#ifndef _LIBCPP_MSVCRT -using ::cbrt; -using ::cbrtf; - -inline _LIBCPP_INLINE_VISIBILITY float cbrt(float __lcpp_x) _NOEXCEPT {return cbrtf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double cbrt(long double __lcpp_x) _NOEXCEPT {return cbrtl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -cbrt(_A1 __lcpp_x) _NOEXCEPT {return cbrt((double)__lcpp_x);} -#endif - -// copysign - -using ::copysign; -using ::copysignf; - -#if !defined(_VC_CRT_MAJOR_VERSION) || (_VC_CRT_MAJOR_VERSION < 12) -inline _LIBCPP_INLINE_VISIBILITY float copysign(float __lcpp_x, - float __lcpp_y) _NOEXCEPT { - return copysignf(__lcpp_x, __lcpp_y); -} -inline _LIBCPP_INLINE_VISIBILITY long double -copysign(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT { - return copysignl(__lcpp_x, __lcpp_y); -} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -copysign(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return copysign((__result_type)__lcpp_x, (__result_type)__lcpp_y); -} - -#ifndef _LIBCPP_MSVCRT - -// erf - -using ::erf; -using ::erff; - -inline _LIBCPP_INLINE_VISIBILITY float erf(float __lcpp_x) _NOEXCEPT {return erff(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double erf(long double __lcpp_x) _NOEXCEPT {return erfl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -erf(_A1 __lcpp_x) _NOEXCEPT {return erf((double)__lcpp_x);} - -// erfc - -using ::erfc; -using ::erfcf; - -inline _LIBCPP_INLINE_VISIBILITY float erfc(float __lcpp_x) _NOEXCEPT {return erfcf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double erfc(long double __lcpp_x) _NOEXCEPT {return erfcl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -erfc(_A1 __lcpp_x) _NOEXCEPT {return erfc((double)__lcpp_x);} - -// exp2 - -using ::exp2; -using ::exp2f; - -inline _LIBCPP_INLINE_VISIBILITY float exp2(float __lcpp_x) _NOEXCEPT {return exp2f(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double exp2(long double __lcpp_x) _NOEXCEPT {return exp2l(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -exp2(_A1 __lcpp_x) _NOEXCEPT {return exp2((double)__lcpp_x);} - -// expm1 - -using ::expm1; -using ::expm1f; - -inline _LIBCPP_INLINE_VISIBILITY float expm1(float __lcpp_x) _NOEXCEPT {return expm1f(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double expm1(long double __lcpp_x) _NOEXCEPT {return expm1l(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -expm1(_A1 __lcpp_x) _NOEXCEPT {return expm1((double)__lcpp_x);} - -// fdim - -using ::fdim; -using ::fdimf; - -inline _LIBCPP_INLINE_VISIBILITY float fdim(float __lcpp_x, float __lcpp_y) _NOEXCEPT {return fdimf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double fdim(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return fdiml(__lcpp_x, __lcpp_y);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -fdim(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return fdim((__result_type)__lcpp_x, (__result_type)__lcpp_y); -} - -// fma - -using ::fmaf; -using ::fma; - -inline _LIBCPP_INLINE_VISIBILITY float fma(float __lcpp_x, float __lcpp_y, float __lcpp_z) _NOEXCEPT {return fmaf(__lcpp_x, __lcpp_y, __lcpp_z);} -inline _LIBCPP_INLINE_VISIBILITY long double fma(long double __lcpp_x, long double __lcpp_y, long double __lcpp_z) _NOEXCEPT {return fmal(__lcpp_x, __lcpp_y, __lcpp_z);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value && - is_arithmetic<_A3>::value, - __promote<_A1, _A2, _A3> ->::type -fma(_A1 __lcpp_x, _A2 __lcpp_y, _A3 __lcpp_z) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2, _A3>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value && - is_same<_A3, __result_type>::value)), ""); - return fma((__result_type)__lcpp_x, (__result_type)__lcpp_y, (__result_type)__lcpp_z); -} - -// fmax - -using ::fmax; -using ::fmaxf; - -inline _LIBCPP_INLINE_VISIBILITY float fmax(float __lcpp_x, float __lcpp_y) _NOEXCEPT {return fmaxf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double fmax(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return fmaxl(__lcpp_x, __lcpp_y);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -fmax(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return fmax((__result_type)__lcpp_x, (__result_type)__lcpp_y); -} - -// fmin - -using ::fmin; -using ::fminf; - -inline _LIBCPP_INLINE_VISIBILITY float fmin(float __lcpp_x, float __lcpp_y) _NOEXCEPT {return fminf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double fmin(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return fminl(__lcpp_x, __lcpp_y);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -fmin(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return fmin((__result_type)__lcpp_x, (__result_type)__lcpp_y); -} - -// hypot - -using ::hypot; -using ::hypotf; - -inline _LIBCPP_INLINE_VISIBILITY float hypot(float __lcpp_x, float __lcpp_y) _NOEXCEPT {return hypotf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double hypot(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return hypotl(__lcpp_x, __lcpp_y);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -hypot(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return hypot((__result_type)__lcpp_x, (__result_type)__lcpp_y); -} - -// ilogb - -using ::ilogb; -using ::ilogbf; - -inline _LIBCPP_INLINE_VISIBILITY int ilogb(float __lcpp_x) _NOEXCEPT {return ilogbf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY int ilogb(long double __lcpp_x) _NOEXCEPT {return ilogbl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, int>::type -ilogb(_A1 __lcpp_x) _NOEXCEPT {return ilogb((double)__lcpp_x);} - -// lgamma - -using ::lgamma; -using ::lgammaf; - -inline _LIBCPP_INLINE_VISIBILITY float lgamma(float __lcpp_x) _NOEXCEPT {return lgammaf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double lgamma(long double __lcpp_x) _NOEXCEPT {return lgammal(__lcpp_x);} - - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -lgamma(_A1 __lcpp_x) _NOEXCEPT {return lgamma((double)__lcpp_x);} - - -// llrint - -using ::llrint; -using ::llrintf; - -inline _LIBCPP_INLINE_VISIBILITY long long llrint(float __lcpp_x) _NOEXCEPT {return llrintf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long long llrint(long double __lcpp_x) _NOEXCEPT {return llrintl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, long long>::type -llrint(_A1 __lcpp_x) _NOEXCEPT {return llrint((double)__lcpp_x);} - -// llround - -using ::llround; -using ::llroundf; - -inline _LIBCPP_INLINE_VISIBILITY long long llround(float __lcpp_x) _NOEXCEPT {return llroundf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long long llround(long double __lcpp_x) _NOEXCEPT {return llroundl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, long long>::type -llround(_A1 __lcpp_x) _NOEXCEPT {return llround((double)__lcpp_x);} - -// log1p - -using ::log1p; -using ::log1pf; - -inline _LIBCPP_INLINE_VISIBILITY float log1p(float __lcpp_x) _NOEXCEPT {return log1pf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double log1p(long double __lcpp_x) _NOEXCEPT {return log1pl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -log1p(_A1 __lcpp_x) _NOEXCEPT {return log1p((double)__lcpp_x);} - -// log2 - -using ::log2; -using ::log2f; - -inline _LIBCPP_INLINE_VISIBILITY float log2(float __lcpp_x) _NOEXCEPT {return log2f(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double log2(long double __lcpp_x) _NOEXCEPT {return log2l(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -log2(_A1 __lcpp_x) _NOEXCEPT {return log2((double)__lcpp_x);} - -// logb - -using ::logb; -using ::logbf; - -inline _LIBCPP_INLINE_VISIBILITY float logb(float __lcpp_x) _NOEXCEPT {return logbf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double logb(long double __lcpp_x) _NOEXCEPT {return logbl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -logb(_A1 __lcpp_x) _NOEXCEPT {return logb((double)__lcpp_x);} - -// lrint - -using ::lrint; -using ::lrintf; - -inline _LIBCPP_INLINE_VISIBILITY long lrint(float __lcpp_x) _NOEXCEPT {return lrintf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long lrint(long double __lcpp_x) _NOEXCEPT {return lrintl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, long>::type -lrint(_A1 __lcpp_x) _NOEXCEPT {return lrint((double)__lcpp_x);} - -// lround - -using ::lround; -using ::lroundf; - -inline _LIBCPP_INLINE_VISIBILITY long lround(float __lcpp_x) _NOEXCEPT {return lroundf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long lround(long double __lcpp_x) _NOEXCEPT {return lroundl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, long>::type -lround(_A1 __lcpp_x) _NOEXCEPT {return lround((double)__lcpp_x);} - -#endif // _LIBCPP_MSVCRT -#endif // __sun__ - -// nan - -#ifndef _LIBCPP_MSVCRT -using ::nan; -using ::nanf; -#endif // _LIBCPP_MSVCRT - -#ifndef __sun__ -#ifndef _LIBCPP_MSVCRT - -// nearbyint - -using ::nearbyint; -using ::nearbyintf; - -inline _LIBCPP_INLINE_VISIBILITY float nearbyint(float __lcpp_x) _NOEXCEPT {return nearbyintf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double nearbyint(long double __lcpp_x) _NOEXCEPT {return nearbyintl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -nearbyint(_A1 __lcpp_x) _NOEXCEPT {return nearbyint((double)__lcpp_x);} - -// nextafter - -using ::nextafter; -using ::nextafterf; - -inline _LIBCPP_INLINE_VISIBILITY float nextafter(float __lcpp_x, float __lcpp_y) _NOEXCEPT {return nextafterf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double nextafter(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return nextafterl(__lcpp_x, __lcpp_y);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -nextafter(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return nextafter((__result_type)__lcpp_x, (__result_type)__lcpp_y); -} - -// nexttoward - -using ::nexttoward; -using ::nexttowardf; - -inline _LIBCPP_INLINE_VISIBILITY float nexttoward(float __lcpp_x, long double __lcpp_y) _NOEXCEPT {return nexttowardf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double nexttoward(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return nexttowardl(__lcpp_x, __lcpp_y);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -nexttoward(_A1 __lcpp_x, long double __lcpp_y) _NOEXCEPT {return nexttoward((double)__lcpp_x, __lcpp_y);} - -// remainder - -using ::remainder; -using ::remainderf; - -inline _LIBCPP_INLINE_VISIBILITY float remainder(float __lcpp_x, float __lcpp_y) _NOEXCEPT {return remainderf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double remainder(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return remainderl(__lcpp_x, __lcpp_y);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -remainder(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return remainder((__result_type)__lcpp_x, (__result_type)__lcpp_y); -} - -// remquo - -using ::remquo; -using ::remquof; - -inline _LIBCPP_INLINE_VISIBILITY float remquo(float __lcpp_x, float __lcpp_y, int* __lcpp_z) _NOEXCEPT {return remquof(__lcpp_x, __lcpp_y, __lcpp_z);} -inline _LIBCPP_INLINE_VISIBILITY long double remquo(long double __lcpp_x, long double __lcpp_y, int* __lcpp_z) _NOEXCEPT {return remquol(__lcpp_x, __lcpp_y, __lcpp_z);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_arithmetic<_A1>::value && - is_arithmetic<_A2>::value, - __promote<_A1, _A2> ->::type -remquo(_A1 __lcpp_x, _A2 __lcpp_y, int* __lcpp_z) _NOEXCEPT -{ - typedef typename __promote<_A1, _A2>::type __result_type; - static_assert((!(is_same<_A1, __result_type>::value && - is_same<_A2, __result_type>::value)), ""); - return remquo((__result_type)__lcpp_x, (__result_type)__lcpp_y, __lcpp_z); -} - -// rint - -using ::rint; -using ::rintf; - -inline _LIBCPP_INLINE_VISIBILITY float rint(float __lcpp_x) _NOEXCEPT {return rintf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double rint(long double __lcpp_x) _NOEXCEPT {return rintl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -rint(_A1 __lcpp_x) _NOEXCEPT {return rint((double)__lcpp_x);} - -// round - -using ::round; -using ::roundf; - -inline _LIBCPP_INLINE_VISIBILITY float round(float __lcpp_x) _NOEXCEPT {return roundf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double round(long double __lcpp_x) _NOEXCEPT {return roundl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -round(_A1 __lcpp_x) _NOEXCEPT {return round((double)__lcpp_x);} - -// scalbln - -using ::scalbln; -using ::scalblnf; - -inline _LIBCPP_INLINE_VISIBILITY float scalbln(float __lcpp_x, long __lcpp_y) _NOEXCEPT {return scalblnf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double scalbln(long double __lcpp_x, long __lcpp_y) _NOEXCEPT {return scalblnl(__lcpp_x, __lcpp_y);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -scalbln(_A1 __lcpp_x, long __lcpp_y) _NOEXCEPT {return scalbln((double)__lcpp_x, __lcpp_y);} - -// scalbn - -using ::scalbn; -using ::scalbnf; - -inline _LIBCPP_INLINE_VISIBILITY float scalbn(float __lcpp_x, int __lcpp_y) _NOEXCEPT {return scalbnf(__lcpp_x, __lcpp_y);} -inline _LIBCPP_INLINE_VISIBILITY long double scalbn(long double __lcpp_x, int __lcpp_y) _NOEXCEPT {return scalbnl(__lcpp_x, __lcpp_y);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -scalbn(_A1 __lcpp_x, int __lcpp_y) _NOEXCEPT {return scalbn((double)__lcpp_x, __lcpp_y);} - -// tgamma - -using ::tgamma; -using ::tgammaf; - -inline _LIBCPP_INLINE_VISIBILITY float tgamma(float __lcpp_x) _NOEXCEPT {return tgammaf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double tgamma(long double __lcpp_x) _NOEXCEPT {return tgammal(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -tgamma(_A1 __lcpp_x) _NOEXCEPT {return tgamma((double)__lcpp_x);} - -// trunc - -using ::trunc; -using ::truncf; - -inline _LIBCPP_INLINE_VISIBILITY float trunc(float __lcpp_x) _NOEXCEPT {return truncf(__lcpp_x);} -inline _LIBCPP_INLINE_VISIBILITY long double trunc(long double __lcpp_x) _NOEXCEPT {return truncl(__lcpp_x);} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if::value, double>::type -trunc(_A1 __lcpp_x) _NOEXCEPT {return trunc((double)__lcpp_x);} - -#endif // !_LIBCPP_MSVCRT - -using ::acosl; -using ::asinl; -using ::atanl; -using ::atan2l; -using ::ceill; -using ::cosl; -using ::coshl; -using ::expl; -using ::fabsl; -using ::floorl; -using ::fmodl; -using ::frexpl; -using ::ldexpl; -using ::logl; -using ::log10l; -using ::modfl; -using ::powl; -using ::sinl; -using ::sinhl; -using ::sqrtl; -using ::tanl; -#ifndef _LIBCPP_MSVCRT -using ::tanhl; -using ::acoshl; -using ::asinhl; -using ::atanhl; -using ::cbrtl; -#endif // !_LIBCPP_MSVCRT -using ::copysignl; -#ifndef _LIBCPP_MSVCRT -using ::erfl; -using ::erfcl; -using ::exp2l; -using ::expm1l; -using ::fdiml; -using ::fmal; -using ::fmaxl; -using ::fminl; -using ::hypotl; -using ::ilogbl; -using ::lgammal; -using ::llrintl; -using ::llroundl; -using ::log1pl; -using ::log2l; -using ::logbl; -using ::lrintl; -using ::lroundl; -using ::nanl; -using ::nearbyintl; -using ::nextafterl; -using ::nexttowardl; -using ::remainderl; -using ::remquol; -using ::rintl; -using ::roundl; -using ::scalblnl; -using ::scalbnl; -using ::tgammal; -using ::truncl; -#endif // !_LIBCPP_MSVCRT - -#else -using ::lgamma; -using ::lgammaf; -#endif // __sun__ -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CMATH diff --git a/libcxx/include/codecvt b/libcxx/include/codecvt deleted file mode 100644 index 6eff107cd..000000000 --- a/libcxx/include/codecvt +++ /dev/null @@ -1,550 +0,0 @@ -// -*- C++ -*- -//===-------------------------- codecvt -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CODECVT -#define _LIBCPP_CODECVT - -/* - codecvt synopsis - -namespace std -{ - -enum codecvt_mode -{ - consume_header = 4, - generate_header = 2, - little_endian = 1 -}; - -template -class codecvt_utf8 - : public codecvt -{ - explicit codecvt_utf8(size_t refs = 0); - ~codecvt_utf8(); -}; - -template -class codecvt_utf16 - : public codecvt -{ - explicit codecvt_utf16(size_t refs = 0); - ~codecvt_utf16(); -}; - -template -class codecvt_utf8_utf16 - : public codecvt -{ - explicit codecvt_utf8_utf16(size_t refs = 0); - ~codecvt_utf8_utf16(); -}; - -} // std - -*/ - -#include <__config> -#include <__locale> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -enum codecvt_mode -{ - consume_header = 4, - generate_header = 2, - little_endian = 1 -}; - -// codecvt_utf8 - -template class __codecvt_utf8; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf8 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef wchar_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf8(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf8 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef char16_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf8(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf8 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef char32_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf8(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template -class _LIBCPP_TYPE_VIS_ONLY codecvt_utf8 - : public __codecvt_utf8<_Elem> -{ -public: - _LIBCPP_ALWAYS_INLINE - explicit codecvt_utf8(size_t __refs = 0) - : __codecvt_utf8<_Elem>(__refs, _Maxcode, _Mode) {} - - _LIBCPP_ALWAYS_INLINE - ~codecvt_utf8() {} -}; - -// codecvt_utf16 - -template class __codecvt_utf16; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf16 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef wchar_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf16 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef wchar_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf16 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef char16_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf16 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef char16_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf16 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef char32_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf16 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef char32_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf16(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template -class _LIBCPP_TYPE_VIS_ONLY codecvt_utf16 - : public __codecvt_utf16<_Elem, _Mode & little_endian> -{ -public: - _LIBCPP_ALWAYS_INLINE - explicit codecvt_utf16(size_t __refs = 0) - : __codecvt_utf16<_Elem, _Mode & little_endian>(__refs, _Maxcode, _Mode) {} - - _LIBCPP_ALWAYS_INLINE - ~codecvt_utf16() {} -}; - -// codecvt_utf8_utf16 - -template class __codecvt_utf8_utf16; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef wchar_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf8_utf16(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef char32_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf8_utf16(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template <> -class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16 - : public codecvt -{ - unsigned long _Maxcode_; - codecvt_mode _Mode_; -public: - typedef char16_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - _LIBCPP_ALWAYS_INLINE - explicit __codecvt_utf8_utf16(size_t __refs, unsigned long _Maxcode, - codecvt_mode _Mode) - : codecvt(__refs), _Maxcode_(_Maxcode), - _Mode_(_Mode) {} -protected: - virtual result - do_out(state_type& __st, - const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual result - do_in(state_type& __st, - const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, - intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; - virtual result - do_unshift(state_type& __st, - extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; - virtual int do_encoding() const throw(); - virtual bool do_always_noconv() const throw(); - virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, - size_t __mx) const; - virtual int do_max_length() const throw(); -}; - -template -class _LIBCPP_TYPE_VIS_ONLY codecvt_utf8_utf16 - : public __codecvt_utf8_utf16<_Elem> -{ -public: - _LIBCPP_ALWAYS_INLINE - explicit codecvt_utf8_utf16(size_t __refs = 0) - : __codecvt_utf8_utf16<_Elem>(__refs, _Maxcode, _Mode) {} - - _LIBCPP_ALWAYS_INLINE - ~codecvt_utf8_utf16() {} -}; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CODECVT diff --git a/libcxx/include/complex b/libcxx/include/complex deleted file mode 100644 index 2943da1d7..000000000 --- a/libcxx/include/complex +++ /dev/null @@ -1,1567 +0,0 @@ -// -*- C++ -*- -//===--------------------------- complex ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_COMPLEX -#define _LIBCPP_COMPLEX - -/* - complex synopsis - -namespace std -{ - -template -class complex -{ -public: - typedef T value_type; - - complex(const T& re = T(), const T& im = T()); // constexpr in C++14 - complex(const complex&); // constexpr in C++14 - template complex(const complex&); // constexpr in C++14 - - T real() const; // constexpr in C++14 - T imag() const; // constexpr in C++14 - - void real(T); - void imag(T); - - complex& operator= (const T&); - complex& operator+=(const T&); - complex& operator-=(const T&); - complex& operator*=(const T&); - complex& operator/=(const T&); - - complex& operator=(const complex&); - template complex& operator= (const complex&); - template complex& operator+=(const complex&); - template complex& operator-=(const complex&); - template complex& operator*=(const complex&); - template complex& operator/=(const complex&); -}; - -template<> -class complex -{ -public: - typedef float value_type; - - constexpr complex(float re = 0.0f, float im = 0.0f); - explicit constexpr complex(const complex&); - explicit constexpr complex(const complex&); - - constexpr float real() const; - void real(float); - constexpr float imag() const; - void imag(float); - - complex& operator= (float); - complex& operator+=(float); - complex& operator-=(float); - complex& operator*=(float); - complex& operator/=(float); - - complex& operator=(const complex&); - template complex& operator= (const complex&); - template complex& operator+=(const complex&); - template complex& operator-=(const complex&); - template complex& operator*=(const complex&); - template complex& operator/=(const complex&); -}; - -template<> -class complex -{ -public: - typedef double value_type; - - constexpr complex(double re = 0.0, double im = 0.0); - constexpr complex(const complex&); - explicit constexpr complex(const complex&); - - constexpr double real() const; - void real(double); - constexpr double imag() const; - void imag(double); - - complex& operator= (double); - complex& operator+=(double); - complex& operator-=(double); - complex& operator*=(double); - complex& operator/=(double); - complex& operator=(const complex&); - - template complex& operator= (const complex&); - template complex& operator+=(const complex&); - template complex& operator-=(const complex&); - template complex& operator*=(const complex&); - template complex& operator/=(const complex&); -}; - -template<> -class complex -{ -public: - typedef long double value_type; - - constexpr complex(long double re = 0.0L, long double im = 0.0L); - constexpr complex(const complex&); - constexpr complex(const complex&); - - constexpr long double real() const; - void real(long double); - constexpr long double imag() const; - void imag(long double); - - complex& operator=(const complex&); - complex& operator= (long double); - complex& operator+=(long double); - complex& operator-=(long double); - complex& operator*=(long double); - complex& operator/=(long double); - - template complex& operator= (const complex&); - template complex& operator+=(const complex&); - template complex& operator-=(const complex&); - template complex& operator*=(const complex&); - template complex& operator/=(const complex&); -}; - -// 26.3.6 operators: -template complex operator+(const complex&, const complex&); -template complex operator+(const complex&, const T&); -template complex operator+(const T&, const complex&); -template complex operator-(const complex&, const complex&); -template complex operator-(const complex&, const T&); -template complex operator-(const T&, const complex&); -template complex operator*(const complex&, const complex&); -template complex operator*(const complex&, const T&); -template complex operator*(const T&, const complex&); -template complex operator/(const complex&, const complex&); -template complex operator/(const complex&, const T&); -template complex operator/(const T&, const complex&); -template complex operator+(const complex&); -template complex operator-(const complex&); -template bool operator==(const complex&, const complex&); // constexpr in C++14 -template bool operator==(const complex&, const T&); // constexpr in C++14 -template bool operator==(const T&, const complex&); // constexpr in C++14 -template bool operator!=(const complex&, const complex&); // constexpr in C++14 -template bool operator!=(const complex&, const T&); // constexpr in C++14 -template bool operator!=(const T&, const complex&); // constexpr in C++14 - -template - basic_istream& - operator>>(basic_istream&, complex&); -template - basic_ostream& - operator<<(basic_ostream&, const complex&); - -// 26.3.7 values: - -template T real(const complex&); // constexpr in C++14 - long double real(long double); // constexpr in C++14 - double real(double); // constexpr in C++14 -template double real(T); // constexpr in C++14 - float real(float); // constexpr in C++14 - -template T imag(const complex&); // constexpr in C++14 - long double imag(long double); // constexpr in C++14 - double imag(double); // constexpr in C++14 -template double imag(T); // constexpr in C++14 - float imag(float); // constexpr in C++14 - -template T abs(const complex&); - -template T arg(const complex&); - long double arg(long double); - double arg(double); -template double arg(T); - float arg(float); - -template T norm(const complex&); - long double norm(long double); - double norm(double); -template double norm(T); - float norm(float); - -template complex conj(const complex&); - complex conj(long double); - complex conj(double); -template complex conj(T); - complex conj(float); - -template complex proj(const complex&); - complex proj(long double); - complex proj(double); -template complex proj(T); - complex proj(float); - -template complex polar(const T&, const T& = 0); - -// 26.3.8 transcendentals: -template complex acos(const complex&); -template complex asin(const complex&); -template complex atan(const complex&); -template complex acosh(const complex&); -template complex asinh(const complex&); -template complex atanh(const complex&); -template complex cos (const complex&); -template complex cosh (const complex&); -template complex exp (const complex&); -template complex log (const complex&); -template complex log10(const complex&); - -template complex pow(const complex&, const T&); -template complex pow(const complex&, const complex&); -template complex pow(const T&, const complex&); - -template complex sin (const complex&); -template complex sinh (const complex&); -template complex sqrt (const complex&); -template complex tan (const complex&); -template complex tanh (const complex&); - -template - basic_istream& - operator>>(basic_istream& is, complex& x); - -template - basic_ostream& - operator<<(basic_ostream& o, const complex& x); - -} // std - -*/ - -#include <__config> -#include -#include -#include -#include -#if defined(_LIBCPP_NO_EXCEPTIONS) - #include -#endif - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template class _LIBCPP_TYPE_VIS_ONLY complex; - -template complex<_Tp> operator*(const complex<_Tp>& __z, const complex<_Tp>& __w); -template complex<_Tp> operator/(const complex<_Tp>& __x, const complex<_Tp>& __y); - -template -class _LIBCPP_TYPE_VIS_ONLY complex -{ -public: - typedef _Tp value_type; -private: - value_type __re_; - value_type __im_; -public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - complex(const value_type& __re = value_type(), const value_type& __im = value_type()) - : __re_(__re), __im_(__im) {} - template _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 - complex(const complex<_Xp>& __c) - : __re_(__c.real()), __im_(__c.imag()) {} - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 value_type real() const {return __re_;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 value_type imag() const {return __im_;} - - _LIBCPP_INLINE_VISIBILITY void real(value_type __re) {__re_ = __re;} - _LIBCPP_INLINE_VISIBILITY void imag(value_type __im) {__im_ = __im;} - - _LIBCPP_INLINE_VISIBILITY complex& operator= (const value_type& __re) - {__re_ = __re; __im_ = value_type(); return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator+=(const value_type& __re) {__re_ += __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator-=(const value_type& __re) {__re_ -= __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator*=(const value_type& __re) {__re_ *= __re; __im_ *= __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator/=(const value_type& __re) {__re_ /= __re; __im_ /= __re; return *this;} - - template _LIBCPP_INLINE_VISIBILITY complex& operator= (const complex<_Xp>& __c) - { - __re_ = __c.real(); - __im_ = __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator+=(const complex<_Xp>& __c) - { - __re_ += __c.real(); - __im_ += __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator-=(const complex<_Xp>& __c) - { - __re_ -= __c.real(); - __im_ -= __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator*=(const complex<_Xp>& __c) - { - *this = *this * complex(__c.real(), __c.imag()); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator/=(const complex<_Xp>& __c) - { - *this = *this / complex(__c.real(), __c.imag()); - return *this; - } -}; - -template<> class _LIBCPP_TYPE_VIS_ONLY complex; -template<> class _LIBCPP_TYPE_VIS_ONLY complex; - -template<> -class _LIBCPP_TYPE_VIS_ONLY complex -{ - float __re_; - float __im_; -public: - typedef float value_type; - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR complex(float __re = 0.0f, float __im = 0.0f) - : __re_(__re), __im_(__im) {} - explicit _LIBCPP_CONSTEXPR complex(const complex& __c); - explicit _LIBCPP_CONSTEXPR complex(const complex& __c); - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR float real() const {return __re_;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR float imag() const {return __im_;} - - _LIBCPP_INLINE_VISIBILITY void real(value_type __re) {__re_ = __re;} - _LIBCPP_INLINE_VISIBILITY void imag(value_type __im) {__im_ = __im;} - - _LIBCPP_INLINE_VISIBILITY complex& operator= (float __re) - {__re_ = __re; __im_ = value_type(); return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator+=(float __re) {__re_ += __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator-=(float __re) {__re_ -= __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator*=(float __re) {__re_ *= __re; __im_ *= __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator/=(float __re) {__re_ /= __re; __im_ /= __re; return *this;} - - template _LIBCPP_INLINE_VISIBILITY complex& operator= (const complex<_Xp>& __c) - { - __re_ = __c.real(); - __im_ = __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator+=(const complex<_Xp>& __c) - { - __re_ += __c.real(); - __im_ += __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator-=(const complex<_Xp>& __c) - { - __re_ -= __c.real(); - __im_ -= __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator*=(const complex<_Xp>& __c) - { - *this = *this * complex(__c.real(), __c.imag()); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator/=(const complex<_Xp>& __c) - { - *this = *this / complex(__c.real(), __c.imag()); - return *this; - } -}; - -template<> -class _LIBCPP_TYPE_VIS_ONLY complex -{ - double __re_; - double __im_; -public: - typedef double value_type; - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR complex(double __re = 0.0, double __im = 0.0) - : __re_(__re), __im_(__im) {} - _LIBCPP_CONSTEXPR complex(const complex& __c); - explicit _LIBCPP_CONSTEXPR complex(const complex& __c); - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR double real() const {return __re_;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR double imag() const {return __im_;} - - _LIBCPP_INLINE_VISIBILITY void real(value_type __re) {__re_ = __re;} - _LIBCPP_INLINE_VISIBILITY void imag(value_type __im) {__im_ = __im;} - - _LIBCPP_INLINE_VISIBILITY complex& operator= (double __re) - {__re_ = __re; __im_ = value_type(); return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator+=(double __re) {__re_ += __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator-=(double __re) {__re_ -= __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator*=(double __re) {__re_ *= __re; __im_ *= __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator/=(double __re) {__re_ /= __re; __im_ /= __re; return *this;} - - template _LIBCPP_INLINE_VISIBILITY complex& operator= (const complex<_Xp>& __c) - { - __re_ = __c.real(); - __im_ = __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator+=(const complex<_Xp>& __c) - { - __re_ += __c.real(); - __im_ += __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator-=(const complex<_Xp>& __c) - { - __re_ -= __c.real(); - __im_ -= __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator*=(const complex<_Xp>& __c) - { - *this = *this * complex(__c.real(), __c.imag()); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator/=(const complex<_Xp>& __c) - { - *this = *this / complex(__c.real(), __c.imag()); - return *this; - } -}; - -template<> -class _LIBCPP_TYPE_VIS_ONLY complex -{ - long double __re_; - long double __im_; -public: - typedef long double value_type; - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR complex(long double __re = 0.0L, long double __im = 0.0L) - : __re_(__re), __im_(__im) {} - _LIBCPP_CONSTEXPR complex(const complex& __c); - _LIBCPP_CONSTEXPR complex(const complex& __c); - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR long double real() const {return __re_;} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR long double imag() const {return __im_;} - - _LIBCPP_INLINE_VISIBILITY void real(value_type __re) {__re_ = __re;} - _LIBCPP_INLINE_VISIBILITY void imag(value_type __im) {__im_ = __im;} - - _LIBCPP_INLINE_VISIBILITY complex& operator= (long double __re) - {__re_ = __re; __im_ = value_type(); return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator+=(long double __re) {__re_ += __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator-=(long double __re) {__re_ -= __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator*=(long double __re) {__re_ *= __re; __im_ *= __re; return *this;} - _LIBCPP_INLINE_VISIBILITY complex& operator/=(long double __re) {__re_ /= __re; __im_ /= __re; return *this;} - - template _LIBCPP_INLINE_VISIBILITY complex& operator= (const complex<_Xp>& __c) - { - __re_ = __c.real(); - __im_ = __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator+=(const complex<_Xp>& __c) - { - __re_ += __c.real(); - __im_ += __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator-=(const complex<_Xp>& __c) - { - __re_ -= __c.real(); - __im_ -= __c.imag(); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator*=(const complex<_Xp>& __c) - { - *this = *this * complex(__c.real(), __c.imag()); - return *this; - } - template _LIBCPP_INLINE_VISIBILITY complex& operator/=(const complex<_Xp>& __c) - { - *this = *this / complex(__c.real(), __c.imag()); - return *this; - } -}; - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -complex::complex(const complex& __c) - : __re_(__c.real()), __im_(__c.imag()) {} - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -complex::complex(const complex& __c) - : __re_(__c.real()), __im_(__c.imag()) {} - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -complex::complex(const complex& __c) - : __re_(__c.real()), __im_(__c.imag()) {} - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -complex::complex(const complex& __c) - : __re_(__c.real()), __im_(__c.imag()) {} - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -complex::complex(const complex& __c) - : __re_(__c.real()), __im_(__c.imag()) {} - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -complex::complex(const complex& __c) - : __re_(__c.real()), __im_(__c.imag()) {} - -// 26.3.6 operators: - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator+(const complex<_Tp>& __x, const complex<_Tp>& __y) -{ - complex<_Tp> __t(__x); - __t += __y; - return __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator+(const complex<_Tp>& __x, const _Tp& __y) -{ - complex<_Tp> __t(__x); - __t += __y; - return __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator+(const _Tp& __x, const complex<_Tp>& __y) -{ - complex<_Tp> __t(__y); - __t += __x; - return __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator-(const complex<_Tp>& __x, const complex<_Tp>& __y) -{ - complex<_Tp> __t(__x); - __t -= __y; - return __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator-(const complex<_Tp>& __x, const _Tp& __y) -{ - complex<_Tp> __t(__x); - __t -= __y; - return __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator-(const _Tp& __x, const complex<_Tp>& __y) -{ - complex<_Tp> __t(-__y); - __t += __x; - return __t; -} - -template -complex<_Tp> -operator*(const complex<_Tp>& __z, const complex<_Tp>& __w) -{ - _Tp __a = __z.real(); - _Tp __b = __z.imag(); - _Tp __c = __w.real(); - _Tp __d = __w.imag(); - _Tp __ac = __a * __c; - _Tp __bd = __b * __d; - _Tp __ad = __a * __d; - _Tp __bc = __b * __c; - _Tp __x = __ac - __bd; - _Tp __y = __ad + __bc; - if (isnan(__x) && isnan(__y)) - { - bool __recalc = false; - if (isinf(__a) || isinf(__b)) - { - __a = copysign(isinf(__a) ? _Tp(1) : _Tp(0), __a); - __b = copysign(isinf(__b) ? _Tp(1) : _Tp(0), __b); - if (isnan(__c)) - __c = copysign(_Tp(0), __c); - if (isnan(__d)) - __d = copysign(_Tp(0), __d); - __recalc = true; - } - if (isinf(__c) || isinf(__d)) - { - __c = copysign(isinf(__c) ? _Tp(1) : _Tp(0), __c); - __d = copysign(isinf(__d) ? _Tp(1) : _Tp(0), __d); - if (isnan(__a)) - __a = copysign(_Tp(0), __a); - if (isnan(__b)) - __b = copysign(_Tp(0), __b); - __recalc = true; - } - if (!__recalc && (isinf(__ac) || isinf(__bd) || - isinf(__ad) || isinf(__bc))) - { - if (isnan(__a)) - __a = copysign(_Tp(0), __a); - if (isnan(__b)) - __b = copysign(_Tp(0), __b); - if (isnan(__c)) - __c = copysign(_Tp(0), __c); - if (isnan(__d)) - __d = copysign(_Tp(0), __d); - __recalc = true; - } - if (__recalc) - { - __x = _Tp(INFINITY) * (__a * __c - __b * __d); - __y = _Tp(INFINITY) * (__a * __d + __b * __c); - } - } - return complex<_Tp>(__x, __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator*(const complex<_Tp>& __x, const _Tp& __y) -{ - complex<_Tp> __t(__x); - __t *= __y; - return __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator*(const _Tp& __x, const complex<_Tp>& __y) -{ - complex<_Tp> __t(__y); - __t *= __x; - return __t; -} - -template -complex<_Tp> -operator/(const complex<_Tp>& __z, const complex<_Tp>& __w) -{ - int __ilogbw = 0; - _Tp __a = __z.real(); - _Tp __b = __z.imag(); - _Tp __c = __w.real(); - _Tp __d = __w.imag(); - _Tp __logbw = logb(fmax(fabs(__c), fabs(__d))); - if (isfinite(__logbw)) - { - __ilogbw = static_cast(__logbw); - __c = scalbn(__c, -__ilogbw); - __d = scalbn(__d, -__ilogbw); - } - _Tp __denom = __c * __c + __d * __d; - _Tp __x = scalbn((__a * __c + __b * __d) / __denom, -__ilogbw); - _Tp __y = scalbn((__b * __c - __a * __d) / __denom, -__ilogbw); - if (isnan(__x) && isnan(__y)) - { - if ((__denom == _Tp(0)) && (!isnan(__a) || !isnan(__b))) - { - __x = copysign(_Tp(INFINITY), __c) * __a; - __y = copysign(_Tp(INFINITY), __c) * __b; - } - else if ((isinf(__a) || isinf(__b)) && isfinite(__c) && isfinite(__d)) - { - __a = copysign(isinf(__a) ? _Tp(1) : _Tp(0), __a); - __b = copysign(isinf(__b) ? _Tp(1) : _Tp(0), __b); - __x = _Tp(INFINITY) * (__a * __c + __b * __d); - __y = _Tp(INFINITY) * (__b * __c - __a * __d); - } - else if (isinf(__logbw) && __logbw > _Tp(0) && isfinite(__a) && isfinite(__b)) - { - __c = copysign(isinf(__c) ? _Tp(1) : _Tp(0), __c); - __d = copysign(isinf(__d) ? _Tp(1) : _Tp(0), __d); - __x = _Tp(0) * (__a * __c + __b * __d); - __y = _Tp(0) * (__b * __c - __a * __d); - } - } - return complex<_Tp>(__x, __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator/(const complex<_Tp>& __x, const _Tp& __y) -{ - return complex<_Tp>(__x.real() / __y, __x.imag() / __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator/(const _Tp& __x, const complex<_Tp>& __y) -{ - complex<_Tp> __t(__x); - __t /= __y; - return __t; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator+(const complex<_Tp>& __x) -{ - return __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -operator-(const complex<_Tp>& __x) -{ - return complex<_Tp>(-__x.real(), -__x.imag()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator==(const complex<_Tp>& __x, const complex<_Tp>& __y) -{ - return __x.real() == __y.real() && __x.imag() == __y.imag(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator==(const complex<_Tp>& __x, const _Tp& __y) -{ - return __x.real() == __y && __x.imag() == 0; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator==(const _Tp& __x, const complex<_Tp>& __y) -{ - return __x == __y.real() && 0 == __y.imag(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator!=(const complex<_Tp>& __x, const complex<_Tp>& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator!=(const complex<_Tp>& __x, const _Tp& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -bool -operator!=(const _Tp& __x, const complex<_Tp>& __y) -{ - return !(__x == __y); -} - -// 26.3.7 values: - -// real - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp -real(const complex<_Tp>& __c) -{ - return __c.real(); -} - -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -long double -real(long double __re) -{ - return __re; -} - -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -double -real(double __re) -{ - return __re; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -typename enable_if -< - is_integral<_Tp>::value, - double ->::type -real(_Tp __re) -{ - return __re; -} - -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -float -real(float __re) -{ - return __re; -} - -// imag - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp -imag(const complex<_Tp>& __c) -{ - return __c.imag(); -} - -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -long double -imag(long double __re) -{ - return 0; -} - -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -double -imag(double __re) -{ - return 0; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -typename enable_if -< - is_integral<_Tp>::value, - double ->::type -imag(_Tp __re) -{ - return 0; -} - -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -float -imag(float __re) -{ - return 0; -} - -// abs - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -abs(const complex<_Tp>& __c) -{ - return hypot(__c.real(), __c.imag()); -} - -// arg - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -arg(const complex<_Tp>& __c) -{ - return atan2(__c.imag(), __c.real()); -} - -inline _LIBCPP_INLINE_VISIBILITY -long double -arg(long double __re) -{ - return atan2l(0.L, __re); -} - -inline _LIBCPP_INLINE_VISIBILITY -double -arg(double __re) -{ - return atan2(0., __re); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value, - double ->::type -arg(_Tp __re) -{ - return atan2(0., __re); -} - -inline _LIBCPP_INLINE_VISIBILITY -float -arg(float __re) -{ - return atan2f(0.F, __re); -} - -// norm - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp -norm(const complex<_Tp>& __c) -{ - if (isinf(__c.real())) - return abs(__c.real()); - if (isinf(__c.imag())) - return abs(__c.imag()); - return __c.real() * __c.real() + __c.imag() * __c.imag(); -} - -inline _LIBCPP_INLINE_VISIBILITY -long double -norm(long double __re) -{ - return __re * __re; -} - -inline _LIBCPP_INLINE_VISIBILITY -double -norm(double __re) -{ - return __re * __re; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value, - double ->::type -norm(_Tp __re) -{ - return (double)__re * __re; -} - -inline _LIBCPP_INLINE_VISIBILITY -float -norm(float __re) -{ - return __re * __re; -} - -// conj - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -conj(const complex<_Tp>& __c) -{ - return complex<_Tp>(__c.real(), -__c.imag()); -} - -inline _LIBCPP_INLINE_VISIBILITY -complex -conj(long double __re) -{ - return complex(__re); -} - -inline _LIBCPP_INLINE_VISIBILITY -complex -conj(double __re) -{ - return complex(__re); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value, - complex ->::type -conj(_Tp __re) -{ - return complex(__re); -} - -inline _LIBCPP_INLINE_VISIBILITY -complex -conj(float __re) -{ - return complex(__re); -} - -// proj - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -proj(const complex<_Tp>& __c) -{ - std::complex<_Tp> __r = __c; - if (isinf(__c.real()) || isinf(__c.imag())) - __r = complex<_Tp>(INFINITY, copysign(_Tp(0), __c.imag())); - return __r; -} - -inline _LIBCPP_INLINE_VISIBILITY -complex -proj(long double __re) -{ - if (isinf(__re)) - __re = abs(__re); - return complex(__re); -} - -inline _LIBCPP_INLINE_VISIBILITY -complex -proj(double __re) -{ - if (isinf(__re)) - __re = abs(__re); - return complex(__re); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_integral<_Tp>::value, - complex ->::type -proj(_Tp __re) -{ - return complex(__re); -} - -inline _LIBCPP_INLINE_VISIBILITY -complex -proj(float __re) -{ - if (isinf(__re)) - __re = abs(__re); - return complex(__re); -} - -// polar - -template -complex<_Tp> -polar(const _Tp& __rho, const _Tp& __theta = _Tp(0)) -{ - if (isnan(__rho) || signbit(__rho)) - return complex<_Tp>(_Tp(NAN), _Tp(NAN)); - if (isnan(__theta)) - { - if (isinf(__rho)) - return complex<_Tp>(__rho, __theta); - return complex<_Tp>(__theta, __theta); - } - if (isinf(__theta)) - { - if (isinf(__rho)) - return complex<_Tp>(__rho, _Tp(NAN)); - return complex<_Tp>(_Tp(NAN), _Tp(NAN)); - } - _Tp __x = __rho * cos(__theta); - if (isnan(__x)) - __x = 0; - _Tp __y = __rho * sin(__theta); - if (isnan(__y)) - __y = 0; - return complex<_Tp>(__x, __y); -} - -// log - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -log(const complex<_Tp>& __x) -{ - return complex<_Tp>(log(abs(__x)), arg(__x)); -} - -// log10 - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -log10(const complex<_Tp>& __x) -{ - return log(__x) / log(_Tp(10)); -} - -// sqrt - -template -complex<_Tp> -sqrt(const complex<_Tp>& __x) -{ - if (isinf(__x.imag())) - return complex<_Tp>(_Tp(INFINITY), __x.imag()); - if (isinf(__x.real())) - { - if (__x.real() > _Tp(0)) - return complex<_Tp>(__x.real(), isnan(__x.imag()) ? __x.imag() : copysign(_Tp(0), __x.imag())); - return complex<_Tp>(isnan(__x.imag()) ? __x.imag() : _Tp(0), copysign(__x.real(), __x.imag())); - } - return polar(sqrt(abs(__x)), arg(__x) / _Tp(2)); -} - -// exp - -template -complex<_Tp> -exp(const complex<_Tp>& __x) -{ - _Tp __i = __x.imag(); - if (isinf(__x.real())) - { - if (__x.real() < _Tp(0)) - { - if (!isfinite(__i)) - __i = _Tp(1); - } - else if (__i == 0 || !isfinite(__i)) - { - if (isinf(__i)) - __i = _Tp(NAN); - return complex<_Tp>(__x.real(), __i); - } - } - else if (isnan(__x.real()) && __x.imag() == 0) - return __x; - _Tp __e = exp(__x.real()); - return complex<_Tp>(__e * cos(__i), __e * sin(__i)); -} - -// pow - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -pow(const complex<_Tp>& __x, const complex<_Tp>& __y) -{ - return exp(__y * log(__x)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -complex::type> -pow(const complex<_Tp>& __x, const complex<_Up>& __y) -{ - typedef complex::type> result_type; - return _VSTD::pow(result_type(__x), result_type(__y)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_arithmetic<_Up>::value, - complex::type> ->::type -pow(const complex<_Tp>& __x, const _Up& __y) -{ - typedef complex::type> result_type; - return _VSTD::pow(result_type(__x), result_type(__y)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_arithmetic<_Tp>::value, - complex::type> ->::type -pow(const _Tp& __x, const complex<_Up>& __y) -{ - typedef complex::type> result_type; - return _VSTD::pow(result_type(__x), result_type(__y)); -} - -// asinh - -template -complex<_Tp> -asinh(const complex<_Tp>& __x) -{ - const _Tp __pi(atan2(+0., -0.)); - if (isinf(__x.real())) - { - if (isnan(__x.imag())) - return __x; - if (isinf(__x.imag())) - return complex<_Tp>(__x.real(), copysign(__pi * _Tp(0.25), __x.imag())); - return complex<_Tp>(__x.real(), copysign(_Tp(0), __x.imag())); - } - if (isnan(__x.real())) - { - if (isinf(__x.imag())) - return complex<_Tp>(__x.imag(), __x.real()); - if (__x.imag() == 0) - return __x; - return complex<_Tp>(__x.real(), __x.real()); - } - if (isinf(__x.imag())) - return complex<_Tp>(copysign(__x.imag(), __x.real()), copysign(__pi/_Tp(2), __x.imag())); - complex<_Tp> __z = log(__x + sqrt(pow(__x, _Tp(2)) + _Tp(1))); - return complex<_Tp>(copysign(__z.real(), __x.real()), copysign(__z.imag(), __x.imag())); -} - -// acosh - -template -complex<_Tp> -acosh(const complex<_Tp>& __x) -{ - const _Tp __pi(atan2(+0., -0.)); - if (isinf(__x.real())) - { - if (isnan(__x.imag())) - return complex<_Tp>(abs(__x.real()), __x.imag()); - if (isinf(__x.imag())) - { - if (__x.real() > 0) - return complex<_Tp>(__x.real(), copysign(__pi * _Tp(0.25), __x.imag())); - else - return complex<_Tp>(-__x.real(), copysign(__pi * _Tp(0.75), __x.imag())); - } - if (__x.real() < 0) - return complex<_Tp>(-__x.real(), copysign(__pi, __x.imag())); - return complex<_Tp>(__x.real(), copysign(_Tp(0), __x.imag())); - } - if (isnan(__x.real())) - { - if (isinf(__x.imag())) - return complex<_Tp>(abs(__x.imag()), __x.real()); - return complex<_Tp>(__x.real(), __x.real()); - } - if (isinf(__x.imag())) - return complex<_Tp>(abs(__x.imag()), copysign(__pi/_Tp(2), __x.imag())); - complex<_Tp> __z = log(__x + sqrt(pow(__x, _Tp(2)) - _Tp(1))); - return complex<_Tp>(copysign(__z.real(), _Tp(0)), copysign(__z.imag(), __x.imag())); -} - -// atanh - -template -complex<_Tp> -atanh(const complex<_Tp>& __x) -{ - const _Tp __pi(atan2(+0., -0.)); - if (isinf(__x.imag())) - { - return complex<_Tp>(copysign(_Tp(0), __x.real()), copysign(__pi/_Tp(2), __x.imag())); - } - if (isnan(__x.imag())) - { - if (isinf(__x.real()) || __x.real() == 0) - return complex<_Tp>(copysign(_Tp(0), __x.real()), __x.imag()); - return complex<_Tp>(__x.imag(), __x.imag()); - } - if (isnan(__x.real())) - { - return complex<_Tp>(__x.real(), __x.real()); - } - if (isinf(__x.real())) - { - return complex<_Tp>(copysign(_Tp(0), __x.real()), copysign(__pi/_Tp(2), __x.imag())); - } - if (abs(__x.real()) == _Tp(1) && __x.imag() == _Tp(0)) - { - return complex<_Tp>(copysign(_Tp(INFINITY), __x.real()), copysign(_Tp(0), __x.imag())); - } - complex<_Tp> __z = log((_Tp(1) + __x) / (_Tp(1) - __x)) / _Tp(2); - return complex<_Tp>(copysign(__z.real(), __x.real()), copysign(__z.imag(), __x.imag())); -} - -// sinh - -template -complex<_Tp> -sinh(const complex<_Tp>& __x) -{ - if (isinf(__x.real()) && !isfinite(__x.imag())) - return complex<_Tp>(__x.real(), _Tp(NAN)); - if (__x.real() == 0 && !isfinite(__x.imag())) - return complex<_Tp>(__x.real(), _Tp(NAN)); - if (__x.imag() == 0 && !isfinite(__x.real())) - return __x; - return complex<_Tp>(sinh(__x.real()) * cos(__x.imag()), cosh(__x.real()) * sin(__x.imag())); -} - -// cosh - -template -complex<_Tp> -cosh(const complex<_Tp>& __x) -{ - if (isinf(__x.real()) && !isfinite(__x.imag())) - return complex<_Tp>(abs(__x.real()), _Tp(NAN)); - if (__x.real() == 0 && !isfinite(__x.imag())) - return complex<_Tp>(_Tp(NAN), __x.real()); - if (__x.real() == 0 && __x.imag() == 0) - return complex<_Tp>(_Tp(1), __x.imag()); - if (__x.imag() == 0 && !isfinite(__x.real())) - return complex<_Tp>(abs(__x.real()), __x.imag()); - return complex<_Tp>(cosh(__x.real()) * cos(__x.imag()), sinh(__x.real()) * sin(__x.imag())); -} - -// tanh - -template -complex<_Tp> -tanh(const complex<_Tp>& __x) -{ - if (isinf(__x.real())) - { - if (!isfinite(__x.imag())) - return complex<_Tp>(_Tp(1), _Tp(0)); - return complex<_Tp>(_Tp(1), copysign(_Tp(0), sin(_Tp(2) * __x.imag()))); - } - if (isnan(__x.real()) && __x.imag() == 0) - return __x; - _Tp __2r(_Tp(2) * __x.real()); - _Tp __2i(_Tp(2) * __x.imag()); - _Tp __d(cosh(__2r) + cos(__2i)); - _Tp __2rsh(sinh(__2r)); - if (isinf(__2rsh) && isinf(__d)) - return complex<_Tp>(__2rsh > _Tp(0) ? _Tp(1) : _Tp(-1), - __2i > _Tp(0) ? _Tp(0) : _Tp(-0.)); - return complex<_Tp>(__2rsh/__d, sin(__2i)/__d); -} - -// asin - -template -complex<_Tp> -asin(const complex<_Tp>& __x) -{ - complex<_Tp> __z = asinh(complex<_Tp>(-__x.imag(), __x.real())); - return complex<_Tp>(__z.imag(), -__z.real()); -} - -// acos - -template -complex<_Tp> -acos(const complex<_Tp>& __x) -{ - const _Tp __pi(atan2(+0., -0.)); - if (isinf(__x.real())) - { - if (isnan(__x.imag())) - return complex<_Tp>(__x.imag(), __x.real()); - if (isinf(__x.imag())) - { - if (__x.real() < _Tp(0)) - return complex<_Tp>(_Tp(0.75) * __pi, -__x.imag()); - return complex<_Tp>(_Tp(0.25) * __pi, -__x.imag()); - } - if (__x.real() < _Tp(0)) - return complex<_Tp>(__pi, signbit(__x.imag()) ? -__x.real() : __x.real()); - return complex<_Tp>(_Tp(0), signbit(__x.imag()) ? __x.real() : -__x.real()); - } - if (isnan(__x.real())) - { - if (isinf(__x.imag())) - return complex<_Tp>(__x.real(), -__x.imag()); - return complex<_Tp>(__x.real(), __x.real()); - } - if (isinf(__x.imag())) - return complex<_Tp>(__pi/_Tp(2), -__x.imag()); - if (__x.real() == 0) - return complex<_Tp>(__pi/_Tp(2), -__x.imag()); - complex<_Tp> __z = log(__x + sqrt(pow(__x, _Tp(2)) - _Tp(1))); - if (signbit(__x.imag())) - return complex<_Tp>(abs(__z.imag()), abs(__z.real())); - return complex<_Tp>(abs(__z.imag()), -abs(__z.real())); -} - -// atan - -template -complex<_Tp> -atan(const complex<_Tp>& __x) -{ - complex<_Tp> __z = atanh(complex<_Tp>(-__x.imag(), __x.real())); - return complex<_Tp>(__z.imag(), -__z.real()); -} - -// sin - -template -complex<_Tp> -sin(const complex<_Tp>& __x) -{ - complex<_Tp> __z = sinh(complex<_Tp>(-__x.imag(), __x.real())); - return complex<_Tp>(__z.imag(), -__z.real()); -} - -// cos - -template -inline _LIBCPP_INLINE_VISIBILITY -complex<_Tp> -cos(const complex<_Tp>& __x) -{ - return cosh(complex<_Tp>(-__x.imag(), __x.real())); -} - -// tan - -template -complex<_Tp> -tan(const complex<_Tp>& __x) -{ - complex<_Tp> __z = tanh(complex<_Tp>(-__x.imag(), __x.real())); - return complex<_Tp>(__z.imag(), -__z.real()); -} - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x) -{ - if (__is.good()) - { - ws(__is); - if (__is.peek() == _CharT('(')) - { - __is.get(); - _Tp __r; - __is >> __r; - if (!__is.fail()) - { - ws(__is); - _CharT __c = __is.peek(); - if (__c == _CharT(',')) - { - __is.get(); - _Tp __i; - __is >> __i; - if (!__is.fail()) - { - ws(__is); - __c = __is.peek(); - if (__c == _CharT(')')) - { - __is.get(); - __x = complex<_Tp>(__r, __i); - } - else - __is.setstate(ios_base::failbit); - } - else - __is.setstate(ios_base::failbit); - } - else if (__c == _CharT(')')) - { - __is.get(); - __x = complex<_Tp>(__r, _Tp(0)); - } - else - __is.setstate(ios_base::failbit); - } - else - __is.setstate(ios_base::failbit); - } - else - { - _Tp __r; - __is >> __r; - if (!__is.fail()) - __x = complex<_Tp>(__r, _Tp(0)); - else - __is.setstate(ios_base::failbit); - } - } - else - __is.setstate(ios_base::failbit); - return __is; -} - -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(); -} - -#if _LIBCPP_STD_VER > 11 -// Literal suffix for complex number literals [complex.literals] -inline namespace literals -{ - inline namespace complex_literals - { - constexpr complex operator""il(long double __im) - { - return { 0.0l, __im }; - } - - constexpr complex operator""il(unsigned long long __im) - { - return { 0.0l, static_cast(__im) }; - } - - - constexpr complex operator""i(long double __im) - { - return { 0.0, static_cast(__im) }; - } - - constexpr complex operator""i(unsigned long long __im) - { - return { 0.0, static_cast(__im) }; - } - - - constexpr complex operator""if(long double __im) - { - return { 0.0f, static_cast(__im) }; - } - - constexpr complex operator""if(unsigned long long __im) - { - return { 0.0f, static_cast(__im) }; - } - } -} -#endif - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_COMPLEX diff --git a/libcxx/include/complex.h b/libcxx/include/complex.h deleted file mode 100644 index 7003d31a8..000000000 --- a/libcxx/include/complex.h +++ /dev/null @@ -1,35 +0,0 @@ -// -*- C++ -*- -//===--------------------------- complex.h --------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_COMPLEX_H -#define _LIBCPP_COMPLEX_H - -/* - complex.h synopsis - -#include - -*/ - -#ifdef __cplusplus - -#include - -#else // __cplusplus - -#include_next - -#endif // __cplusplus - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#endif // _LIBCPP_COMPLEX_H diff --git a/libcxx/include/condition_variable b/libcxx/include/condition_variable deleted file mode 100644 index 1af2484ab..000000000 --- a/libcxx/include/condition_variable +++ /dev/null @@ -1,260 +0,0 @@ -// -*- C++ -*- -//===---------------------- condition_variable ----------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CONDITION_VARIABLE -#define _LIBCPP_CONDITION_VARIABLE - -/* - condition_variable synopsis - -namespace std -{ - -enum class cv_status { no_timeout, timeout }; - -class condition_variable -{ -public: - condition_variable(); - ~condition_variable(); - - 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 pred); - - template - cv_status - wait_until(unique_lock& lock, - const chrono::time_point& abs_time); - - template - bool - wait_until(unique_lock& lock, - const chrono::time_point& abs_time, - Predicate pred); - - template - cv_status - wait_for(unique_lock& lock, - const chrono::duration& rel_time); - - template - bool - wait_for(unique_lock& lock, - const chrono::duration& rel_time, - Predicate pred); - - typedef pthread_cond_t* native_handle_type; - native_handle_type native_handle(); -}; - -void notify_all_at_thread_exit(condition_variable& cond, unique_lock lk); - -class condition_variable_any -{ -public: - condition_variable_any(); - ~condition_variable_any(); - - condition_variable_any(const condition_variable_any&) = delete; - condition_variable_any& operator=(const condition_variable_any&) = delete; - - void notify_one() noexcept; - void notify_all() noexcept; - - template - void wait(Lock& lock); - template - void wait(Lock& lock, Predicate pred); - - template - cv_status - wait_until(Lock& lock, - const chrono::time_point& abs_time); - - template - bool - wait_until(Lock& lock, - const chrono::time_point& abs_time, - Predicate pred); - - template - cv_status - wait_for(Lock& lock, - const chrono::duration& rel_time); - - template - bool - wait_for(Lock& lock, - const chrono::duration& rel_time, - Predicate pred); -}; - -} // std - -*/ - -#include <__config> -#include <__mutex_base> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#ifndef _LIBCPP_HAS_NO_THREADS - -_LIBCPP_BEGIN_NAMESPACE_STD - -class _LIBCPP_TYPE_VIS condition_variable_any -{ - condition_variable __cv_; - shared_ptr __mut_; -public: - condition_variable_any(); - - void notify_one() _NOEXCEPT; - void notify_all() _NOEXCEPT; - - template - void wait(_Lock& __lock); - template - void wait(_Lock& __lock, _Predicate __pred); - - template - cv_status - wait_until(_Lock& __lock, - const chrono::time_point<_Clock, _Duration>& __t); - - template - bool - wait_until(_Lock& __lock, - const chrono::time_point<_Clock, _Duration>& __t, - _Predicate __pred); - - template - cv_status - wait_for(_Lock& __lock, - const chrono::duration<_Rep, _Period>& __d); - - template - bool - wait_for(_Lock& __lock, - const chrono::duration<_Rep, _Period>& __d, - _Predicate __pred); -}; - -inline _LIBCPP_INLINE_VISIBILITY -condition_variable_any::condition_variable_any() - : __mut_(make_shared()) {} - -inline _LIBCPP_INLINE_VISIBILITY -void -condition_variable_any::notify_one() _NOEXCEPT -{ - {lock_guard __lx(*__mut_);} - __cv_.notify_one(); -} - -inline _LIBCPP_INLINE_VISIBILITY -void -condition_variable_any::notify_all() _NOEXCEPT -{ - {lock_guard __lx(*__mut_);} - __cv_.notify_all(); -} - -struct __lock_external -{ - template - void operator()(_Lock* __m) {__m->lock();} -}; - -template -void -condition_variable_any::wait(_Lock& __lock) -{ - shared_ptr __mut = __mut_; - unique_lock __lk(*__mut); - __lock.unlock(); - unique_ptr<_Lock, __lock_external> __lxx(&__lock); - lock_guard > __lx(__lk, adopt_lock); - __cv_.wait(__lk); -} // __mut_.unlock(), __lock.lock() - -template -inline _LIBCPP_INLINE_VISIBILITY -void -condition_variable_any::wait(_Lock& __lock, _Predicate __pred) -{ - while (!__pred()) - wait(__lock); -} - -template -cv_status -condition_variable_any::wait_until(_Lock& __lock, - const chrono::time_point<_Clock, _Duration>& __t) -{ - shared_ptr __mut = __mut_; - unique_lock __lk(*__mut); - __lock.unlock(); - unique_ptr<_Lock, __lock_external> __lxx(&__lock); - lock_guard > __lx(__lk, adopt_lock); - return __cv_.wait_until(__lk, __t); -} // __mut_.unlock(), __lock.lock() - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -condition_variable_any::wait_until(_Lock& __lock, - const chrono::time_point<_Clock, _Duration>& __t, - _Predicate __pred) -{ - while (!__pred()) - if (wait_until(__lock, __t) == cv_status::timeout) - return __pred(); - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -cv_status -condition_variable_any::wait_for(_Lock& __lock, - const chrono::duration<_Rep, _Period>& __d) -{ - return wait_until(__lock, chrono::steady_clock::now() + __d); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -condition_variable_any::wait_for(_Lock& __lock, - const chrono::duration<_Rep, _Period>& __d, - _Predicate __pred) -{ - return wait_until(__lock, chrono::steady_clock::now() + __d, - _VSTD::move(__pred)); -} - -_LIBCPP_FUNC_VIS -void notify_all_at_thread_exit(condition_variable& cond, unique_lock lk); - -_LIBCPP_END_NAMESPACE_STD - -#endif // !_LIBCPP_HAS_NO_THREADS - -#endif // _LIBCPP_CONDITION_VARIABLE diff --git a/libcxx/include/csetjmp b/libcxx/include/csetjmp deleted file mode 100644 index d0b2c0789..000000000 --- a/libcxx/include/csetjmp +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- -//===--------------------------- csetjmp ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CSETJMP -#define _LIBCPP_CSETJMP - -/* - csetjmp synopsis - -Macros: - - setjmp - -namespace std -{ - -Types: - - jmp_buf - -void longjmp(jmp_buf env, int val); - -} // std - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#ifndef setjmp -#define setjmp(env) setjmp(env) -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::jmp_buf; -using ::longjmp; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CSETJMP diff --git a/libcxx/include/csignal b/libcxx/include/csignal deleted file mode 100644 index 972826618..000000000 --- a/libcxx/include/csignal +++ /dev/null @@ -1,58 +0,0 @@ -// -*- C++ -*- -//===--------------------------- csignal ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CSIGNAL -#define _LIBCPP_CSIGNAL - -/* - csignal synopsis - -Macros: - - SIG_DFL - SIG_ERR - SIG_IGN - SIGABRT - SIGFPE - SIGILL - SIGINT - SIGSEGV - SIGTERM - -namespace std -{ - -Types: - - sig_atomic_t - -void (*signal(int sig, void (*func)(int)))(int); -int raise(int sig); - -} // std - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::sig_atomic_t; -using ::signal; -using ::raise; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CSIGNAL diff --git a/libcxx/include/cstdarg b/libcxx/include/cstdarg deleted file mode 100644 index c8b699924..000000000 --- a/libcxx/include/cstdarg +++ /dev/null @@ -1,48 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cstdarg ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CSTDARG -#define _LIBCPP_CSTDARG - -/* - cstdarg synopsis - -Macros: - - type va_arg(va_list ap, type); - void va_copy(va_list dest, va_list src); // C99 - void va_end(va_list ap); - void va_start(va_list ap, parmN); - -namespace std -{ - -Types: - - va_list - -} // std - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::va_list; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CSTDARG diff --git a/libcxx/include/cstdbool b/libcxx/include/cstdbool deleted file mode 100644 index 2c764a61f..000000000 --- a/libcxx/include/cstdbool +++ /dev/null @@ -1,32 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cstdbool ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CSTDBOOL -#define _LIBCPP_CSTDBOOL - -/* - cstdbool synopsis - -Macros: - - __bool_true_false_are_defined - -*/ - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#undef __bool_true_false_are_defined -#define __bool_true_false_are_defined 1 - -#endif // _LIBCPP_CSTDBOOL diff --git a/libcxx/include/cstddef b/libcxx/include/cstddef deleted file mode 100644 index c3ca64a9c..000000000 --- a/libcxx/include/cstddef +++ /dev/null @@ -1,102 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cstddef ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CSTDDEF -#define _LIBCPP_CSTDDEF - -/* - cstddef synopsis - -Macros: - - offsetof(type,member-designator) - NULL - -namespace std -{ - -Types: - - ptrdiff_t - size_t - max_align_t - nullptr_t - -} // std - -*/ - -#include <__config> - -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::ptrdiff_t; -using ::size_t; - -#if defined(__CLANG_MAX_ALIGN_T_DEFINED) || defined(_GCC_MAX_ALIGN_T) -// Re-use the compiler's max_align_t where possible. -using ::max_align_t; -#else -typedef long double max_align_t; -#endif - -#ifdef _LIBCPP_HAS_NO_NULLPTR - -struct _LIBCPP_TYPE_VIS_ONLY nullptr_t -{ - void* __lx; - - struct __nat {int __for_bool_;}; - - _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR nullptr_t() : __lx(0) {} - _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR nullptr_t(int __nat::*) : __lx(0) {} - - _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR operator int __nat::*() const {return 0;} - - template - _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR - operator _Tp* () const {return 0;} - - template - _LIBCPP_ALWAYS_INLINE - operator _Tp _Up::* () const {return 0;} - - friend _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR bool operator==(nullptr_t, nullptr_t) {return true;} - friend _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR bool operator!=(nullptr_t, nullptr_t) {return false;} - friend _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR bool operator<(nullptr_t, nullptr_t) {return false;} - friend _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR bool operator<=(nullptr_t, nullptr_t) {return true;} - friend _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR bool operator>(nullptr_t, nullptr_t) {return false;} - friend _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR bool operator>=(nullptr_t, nullptr_t) {return true;} -}; - -inline _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR nullptr_t __get_nullptr_t() {return nullptr_t(0);} - -#define nullptr _VSTD::__get_nullptr_t() - -#endif // _LIBCPP_HAS_NO_NULLPTR - -_LIBCPP_END_NAMESPACE_STD - -#ifndef _LIBCPP_HAS_NO_NULLPTR - -namespace std -{ - typedef decltype(nullptr) nullptr_t; -} - -#endif // _LIBCPP_HAS_NO_NULLPTR - -#endif // _LIBCPP_CSTDDEF diff --git a/libcxx/include/cstdint b/libcxx/include/cstdint deleted file mode 100644 index 7a187d3eb..000000000 --- a/libcxx/include/cstdint +++ /dev/null @@ -1,191 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cstdint ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CSTDINT -#define _LIBCPP_CSTDINT - -/* - cstdint synopsis - -Macros: - - INT8_MIN - INT16_MIN - INT32_MIN - INT64_MIN - - INT8_MAX - INT16_MAX - INT32_MAX - INT64_MAX - - UINT8_MAX - UINT16_MAX - UINT32_MAX - UINT64_MAX - - INT_LEAST8_MIN - INT_LEAST16_MIN - INT_LEAST32_MIN - INT_LEAST64_MIN - - INT_LEAST8_MAX - INT_LEAST16_MAX - INT_LEAST32_MAX - INT_LEAST64_MAX - - UINT_LEAST8_MAX - UINT_LEAST16_MAX - UINT_LEAST32_MAX - UINT_LEAST64_MAX - - INT_FAST8_MIN - INT_FAST16_MIN - INT_FAST32_MIN - INT_FAST64_MIN - - INT_FAST8_MAX - INT_FAST16_MAX - INT_FAST32_MAX - INT_FAST64_MAX - - UINT_FAST8_MAX - UINT_FAST16_MAX - UINT_FAST32_MAX - UINT_FAST64_MAX - - INTPTR_MIN - INTPTR_MAX - UINTPTR_MAX - - INTMAX_MIN - INTMAX_MAX - - UINTMAX_MAX - - PTRDIFF_MIN - PTRDIFF_MAX - - SIG_ATOMIC_MIN - SIG_ATOMIC_MAX - - SIZE_MAX - - WCHAR_MIN - WCHAR_MAX - - WINT_MIN - WINT_MAX - - INT8_C(value) - INT16_C(value) - INT32_C(value) - INT64_C(value) - - UINT8_C(value) - UINT16_C(value) - UINT32_C(value) - UINT64_C(value) - - INTMAX_C(value) - UINTMAX_C(value) - -namespace std -{ - -Types: - - int8_t - int16_t - int32_t - int64_t - - uint8_t - uint16_t - uint32_t - uint64_t - - int_least8_t - int_least16_t - int_least32_t - int_least64_t - - uint_least8_t - uint_least16_t - uint_least32_t - uint_least64_t - - int_fast8_t - int_fast16_t - int_fast32_t - int_fast64_t - - uint_fast8_t - uint_fast16_t - uint_fast32_t - uint_fast64_t - - intptr_t - uintptr_t - - intmax_t - uintmax_t - -} // std -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using::int8_t; -using::int16_t; -using::int32_t; -using::int64_t; - -using::uint8_t; -using::uint16_t; -using::uint32_t; -using::uint64_t; - -using::int_least8_t; -using::int_least16_t; -using::int_least32_t; -using::int_least64_t; - -using::uint_least8_t; -using::uint_least16_t; -using::uint_least32_t; -using::uint_least64_t; - -using::int_fast8_t; -using::int_fast16_t; -using::int_fast32_t; -using::int_fast64_t; - -using::uint_fast8_t; -using::uint_fast16_t; -using::uint_fast32_t; -using::uint_fast64_t; - -using::intptr_t; -using::uintptr_t; - -using::intmax_t; -using::uintmax_t; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CSTDINT diff --git a/libcxx/include/cstdio b/libcxx/include/cstdio deleted file mode 100644 index d8ba6c2ef..000000000 --- a/libcxx/include/cstdio +++ /dev/null @@ -1,209 +0,0 @@ -// -*- C++ -*- -//===---------------------------- cstdio ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CSTDIO -#define _LIBCPP_CSTDIO - -/* - cstdio synopsis - -Macros: - - BUFSIZ - EOF - FILENAME_MAX - FOPEN_MAX - L_tmpnam - NULL - SEEK_CUR - SEEK_END - SEEK_SET - TMP_MAX - _IOFBF - _IOLBF - _IONBF - stderr - stdin - stdout - -namespace std -{ - -Types: - -FILE -fpos_t -size_t - -int remove(const char* filename); -int rename(const char* old, const char* new); -FILE* tmpfile(void); -char* tmpnam(char* s); -int fclose(FILE* stream); -int fflush(FILE* stream); -FILE* fopen(const char* restrict filename, const char* restrict mode); -FILE* freopen(const char* restrict filename, const char * restrict mode, - FILE * restrict stream); -void setbuf(FILE* restrict stream, char* restrict buf); -int setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size); -int fprintf(FILE* restrict stream, const char* restrict format, ...); -int fscanf(FILE* restrict stream, const char * restrict format, ...); -int printf(const char* restrict format, ...); -int scanf(const char* restrict format, ...); -int snprintf(char* restrict s, size_t n, const char* restrict format, ...); // C99 -int sprintf(char* restrict s, const char* restrict format, ...); -int sscanf(const char* restrict s, const char* restrict format, ...); -int vfprintf(FILE* restrict stream, const char* restrict format, va_list arg); -int vfscanf(FILE* restrict stream, const char* restrict format, va_list arg); // C99 -int vprintf(const char* restrict format, va_list arg); -int vscanf(const char* restrict format, va_list arg); // C99 -int vsnprintf(char* restrict s, size_t n, const char* restrict format, // C99 - va_list arg); -int vsprintf(char* restrict s, const char* restrict format, va_list arg); -int vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99 -int fgetc(FILE* stream); -char* fgets(char* restrict s, int n, FILE* restrict stream); -int fputc(int c, FILE* stream); -int fputs(const char* restrict s, FILE* restrict stream); -int getc(FILE* stream); -int getchar(void); -char* gets(char* s); // removed in C++14 -int putc(int c, FILE* stream); -int putchar(int c); -int puts(const char* s); -int ungetc(int c, FILE* stream); -size_t fread(void* restrict ptr, size_t size, size_t nmemb, - FILE* restrict stream); -size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb, - FILE* restrict stream); -int fgetpos(FILE* restrict stream, fpos_t* restrict pos); -int fseek(FILE* stream, long offset, int whence); -int fsetpos(FILE*stream, const fpos_t* pos); -long ftell(FILE* stream); -void rewind(FILE* stream); -void clearerr(FILE* stream); -int feof(FILE* stream); -int ferror(FILE* stream); -void perror(const char* s); - -} // std -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -// snprintf -#if defined(_LIBCPP_MSVCRT) -#include "support/win32/support.h" -#endif - -#ifdef getc -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_getc(FILE* __stream) {return getc(__stream);} -#undef getc -inline _LIBCPP_INLINE_VISIBILITY int getc(FILE* __stream) {return __libcpp_getc(__stream);} -#endif // getc - -#ifdef putc -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_putc(int __c, FILE* __stream) {return putc(__c, __stream);} -#undef putc -inline _LIBCPP_INLINE_VISIBILITY int putc(int __c, FILE* __stream) {return __libcpp_putc(__c, __stream);} -#endif // putc - -#ifdef clearerr -inline _LIBCPP_INLINE_VISIBILITY void __libcpp_clearerr(FILE* __stream) { return clearerr(__stream); } -#undef clearerr -inline _LIBCPP_INLINE_VISIBILITY void clearerr(FILE* __stream) { return __libcpp_clearerr(__stream); } -#endif // clearerr - -#ifdef feof -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_feof(FILE* __stream) { return feof(__stream); } -#undef feof -inline _LIBCPP_INLINE_VISIBILITY int feof(FILE* __stream) { return __libcpp_feof(__stream); } -#endif // feof - -#ifdef ferror -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_ferror(FILE* __stream) { return ferror(__stream); } -#undef ferror -inline _LIBCPP_INLINE_VISIBILITY int ferror(FILE* __stream) { return __libcpp_ferror(__stream); } -#endif // ferror - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::FILE; -using ::fpos_t; -using ::size_t; - -using ::fclose; -using ::fflush; -using ::setbuf; -using ::setvbuf; -using ::fprintf; -using ::fscanf; -using ::snprintf; -using ::sprintf; -using ::sscanf; -#ifndef _LIBCPP_MSVCRT -using ::vfprintf; -using ::vfscanf; -using ::vsscanf; -#endif // _LIBCPP_MSVCRT -using ::vsnprintf; -using ::vsprintf; -using ::fgetc; -using ::fgets; -using ::fputc; -using ::fputs; -using ::getc; -using ::putc; -using ::ungetc; -using ::fread; -using ::fwrite; -using ::fgetpos; -using ::fseek; -using ::fsetpos; -using ::ftell; -using ::rewind; -using ::clearerr; -using ::feof; -using ::ferror; -using ::perror; - -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -using ::fopen; -using ::freopen; -using ::remove; -using ::rename; -using ::tmpfile; -using ::tmpnam; -#endif - -#ifndef _LIBCPP_HAS_NO_STDIN -using ::getchar; -#if _LIBCPP_STD_VER <= 11 -using ::gets; -#endif -using ::scanf; -using ::vscanf; -#endif - -#ifndef _LIBCPP_HAS_NO_STDOUT -using ::printf; -using ::putchar; -using ::puts; -using ::vprintf; -#endif - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CSTDIO diff --git a/libcxx/include/cstdlib b/libcxx/include/cstdlib deleted file mode 100644 index 298040e3f..000000000 --- a/libcxx/include/cstdlib +++ /dev/null @@ -1,178 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cstdlib ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CSTDLIB -#define _LIBCPP_CSTDLIB - -/* - cstdlib synopsis - -Macros: - - EXIT_FAILURE - EXIT_SUCCESS - MB_CUR_MAX - NULL - RAND_MAX - -namespace std -{ - -Types: - - size_t - div_t - ldiv_t - lldiv_t // C99 - -double atof (const char* nptr); -int atoi (const char* nptr); -long atol (const char* nptr); -long long atoll(const char* nptr); // C99 -double strtod (const char* restrict nptr, char** restrict endptr); -float strtof (const char* restrict nptr, char** restrict endptr); // C99 -long double strtold (const char* restrict nptr, char** restrict endptr); // C99 -long strtol (const char* restrict nptr, char** restrict endptr, int base); -long long strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99 -unsigned long strtoul (const char* restrict nptr, char** restrict endptr, int base); -unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99 -int rand(void); -void srand(unsigned int seed); -void* calloc(size_t nmemb, size_t size); -void free(void* ptr); -void* malloc(size_t size); -void* realloc(void* ptr, size_t size); -void abort(void); -int atexit(void (*func)(void)); -void exit(int status); -void _Exit(int status); -char* getenv(const char* name); -int system(const char* string); -void* bsearch(const void* key, const void* base, size_t nmemb, size_t size, - int (*compar)(const void *, const void *)); -void qsort(void* base, size_t nmemb, size_t size, - int (*compar)(const void *, const void *)); -int abs( int j); -long abs( long j); -long long abs(long long j); // C++0X -long labs( long j); -long long llabs(long long j); // C99 -div_t div( int numer, int denom); -ldiv_t div( long numer, long denom); -lldiv_t div(long long numer, long long denom); // C++0X -ldiv_t ldiv( long numer, long denom); -lldiv_t lldiv(long long numer, long long denom); // C99 -int mblen(const char* s, size_t n); -int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n); -int wctomb(char* s, wchar_t wchar); -size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n); -size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n); -int at_quick_exit(void (*func)(void)) // C++11 -void quick_exit(int status); // C++11 -void *aligned_alloc(size_t alignment, size_t size); // C11 - -} // std - -*/ - -#include <__config> -#include -#ifdef _LIBCPP_MSVCRT -#include "support/win32/locale_win32.h" -#endif // _LIBCPP_MSVCRT - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::size_t; -using ::div_t; -using ::ldiv_t; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::lldiv_t; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::atof; -using ::atoi; -using ::atol; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::atoll; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::strtod; -using ::strtof; -using ::strtold; -using ::strtol; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::strtoll; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::strtoul; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::strtoull; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::rand; -using ::srand; -using ::calloc; -using ::free; -using ::malloc; -using ::realloc; -using ::abort; -using ::atexit; -using ::exit; -using ::_Exit; -using ::getenv; -using ::system; -using ::bsearch; -using ::qsort; -#undef abs -using ::abs; -#undef labs -using ::labs; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -#undef llabs -using ::llabs; -#endif // _LIBCPP_HAS_NO_LONG_LONG -#undef div -using ::div; -#undef ldiv -using ::ldiv; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -#undef lldiv -using ::lldiv; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::mblen; -using ::mbtowc; -using ::wctomb; -using ::mbstowcs; -using ::wcstombs; -#ifdef _LIBCPP_HAS_QUICK_EXIT -using ::at_quick_exit; -using ::quick_exit; -#endif -#ifdef _LIBCPP_HAS_C11_FEATURES -using ::aligned_alloc; -#endif - -// MSVCRT already has the correct prototype in #ifdef __cplusplus -#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX) -inline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);} -#ifndef _LIBCPP_HAS_NO_LONG_LONG -inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);} -#endif // _LIBCPP_HAS_NO_LONG_LONG - -inline _LIBCPP_INLINE_VISIBILITY ldiv_t div( long __x, long __y) _NOEXCEPT {return ldiv(__x, __y);} -#ifndef _LIBCPP_HAS_NO_LONG_LONG -inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);} -#endif // _LIBCPP_HAS_NO_LONG_LONG -#endif // _LIBCPP_MSVCRT - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CSTDLIB diff --git a/libcxx/include/cstring b/libcxx/include/cstring deleted file mode 100644 index 21c9155cd..000000000 --- a/libcxx/include/cstring +++ /dev/null @@ -1,112 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cstring ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CSTRING -#define _LIBCPP_CSTRING - -/* - cstring synopsis - -Macros: - - NULL - -namespace std -{ - -Types: - - size_t - -void* memcpy(void* restrict s1, const void* restrict s2, size_t n); -void* memmove(void* s1, const void* s2, size_t n); -char* strcpy (char* restrict s1, const char* restrict s2); -char* strncpy(char* restrict s1, const char* restrict s2, size_t n); -char* strcat (char* restrict s1, const char* restrict s2); -char* strncat(char* restrict s1, const char* restrict s2, size_t n); -int memcmp(const void* s1, const void* s2, size_t n); -int strcmp (const char* s1, const char* s2); -int strncmp(const char* s1, const char* s2, size_t n); -int strcoll(const char* s1, const char* s2); -size_t strxfrm(char* restrict s1, const char* restrict s2, size_t n); -const void* memchr(const void* s, int c, size_t n); - void* memchr( void* s, int c, size_t n); -const char* strchr(const char* s, int c); - char* strchr( char* s, int c); -size_t strcspn(const char* s1, const char* s2); -const char* strpbrk(const char* s1, const char* s2); - char* strpbrk( char* s1, const char* s2); -const char* strrchr(const char* s, int c); - char* strrchr( char* s, int c); -size_t strspn(const char* s1, const char* s2); -const char* strstr(const char* s1, const char* s2); - char* strstr( char* s1, const char* s2); -char* strtok(char* restrict s1, const char* restrict s2); -void* memset(void* s, int c, size_t n); -char* strerror(int errnum); -size_t strlen(const char* s); - -} // std - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::size_t; -using ::memcpy; -using ::memmove; -using ::strcpy; -using ::strncpy; -using ::strcat; -using ::strncat; -using ::memcmp; -using ::strcmp; -using ::strncmp; -using ::strcoll; -using ::strxfrm; - -using ::memchr; - -using ::strchr; - -using ::strcspn; - -using ::strpbrk; - -using ::strrchr; - -using ::strspn; - -using ::strstr; - -// MSVCRT, GNU libc and its derivates already have the correct prototype in #ifdef __cplusplus -#if !defined(__GLIBC__) && !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_STRING_H_CPLUSPLUS_98_CONFORMANCE_) -inline _LIBCPP_INLINE_VISIBILITY char* strchr( char* __s, int __c) {return ::strchr(__s, __c);} -inline _LIBCPP_INLINE_VISIBILITY char* strpbrk( char* __s1, const char* __s2) {return ::strpbrk(__s1, __s2);} -inline _LIBCPP_INLINE_VISIBILITY char* strrchr( char* __s, int __c) {return ::strrchr(__s, __c);} -inline _LIBCPP_INLINE_VISIBILITY void* memchr( void* __s, int __c, size_t __n) {return ::memchr(__s, __c, __n);} -inline _LIBCPP_INLINE_VISIBILITY char* strstr( char* __s1, const char* __s2) {return ::strstr(__s1, __s2);} -#endif - -using ::strtok; -using ::memset; -using ::strerror; -using ::strlen; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CSTRING diff --git a/libcxx/include/ctgmath b/libcxx/include/ctgmath deleted file mode 100644 index 535eb7dcc..000000000 --- a/libcxx/include/ctgmath +++ /dev/null @@ -1,29 +0,0 @@ -// -*- C++ -*- -//===-------------------------- ctgmath -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CTGMATH -#define _LIBCPP_CTGMATH - -/* - ctgmath synopsis - -#include -#include - -*/ - -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#endif // _LIBCPP_CTGMATH diff --git a/libcxx/include/ctime b/libcxx/include/ctime deleted file mode 100644 index fc4eb26f5..000000000 --- a/libcxx/include/ctime +++ /dev/null @@ -1,72 +0,0 @@ -// -*- C++ -*- -//===---------------------------- ctime -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CTIME -#define _LIBCPP_CTIME - -/* - ctime synopsis - -Macros: - - NULL - CLOCKS_PER_SEC - -namespace std -{ - -Types: - - clock_t - size_t - time_t - tm - -clock_t clock(); -double difftime(time_t time1, time_t time0); -time_t mktime(tm* timeptr); -time_t time(time_t* timer); -char* asctime(const tm* timeptr); -char* ctime(const time_t* timer); -tm* gmtime(const time_t* timer); -tm* localtime(const time_t* timer); -size_t strftime(char* restrict s, size_t maxsize, const char* restrict format, - const tm* restrict timeptr); - -} // std - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::clock_t; -using ::size_t; -using ::time_t; -using ::tm; -using ::clock; -using ::difftime; -using ::mktime; -using ::time; -using ::asctime; -using ::ctime; -using ::gmtime; -using ::localtime; -using ::strftime; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CTIME diff --git a/libcxx/include/cwchar b/libcxx/include/cwchar deleted file mode 100644 index 797a1777c..000000000 --- a/libcxx/include/cwchar +++ /dev/null @@ -1,225 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cwchar -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CWCHAR -#define _LIBCPP_CWCHAR - -/* - cwchar synopsis - -Macros: - - NULL - WCHAR_MAX - WCHAR_MIN - WEOF - -namespace std -{ - -Types: - - mbstate_t - size_t - tm - wint_t - -int fwprintf(FILE* restrict stream, const wchar_t* restrict format, ...); -int fwscanf(FILE* restrict stream, const wchar_t* restrict format, ...); -int swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, ...); -int swscanf(const wchar_t* restrict s, const wchar_t* restrict format, ...); -int vfwprintf(FILE* restrict stream, const wchar_t* restrict format, va_list arg); -int vfwscanf(FILE* restrict stream, const wchar_t* restrict format, va_list arg); // C99 -int vswprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, va_list arg); -int vswscanf(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg); // C99 -int vwprintf(const wchar_t* restrict format, va_list arg); -int vwscanf(const wchar_t* restrict format, va_list arg); // C99 -int wprintf(const wchar_t* restrict format, ...); -int wscanf(const wchar_t* restrict format, ...); -wint_t fgetwc(FILE* stream); -wchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict stream); -wint_t fputwc(wchar_t c, FILE* stream); -int fputws(const wchar_t* restrict s, FILE* restrict stream); -int fwide(FILE* stream, int mode); -wint_t getwc(FILE* stream); -wint_t getwchar(); -wint_t putwc(wchar_t c, FILE* stream); -wint_t putwchar(wchar_t c); -wint_t ungetwc(wint_t c, FILE* stream); -double wcstod(const wchar_t* restrict nptr, wchar_t** restrict endptr); -float wcstof(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99 -long double wcstold(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99 -long wcstol(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); -long long wcstoll(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99 -unsigned long wcstoul(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); -unsigned long long wcstoull(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99 -wchar_t* wcscpy(wchar_t* restrict s1, const wchar_t* restrict s2); -wchar_t* wcsncpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); -wchar_t* wcscat(wchar_t* restrict s1, const wchar_t* restrict s2); -wchar_t* wcsncat(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); -int wcscmp(const wchar_t* s1, const wchar_t* s2); -int wcscoll(const wchar_t* s1, const wchar_t* s2); -int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n); -size_t wcsxfrm(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); -const wchar_t* wcschr(const wchar_t* s, wchar_t c); - wchar_t* wcschr( wchar_t* s, wchar_t c); -size_t wcscspn(const wchar_t* s1, const wchar_t* s2); -size_t wcslen(const wchar_t* s); -const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2); - wchar_t* wcspbrk( wchar_t* s1, const wchar_t* s2); -const wchar_t* wcsrchr(const wchar_t* s, wchar_t c); - wchar_t* wcsrchr( wchar_t* s, wchar_t c); -size_t wcsspn(const wchar_t* s1, const wchar_t* s2); -const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2); - wchar_t* wcsstr( wchar_t* s1, const wchar_t* s2); -wchar_t* wcstok(wchar_t* restrict s1, const wchar_t* restrict s2, wchar_t** restrict ptr); -const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n); - wchar_t* wmemchr( wchar_t* s, wchar_t c, size_t n); -int wmemcmp(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); -wchar_t* wmemcpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); -wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n); -wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n); -size_t wcsftime(wchar_t* restrict s, size_t maxsize, const wchar_t* restrict format, - const tm* restrict timeptr); -wint_t btowc(int c); -int wctob(wint_t c); -int mbsinit(const mbstate_t* ps); -size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps); -size_t mbrtowc(wchar_t* restrict pwc, const char* restrict s, size_t n, mbstate_t* restrict ps); -size_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict ps); -size_t mbsrtowcs(wchar_t* restrict dst, const char** restrict src, size_t len, - mbstate_t* restrict ps); -size_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len, - mbstate_t* restrict ps); - -} // std - -*/ - -#include <__config> -#include -#include -#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__) -#include // pull in *swprintf defines -#endif // _LIBCPP_MSVCRT - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::mbstate_t; -using ::size_t; -using ::tm; -using ::wint_t; -using ::FILE; -using ::fwprintf; -using ::fwscanf; -using ::swprintf; -using ::vfwprintf; -using ::vswprintf; -#ifndef _LIBCPP_MSVCRT -using ::swscanf; -using ::vfwscanf; -using ::vswscanf; -#endif // _LIBCPP_MSVCRT -using ::fgetwc; -using ::fgetws; -using ::fputwc; -using ::fputws; -using ::fwide; -using ::getwc; -using ::putwc; -using ::ungetwc; -using ::wcstod; -#ifndef _LIBCPP_MSVCRT -using ::wcstof; -using ::wcstold; -#endif // _LIBCPP_MSVCRT -using ::wcstol; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::wcstoll; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::wcstoul; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::wcstoull; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::wcscpy; -using ::wcsncpy; -using ::wcscat; -using ::wcsncat; -using ::wcscmp; -using ::wcscoll; -using ::wcsncmp; -using ::wcsxfrm; - -#if defined(_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_) - -using ::wcschr; -using ::wcspbrk; -using ::wcsrchr; -using ::wcsstr; -using ::wmemchr; - -#else - -inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);} -inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcschr( wchar_t* __s, wchar_t __c) {return ::wcschr(__s, __c);} - -inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);} -inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcspbrk( wchar_t* __s1, const wchar_t* __s2) {return ::wcspbrk(__s1, __s2);} - -inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);} -inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcsrchr( wchar_t* __s, wchar_t __c) {return ::wcsrchr(__s, __c);} - -inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);} -inline _LIBCPP_INLINE_VISIBILITY wchar_t* wcsstr( wchar_t* __s1, const wchar_t* __s2) {return ::wcsstr(__s1, __s2);} - -inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);} -inline _LIBCPP_INLINE_VISIBILITY wchar_t* wmemchr( wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);} - -#endif - -using ::wcscspn; -using ::wcslen; -using ::wcsspn; -using ::wcstok; -using ::wmemcmp; -using ::wmemcpy; -using ::wmemmove; -using ::wmemset; -using ::wcsftime; -using ::btowc; -using ::wctob; -using ::mbsinit; -using ::mbrlen; -using ::mbrtowc; -using ::wcrtomb; -using ::mbsrtowcs; -using ::wcsrtombs; - -#ifndef _LIBCPP_HAS_NO_STDIN -using ::getwchar; -#ifndef _LIBCPP_MSVCRT -using ::vwscanf; -#endif // _LIBCPP_MSVCRT -using ::wscanf; -#endif - -#ifndef _LIBCPP_HAS_NO_STDOUT -using ::putwchar; -using ::vwprintf; -using ::wprintf; -#endif - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CWCHAR diff --git a/libcxx/include/cwctype b/libcxx/include/cwctype deleted file mode 100644 index 4f89b52db..000000000 --- a/libcxx/include/cwctype +++ /dev/null @@ -1,213 +0,0 @@ -// -*- C++ -*- -//===--------------------------- cwctype ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_CWCTYPE -#define _LIBCPP_CWCTYPE - -/* - cwctype synopsis - -Macros: - - WEOF - -namespace std -{ - -Types: - - wint_t - wctrans_t - wctype_t - -int iswalnum(wint_t wc); -int iswalpha(wint_t wc); -int iswblank(wint_t wc); // C99 -int iswcntrl(wint_t wc); -int iswdigit(wint_t wc); -int iswgraph(wint_t wc); -int iswlower(wint_t wc); -int iswprint(wint_t wc); -int iswpunct(wint_t wc); -int iswspace(wint_t wc); -int iswupper(wint_t wc); -int iswxdigit(wint_t wc); -int iswctype(wint_t wc, wctype_t desc); -wctype_t wctype(const char* property); -wint_t towlower(wint_t wc); -wint_t towupper(wint_t wc); -wint_t towctrans(wint_t wc, wctrans_t desc); -wctrans_t wctrans(const char* property); - -} // std - -*/ - -#include <__config> -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -using ::wint_t; -using ::wctrans_t; -using ::wctype_t; - -#ifdef iswalnum -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswalnum(wint_t __wc) {return iswalnum(__wc);} -#undef iswalnum -inline _LIBCPP_INLINE_VISIBILITY int iswalnum(wint_t __wc) {return __libcpp_iswalnum(__wc);} -#else // iswalnum -using ::iswalnum; -#endif - -#ifdef iswalpha -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswalpha(wint_t __wc) {return iswalpha(__wc);} -#undef iswalpha -inline _LIBCPP_INLINE_VISIBILITY int iswalpha(wint_t __wc) {return __libcpp_iswalpha(__wc);} -#else // iswalpha -using ::iswalpha; -#endif - -#ifdef iswblank -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswblank(wint_t __wc) {return iswblank(__wc);} -#undef iswblank -inline _LIBCPP_INLINE_VISIBILITY int iswblank(wint_t __wc) {return __libcpp_iswblank(__wc);} -#else // iswblank -using ::iswblank; -#endif - -#ifdef iswcntrl -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswcntrl(wint_t __wc) {return iswcntrl(__wc);} -#undef iswcntrl -inline _LIBCPP_INLINE_VISIBILITY int iswcntrl(wint_t __wc) {return __libcpp_iswcntrl(__wc);} -#else // iswcntrl -using ::iswcntrl; -#endif - -#ifdef iswdigit -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswdigit(wint_t __wc) {return iswdigit(__wc);} -#undef iswdigit -inline _LIBCPP_INLINE_VISIBILITY int iswdigit(wint_t __wc) {return __libcpp_iswdigit(__wc);} -#else // iswdigit -using ::iswdigit; -#endif - -#ifdef iswgraph -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswgraph(wint_t __wc) {return iswgraph(__wc);} -#undef iswgraph -inline _LIBCPP_INLINE_VISIBILITY int iswgraph(wint_t __wc) {return __libcpp_iswgraph(__wc);} -#else // iswgraph -using ::iswgraph; -#endif - -#ifdef iswlower -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswlower(wint_t __wc) {return iswlower(__wc);} -#undef iswlower -inline _LIBCPP_INLINE_VISIBILITY int iswlower(wint_t __wc) {return __libcpp_iswlower(__wc);} -#else // iswlower -using ::iswlower; -#endif - -#ifdef iswprint -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswprint(wint_t __wc) {return iswprint(__wc);} -#undef iswprint -inline _LIBCPP_INLINE_VISIBILITY int iswprint(wint_t __wc) {return __libcpp_iswprint(__wc);} -#else // iswprint -using ::iswprint; -#endif - -#ifdef iswpunct -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswpunct(wint_t __wc) {return iswpunct(__wc);} -#undef iswpunct -inline _LIBCPP_INLINE_VISIBILITY int iswpunct(wint_t __wc) {return __libcpp_iswpunct(__wc);} -#else // iswpunct -using ::iswpunct; -#endif - -#ifdef iswspace -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswspace(wint_t __wc) {return iswspace(__wc);} -#undef iswspace -inline _LIBCPP_INLINE_VISIBILITY int iswspace(wint_t __wc) {return __libcpp_iswspace(__wc);} -#else // iswspace -using ::iswspace; -#endif - -#ifdef iswupper -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswupper(wint_t __wc) {return iswupper(__wc);} -#undef iswupper -inline _LIBCPP_INLINE_VISIBILITY int iswupper(wint_t __wc) {return __libcpp_iswupper(__wc);} -#else // iswupper -using ::iswupper; -#endif - -#ifdef iswxdigit -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswxdigit(wint_t __wc) {return iswxdigit(__wc);} -#undef iswxdigit -inline _LIBCPP_INLINE_VISIBILITY int iswxdigit(wint_t __wc) {return __libcpp_iswxdigit(__wc);} -#else // iswxdigit -using ::iswxdigit; -#endif - -#ifdef iswctype -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_iswctype(wint_t __w, wctype_t __d) {return iswctype(__w, __d);} -#undef iswctype -inline _LIBCPP_INLINE_VISIBILITY int iswctype(wint_t __w, wctype_t __d) {return __libcpp_iswctype(__w, __d);} -#else // iswctype -using ::iswctype; -#endif - -#ifdef wctype -inline _LIBCPP_INLINE_VISIBILITY wctype_t __libcpp_wctype(const char* __p) {return wctype(__p);} -#undef wctype -inline _LIBCPP_INLINE_VISIBILITY wctype_t wctype(const char* __p) {return __libcpp_wctype(__p);} -#else // wctype -using ::wctype; -#endif - -#ifdef towlower -inline _LIBCPP_INLINE_VISIBILITY wint_t __libcpp_towlower(wint_t __wc) {return towlower(__wc);} -#undef towlower -inline _LIBCPP_INLINE_VISIBILITY wint_t towlower(wint_t __wc) {return __libcpp_towlower(__wc);} -#else // towlower -using ::towlower; -#endif - -#ifdef towupper -inline _LIBCPP_INLINE_VISIBILITY wint_t __libcpp_towupper(wint_t __wc) {return towupper(__wc);} -#undef towupper -inline _LIBCPP_INLINE_VISIBILITY wint_t towupper(wint_t __wc) {return __libcpp_towupper(__wc);} -#else // towupper -using ::towupper; -#endif - -#ifdef towctrans -inline _LIBCPP_INLINE_VISIBILITY wint_t __libcpp_towctrans(wint_t __wc, wctype_t __d) {return towctrans(__wc, __d);} -#undef towctrans -inline _LIBCPP_INLINE_VISIBILITY wint_t towctrans(wint_t __wc, wctype_t __d) {return __libcpp_towctrans(__wc, __d);} -#else // towctrans -using ::towctrans; -#endif - -#ifdef wctrans -inline _LIBCPP_INLINE_VISIBILITY wctrans_t __libcpp_wctrans(const char* __p) {return wctrans(__p);} -#undef wctrans -inline _LIBCPP_INLINE_VISIBILITY wctrans_t wctrans(const char* __p) {return __libcpp_wctrans(__p);} -#else // wctrans -using ::wctrans; -#endif - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_CWCTYPE diff --git a/libcxx/include/deque b/libcxx/include/deque deleted file mode 100644 index 78ef118c3..000000000 --- a/libcxx/include/deque +++ /dev/null @@ -1,2870 +0,0 @@ -// -*- C++ -*- -//===---------------------------- deque -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_DEQUE -#define _LIBCPP_DEQUE - -/* - deque synopsis - -namespace std -{ - -template > -class deque -{ -public: - // types: - typedef T value_type; - typedef Allocator allocator_type; - - typedef typename allocator_type::reference reference; - typedef typename allocator_type::const_reference const_reference; - typedef implementation-defined iterator; - typedef implementation-defined const_iterator; - typedef typename allocator_type::size_type size_type; - typedef typename allocator_type::difference_type difference_type; - - typedef typename allocator_type::pointer pointer; - typedef typename allocator_type::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // construct/copy/destroy: - deque() noexcept(is_nothrow_default_constructible::value); - explicit deque(const allocator_type& a); - explicit deque(size_type n); - explicit deque(size_type n, const allocator_type& a); // C++14 - deque(size_type n, const value_type& v); - deque(size_type n, const value_type& v, const allocator_type& a); - template - deque(InputIterator f, InputIterator l); - template - deque(InputIterator f, InputIterator l, const allocator_type& a); - deque(const deque& c); - deque(deque&& c) - noexcept(is_nothrow_move_constructible::value); - deque(initializer_list il, const Allocator& a = allocator_type()); - deque(const deque& c, const allocator_type& a); - deque(deque&& c, const allocator_type& a); - ~deque(); - - deque& operator=(const deque& c); - deque& operator=(deque&& c) - noexcept( - allocator_type::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value); - deque& operator=(initializer_list il); - - template - void assign(InputIterator f, InputIterator l); - void assign(size_type n, const value_type& v); - void assign(initializer_list il); - - allocator_type get_allocator() const noexcept; - - // iterators: - - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - reverse_iterator rbegin() noexcept; - const_reverse_iterator rbegin() const noexcept; - reverse_iterator rend() noexcept; - const_reverse_iterator rend() const noexcept; - - const_iterator cbegin() const noexcept; - const_iterator cend() const noexcept; - const_reverse_iterator crbegin() const noexcept; - const_reverse_iterator crend() const noexcept; - - // capacity: - size_type size() const noexcept; - size_type max_size() const noexcept; - void resize(size_type n); - void resize(size_type n, const value_type& v); - void shrink_to_fit(); - bool empty() const noexcept; - - // element access: - reference operator[](size_type i); - const_reference operator[](size_type i) const; - reference at(size_type i); - const_reference at(size_type i) const; - reference front(); - const_reference front() const; - reference back(); - const_reference back() const; - - // modifiers: - void push_front(const value_type& v); - void push_front(value_type&& v); - void push_back(const value_type& v); - void push_back(value_type&& v); - template void emplace_front(Args&&... args); - template void emplace_back(Args&&... args); - template iterator emplace(const_iterator p, Args&&... args); - iterator insert(const_iterator p, const value_type& v); - iterator insert(const_iterator p, value_type&& v); - iterator insert(const_iterator p, size_type n, const value_type& v); - template - iterator insert(const_iterator p, InputIterator f, InputIterator l); - iterator insert(const_iterator p, initializer_list il); - void pop_front(); - void pop_back(); - iterator erase(const_iterator p); - iterator erase(const_iterator f, const_iterator l); - void swap(deque& c) - noexcept(!allocator_type::propagate_on_container_swap::value || - __is_nothrow_swappable::value); - void clear() noexcept; -}; - -template - bool operator==(const deque& x, const deque& y); -template - bool operator< (const deque& x, const deque& y); -template - bool operator!=(const deque& x, const deque& y); -template - bool operator> (const deque& x, const deque& y); -template - bool operator>=(const deque& x, const deque& y); -template - bool operator<=(const deque& x, const deque& y); - -// specialized algorithms: -template - void swap(deque& x, deque& y) - noexcept(noexcept(x.swap(y))); - -} // std - -*/ - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#include <__config> -#include <__split_buffer> -#include -#include -#include -#include -#include - -#include <__undef_min_max> - -_LIBCPP_BEGIN_NAMESPACE_STD - -template class __deque_base; -template > class _LIBCPP_TYPE_VIS_ONLY deque; - -template -class _LIBCPP_TYPE_VIS_ONLY __deque_iterator; - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -copy(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type* = 0); - -template -_OutputIterator -copy(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r); - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -copy(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r); - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -copy_backward(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type* = 0); - -template -_OutputIterator -copy_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r); - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -copy_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r); - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -move(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type* = 0); - -template -_OutputIterator -move(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r); - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -move(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r); - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -move_backward(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type* = 0); - -template -_OutputIterator -move_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r); - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -move_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r); - -template -class _LIBCPP_TYPE_VIS_ONLY __deque_iterator -{ - typedef _MapPointer __map_iterator; -public: - typedef _Pointer pointer; - typedef _DiffType difference_type; -private: - __map_iterator __m_iter_; - pointer __ptr_; - - static const difference_type __block_size = _BlockSize; -public: - typedef _ValueType value_type; - typedef random_access_iterator_tag iterator_category; - typedef _Reference reference; - - _LIBCPP_INLINE_VISIBILITY __deque_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER > 11 - : __m_iter_(nullptr), __ptr_(nullptr) -#endif - {} - - template - _LIBCPP_INLINE_VISIBILITY - __deque_iterator(const __deque_iterator& __it, - typename enable_if::value>::type* = 0) _NOEXCEPT - : __m_iter_(__it.__m_iter_), __ptr_(__it.__ptr_) {} - - _LIBCPP_INLINE_VISIBILITY reference operator*() const {return *__ptr_;} - _LIBCPP_INLINE_VISIBILITY pointer operator->() const {return __ptr_;} - - _LIBCPP_INLINE_VISIBILITY __deque_iterator& operator++() - { - if (++__ptr_ - *__m_iter_ == __block_size) - { - ++__m_iter_; - __ptr_ = *__m_iter_; - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY __deque_iterator operator++(int) - { - __deque_iterator __tmp = *this; - ++(*this); - return __tmp; - } - - _LIBCPP_INLINE_VISIBILITY __deque_iterator& operator--() - { - if (__ptr_ == *__m_iter_) - { - --__m_iter_; - __ptr_ = *__m_iter_ + __block_size; - } - --__ptr_; - return *this; - } - - _LIBCPP_INLINE_VISIBILITY __deque_iterator operator--(int) - { - __deque_iterator __tmp = *this; - --(*this); - return __tmp; - } - - _LIBCPP_INLINE_VISIBILITY __deque_iterator& operator+=(difference_type __n) - { - if (__n != 0) - { - __n += __ptr_ - *__m_iter_; - if (__n > 0) - { - __m_iter_ += __n / __block_size; - __ptr_ = *__m_iter_ + __n % __block_size; - } - else // (__n < 0) - { - difference_type __z = __block_size - 1 - __n; - __m_iter_ -= __z / __block_size; - __ptr_ = *__m_iter_ + (__block_size - 1 - __z % __block_size); - } - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY __deque_iterator& operator-=(difference_type __n) - { - return *this += -__n; - } - - _LIBCPP_INLINE_VISIBILITY __deque_iterator operator+(difference_type __n) const - { - __deque_iterator __t(*this); - __t += __n; - return __t; - } - - _LIBCPP_INLINE_VISIBILITY __deque_iterator operator-(difference_type __n) const - { - __deque_iterator __t(*this); - __t -= __n; - return __t; - } - - _LIBCPP_INLINE_VISIBILITY - friend __deque_iterator operator+(difference_type __n, const __deque_iterator& __it) - {return __it + __n;} - - _LIBCPP_INLINE_VISIBILITY - friend difference_type operator-(const __deque_iterator& __x, const __deque_iterator& __y) - { - if (__x != __y) - return (__x.__m_iter_ - __y.__m_iter_) * __block_size - + (__x.__ptr_ - *__x.__m_iter_) - - (__y.__ptr_ - *__y.__m_iter_); - return 0; - } - - _LIBCPP_INLINE_VISIBILITY reference operator[](difference_type __n) const - {return *(*this + __n);} - - _LIBCPP_INLINE_VISIBILITY friend - bool operator==(const __deque_iterator& __x, const __deque_iterator& __y) - {return __x.__ptr_ == __y.__ptr_;} - - _LIBCPP_INLINE_VISIBILITY friend - bool operator!=(const __deque_iterator& __x, const __deque_iterator& __y) - {return !(__x == __y);} - - _LIBCPP_INLINE_VISIBILITY friend - bool operator<(const __deque_iterator& __x, const __deque_iterator& __y) - {return __x.__m_iter_ < __y.__m_iter_ || - (__x.__m_iter_ == __y.__m_iter_ && __x.__ptr_ < __y.__ptr_);} - - _LIBCPP_INLINE_VISIBILITY friend - bool operator>(const __deque_iterator& __x, const __deque_iterator& __y) - {return __y < __x;} - - _LIBCPP_INLINE_VISIBILITY friend - bool operator<=(const __deque_iterator& __x, const __deque_iterator& __y) - {return !(__y < __x);} - - _LIBCPP_INLINE_VISIBILITY friend - bool operator>=(const __deque_iterator& __x, const __deque_iterator& __y) - {return !(__x < __y);} - -private: - _LIBCPP_INLINE_VISIBILITY __deque_iterator(__map_iterator __m, pointer __p) _NOEXCEPT - : __m_iter_(__m), __ptr_(__p) {} - - template friend class __deque_base; - template friend class _LIBCPP_TYPE_VIS_ONLY deque; - template - friend class _LIBCPP_TYPE_VIS_ONLY __deque_iterator; - - template - friend - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> - copy(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type*); - - template - friend - _OutputIterator - copy(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r); - - template - friend - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> - copy(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r); - - template - friend - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> - copy_backward(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type*); - - template - friend - _OutputIterator - copy_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r); - - template - friend - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> - copy_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r); - - template - friend - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> - move(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type*); - - template - friend - _OutputIterator - move(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r); - - template - friend - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> - move(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r); - - template - friend - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> - move_backward(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type*); - - template - friend - _OutputIterator - move_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r); - - template - friend - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> - move_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r); -}; - -// copy - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -copy(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type*) -{ - typedef typename __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2>::difference_type difference_type; - typedef typename __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2>::pointer pointer; - while (__f != __l) - { - pointer __rb = __r.__ptr_; - pointer __re = *__r.__m_iter_ + _B2; - difference_type __bs = __re - __rb; - difference_type __n = __l - __f; - _RAIter __m = __l; - if (__n > __bs) - { - __n = __bs; - __m = __f + __n; - } - _VSTD::copy(__f, __m, __rb); - __f = __m; - __r += __n; - } - return __r; -} - -template -_OutputIterator -copy(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r) -{ - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::difference_type difference_type; - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::pointer pointer; - difference_type __n = __l - __f; - while (__n > 0) - { - pointer __fb = __f.__ptr_; - pointer __fe = *__f.__m_iter_ + _B1; - difference_type __bs = __fe - __fb; - if (__bs > __n) - { - __bs = __n; - __fe = __fb + __bs; - } - __r = _VSTD::copy(__fb, __fe, __r); - __n -= __bs; - __f += __bs; - } - return __r; -} - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -copy(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r) -{ - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::difference_type difference_type; - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::pointer pointer; - difference_type __n = __l - __f; - while (__n > 0) - { - pointer __fb = __f.__ptr_; - pointer __fe = *__f.__m_iter_ + _B1; - difference_type __bs = __fe - __fb; - if (__bs > __n) - { - __bs = __n; - __fe = __fb + __bs; - } - __r = _VSTD::copy(__fb, __fe, __r); - __n -= __bs; - __f += __bs; - } - return __r; -} - -// copy_backward - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -copy_backward(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type*) -{ - typedef typename __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2>::difference_type difference_type; - typedef typename __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2>::pointer pointer; - while (__f != __l) - { - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __rp = _VSTD::prev(__r); - pointer __rb = *__rp.__m_iter_; - pointer __re = __rp.__ptr_ + 1; - difference_type __bs = __re - __rb; - difference_type __n = __l - __f; - _RAIter __m = __f; - if (__n > __bs) - { - __n = __bs; - __m = __l - __n; - } - _VSTD::copy_backward(__m, __l, __re); - __l = __m; - __r -= __n; - } - return __r; -} - -template -_OutputIterator -copy_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r) -{ - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::difference_type difference_type; - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::pointer pointer; - difference_type __n = __l - __f; - while (__n > 0) - { - --__l; - pointer __lb = *__l.__m_iter_; - pointer __le = __l.__ptr_ + 1; - difference_type __bs = __le - __lb; - if (__bs > __n) - { - __bs = __n; - __lb = __le - __bs; - } - __r = _VSTD::copy_backward(__lb, __le, __r); - __n -= __bs; - __l -= __bs - 1; - } - return __r; -} - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -copy_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r) -{ - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::difference_type difference_type; - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::pointer pointer; - difference_type __n = __l - __f; - while (__n > 0) - { - --__l; - pointer __lb = *__l.__m_iter_; - pointer __le = __l.__ptr_ + 1; - difference_type __bs = __le - __lb; - if (__bs > __n) - { - __bs = __n; - __lb = __le - __bs; - } - __r = _VSTD::copy_backward(__lb, __le, __r); - __n -= __bs; - __l -= __bs - 1; - } - return __r; -} - -// move - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -move(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type*) -{ - typedef typename __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2>::difference_type difference_type; - typedef typename __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2>::pointer pointer; - while (__f != __l) - { - pointer __rb = __r.__ptr_; - pointer __re = *__r.__m_iter_ + _B2; - difference_type __bs = __re - __rb; - difference_type __n = __l - __f; - _RAIter __m = __l; - if (__n > __bs) - { - __n = __bs; - __m = __f + __n; - } - _VSTD::move(__f, __m, __rb); - __f = __m; - __r += __n; - } - return __r; -} - -template -_OutputIterator -move(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r) -{ - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::difference_type difference_type; - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::pointer pointer; - difference_type __n = __l - __f; - while (__n > 0) - { - pointer __fb = __f.__ptr_; - pointer __fe = *__f.__m_iter_ + _B1; - difference_type __bs = __fe - __fb; - if (__bs > __n) - { - __bs = __n; - __fe = __fb + __bs; - } - __r = _VSTD::move(__fb, __fe, __r); - __n -= __bs; - __f += __bs; - } - return __r; -} - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -move(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r) -{ - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::difference_type difference_type; - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::pointer pointer; - difference_type __n = __l - __f; - while (__n > 0) - { - pointer __fb = __f.__ptr_; - pointer __fe = *__f.__m_iter_ + _B1; - difference_type __bs = __fe - __fb; - if (__bs > __n) - { - __bs = __n; - __fe = __fb + __bs; - } - __r = _VSTD::move(__fb, __fe, __r); - __n -= __bs; - __f += __bs; - } - return __r; -} - -// move_backward - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -move_backward(_RAIter __f, - _RAIter __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type*) -{ - typedef typename __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2>::difference_type difference_type; - typedef typename __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2>::pointer pointer; - while (__f != __l) - { - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __rp = _VSTD::prev(__r); - pointer __rb = *__rp.__m_iter_; - pointer __re = __rp.__ptr_ + 1; - difference_type __bs = __re - __rb; - difference_type __n = __l - __f; - _RAIter __m = __f; - if (__n > __bs) - { - __n = __bs; - __m = __l - __n; - } - _VSTD::move_backward(__m, __l, __re); - __l = __m; - __r -= __n; - } - return __r; -} - -template -_OutputIterator -move_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - _OutputIterator __r) -{ - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::difference_type difference_type; - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::pointer pointer; - difference_type __n = __l - __f; - while (__n > 0) - { - --__l; - pointer __lb = *__l.__m_iter_; - pointer __le = __l.__ptr_ + 1; - difference_type __bs = __le - __lb; - if (__bs > __n) - { - __bs = __n; - __lb = __le - __bs; - } - __r = _VSTD::move_backward(__lb, __le, __r); - __n -= __bs; - __l -= __bs - 1; - } - return __r; -} - -template -__deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> -move_backward(__deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __f, - __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1> __l, - __deque_iterator<_V2, _P2, _R2, _M2, _D2, _B2> __r) -{ - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::difference_type difference_type; - typedef typename __deque_iterator<_V1, _P1, _R1, _M1, _D1, _B1>::pointer pointer; - difference_type __n = __l - __f; - while (__n > 0) - { - --__l; - pointer __lb = *__l.__m_iter_; - pointer __le = __l.__ptr_ + 1; - difference_type __bs = __le - __lb; - if (__bs > __n) - { - __bs = __n; - __lb = __le - __bs; - } - __r = _VSTD::move_backward(__lb, __le, __r); - __n -= __bs; - __l -= __bs - 1; - } - return __r; -} - -template -class __deque_base_common -{ -protected: - void __throw_length_error() const; - void __throw_out_of_range() const; -}; - -template -void -__deque_base_common<__b>::__throw_length_error() const -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - throw length_error("deque"); -#endif -} - -template -void -__deque_base_common<__b>::__throw_out_of_range() const -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("deque"); -#endif -} - -template -class __deque_base - : protected __deque_base_common -{ - __deque_base(const __deque_base& __c); - __deque_base& operator=(const __deque_base& __c); -protected: - typedef _Tp value_type; - typedef _Allocator allocator_type; - typedef allocator_traits __alloc_traits; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename __alloc_traits::size_type size_type; - typedef typename __alloc_traits::difference_type difference_type; - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; - - static const difference_type __block_size = sizeof(value_type) < 256 ? 4096 / sizeof(value_type) : 16; - - typedef typename __rebind_alloc_helper<__alloc_traits, pointer>::type __pointer_allocator; - typedef allocator_traits<__pointer_allocator> __map_traits; - typedef typename __map_traits::pointer __map_pointer; - typedef typename __rebind_alloc_helper<__alloc_traits, const_pointer>::type __const_pointer_allocator; - typedef typename allocator_traits<__const_pointer_allocator>::const_pointer __map_const_pointer; - typedef __split_buffer __map; - - typedef __deque_iterator iterator; - typedef __deque_iterator const_iterator; - - __map __map_; - size_type __start_; - __compressed_pair __size_; - - iterator begin() _NOEXCEPT; - const_iterator begin() const _NOEXCEPT; - iterator end() _NOEXCEPT; - const_iterator end() const _NOEXCEPT; - - _LIBCPP_INLINE_VISIBILITY size_type& size() {return __size_.first();} - _LIBCPP_INLINE_VISIBILITY - const size_type& size() const _NOEXCEPT {return __size_.first();} - _LIBCPP_INLINE_VISIBILITY allocator_type& __alloc() {return __size_.second();} - _LIBCPP_INLINE_VISIBILITY - const allocator_type& __alloc() const _NOEXCEPT {return __size_.second();} - - __deque_base() - _NOEXCEPT_(is_nothrow_default_constructible::value); - explicit __deque_base(const allocator_type& __a); -public: - ~__deque_base(); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - __deque_base(__deque_base&& __c) - _NOEXCEPT_(is_nothrow_move_constructible::value); - __deque_base(__deque_base&& __c, const allocator_type& __a); - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - void swap(__deque_base& __c) - _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || - __is_nothrow_swappable::value); -protected: - void clear() _NOEXCEPT; - - bool __invariants() const; - - _LIBCPP_INLINE_VISIBILITY - void __move_assign(__deque_base& __c) - _NOEXCEPT_(__alloc_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value) - { - __map_ = _VSTD::move(__c.__map_); - __start_ = __c.__start_; - size() = __c.size(); - __move_assign_alloc(__c); - __c.__start_ = __c.size() = 0; - } - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__deque_base& __c) - _NOEXCEPT_(!__alloc_traits::propagate_on_container_move_assignment::value || - is_nothrow_move_assignable::value) - {__move_assign_alloc(__c, integral_constant());} - -private: - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__deque_base& __c, true_type) - _NOEXCEPT_(is_nothrow_move_assignable::value) - { - __alloc() = _VSTD::move(__c.__alloc()); - } - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__deque_base&, false_type) _NOEXCEPT - {} - - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(allocator_type& __x, allocator_type& __y) - _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || - __is_nothrow_swappable::value) - {__swap_alloc(__x, __y, integral_constant());} - - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(allocator_type& __x, allocator_type& __y, true_type) - _NOEXCEPT_(__is_nothrow_swappable::value) - { - using _VSTD::swap; - swap(__x, __y); - } - - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(allocator_type&, allocator_type&, false_type) - _NOEXCEPT - {} -}; - -template -bool -__deque_base<_Tp, _Allocator>::__invariants() const -{ - if (!__map_.__invariants()) - return false; - if (__map_.size() >= size_type(-1) / __block_size) - return false; - for (typename __map::const_iterator __i = __map_.begin(), __e = __map_.end(); - __i != __e; ++__i) - if (*__i == nullptr) - return false; - if (__map_.size() != 0) - { - if (size() >= __map_.size() * __block_size) - return false; - if (__start_ >= __map_.size() * __block_size - size()) - return false; - } - else - { - if (size() != 0) - return false; - if (__start_ != 0) - return false; - } - return true; -} - -template -typename __deque_base<_Tp, _Allocator>::iterator -__deque_base<_Tp, _Allocator>::begin() _NOEXCEPT -{ - __map_pointer __mp = __map_.begin() + __start_ / __block_size; - return iterator(__mp, __map_.empty() ? 0 : *__mp + __start_ % __block_size); -} - -template -typename __deque_base<_Tp, _Allocator>::const_iterator -__deque_base<_Tp, _Allocator>::begin() const _NOEXCEPT -{ - __map_const_pointer __mp = static_cast<__map_const_pointer>(__map_.begin() + __start_ / __block_size); - return const_iterator(__mp, __map_.empty() ? 0 : *__mp + __start_ % __block_size); -} - -template -typename __deque_base<_Tp, _Allocator>::iterator -__deque_base<_Tp, _Allocator>::end() _NOEXCEPT -{ - size_type __p = size() + __start_; - __map_pointer __mp = __map_.begin() + __p / __block_size; - return iterator(__mp, __map_.empty() ? 0 : *__mp + __p % __block_size); -} - -template -typename __deque_base<_Tp, _Allocator>::const_iterator -__deque_base<_Tp, _Allocator>::end() const _NOEXCEPT -{ - size_type __p = size() + __start_; - __map_const_pointer __mp = static_cast<__map_const_pointer>(__map_.begin() + __p / __block_size); - return const_iterator(__mp, __map_.empty() ? 0 : *__mp + __p % __block_size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__deque_base<_Tp, _Allocator>::__deque_base() - _NOEXCEPT_(is_nothrow_default_constructible::value) - : __start_(0), __size_(0) {} - -template -inline _LIBCPP_INLINE_VISIBILITY -__deque_base<_Tp, _Allocator>::__deque_base(const allocator_type& __a) - : __map_(__pointer_allocator(__a)), __start_(0), __size_(0, __a) {} - -template -__deque_base<_Tp, _Allocator>::~__deque_base() -{ - clear(); - typename __map::iterator __i = __map_.begin(); - typename __map::iterator __e = __map_.end(); - for (; __i != __e; ++__i) - __alloc_traits::deallocate(__alloc(), *__i, __block_size); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -__deque_base<_Tp, _Allocator>::__deque_base(__deque_base&& __c) - _NOEXCEPT_(is_nothrow_move_constructible::value) - : __map_(_VSTD::move(__c.__map_)), - __start_(_VSTD::move(__c.__start_)), - __size_(_VSTD::move(__c.__size_)) -{ - __c.__start_ = 0; - __c.size() = 0; -} - -template -__deque_base<_Tp, _Allocator>::__deque_base(__deque_base&& __c, const allocator_type& __a) - : __map_(_VSTD::move(__c.__map_), __pointer_allocator(__a)), - __start_(_VSTD::move(__c.__start_)), - __size_(_VSTD::move(__c.size()), __a) -{ - if (__a == __c.__alloc()) - { - __c.__start_ = 0; - __c.size() = 0; - } - else - { - __map_.clear(); - __start_ = 0; - size() = 0; - } -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__deque_base<_Tp, _Allocator>::swap(__deque_base& __c) - _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value|| - __is_nothrow_swappable::value) -{ - __map_.swap(__c.__map_); - _VSTD::swap(__start_, __c.__start_); - _VSTD::swap(size(), __c.size()); - __swap_alloc(__alloc(), __c.__alloc()); -} - -template -void -__deque_base<_Tp, _Allocator>::clear() _NOEXCEPT -{ - allocator_type& __a = __alloc(); - for (iterator __i = begin(), __e = end(); __i != __e; ++__i) - __alloc_traits::destroy(__a, _VSTD::addressof(*__i)); - size() = 0; - while (__map_.size() > 2) - { - __alloc_traits::deallocate(__a, __map_.front(), __block_size); - __map_.pop_front(); - } - switch (__map_.size()) - { - case 1: - __start_ = __block_size / 2; - break; - case 2: - __start_ = __block_size; - break; - } -} - -template */> -class _LIBCPP_TYPE_VIS_ONLY deque - : private __deque_base<_Tp, _Allocator> -{ -public: - // types: - - typedef _Tp value_type; - typedef _Allocator allocator_type; - - typedef __deque_base __base; - - typedef typename __base::__alloc_traits __alloc_traits; - typedef typename __base::reference reference; - typedef typename __base::const_reference const_reference; - typedef typename __base::iterator iterator; - typedef typename __base::const_iterator 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 _VSTD::reverse_iterator reverse_iterator; - typedef _VSTD::reverse_iterator const_reverse_iterator; - - // construct/copy/destroy: - _LIBCPP_INLINE_VISIBILITY - deque() - _NOEXCEPT_(is_nothrow_default_constructible::value) - {} - _LIBCPP_INLINE_VISIBILITY explicit deque(const allocator_type& __a) : __base(__a) {} - explicit deque(size_type __n); -#if _LIBCPP_STD_VER > 11 - explicit deque(size_type __n, const _Allocator& __a); -#endif - deque(size_type __n, const value_type& __v); - deque(size_type __n, const value_type& __v, const allocator_type& __a); - template - deque(_InputIter __f, _InputIter __l, - typename enable_if<__is_input_iterator<_InputIter>::value>::type* = 0); - template - deque(_InputIter __f, _InputIter __l, const allocator_type& __a, - typename enable_if<__is_input_iterator<_InputIter>::value>::type* = 0); - deque(const deque& __c); - deque(const deque& __c, const allocator_type& __a); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - deque(initializer_list __il); - deque(initializer_list __il, const allocator_type& __a); -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - deque& operator=(const deque& __c); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY - deque& operator=(initializer_list __il) {assign(__il); return *this;} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - deque(deque&& __c) _NOEXCEPT_(is_nothrow_move_constructible<__base>::value); - deque(deque&& __c, const allocator_type& __a); - deque& operator=(deque&& __c) - _NOEXCEPT_(__alloc_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - template - void assign(_InputIter __f, _InputIter __l, - typename enable_if<__is_input_iterator<_InputIter>::value && - !__is_random_access_iterator<_InputIter>::value>::type* = 0); - template - void assign(_RAIter __f, _RAIter __l, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type* = 0); - void assign(size_type __n, const value_type& __v); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY - void assign(initializer_list __il) {assign(__il.begin(), __il.end());} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - allocator_type get_allocator() const _NOEXCEPT; - - // iterators: - - _LIBCPP_INLINE_VISIBILITY - iterator begin() _NOEXCEPT {return __base::begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT {return __base::begin();} - _LIBCPP_INLINE_VISIBILITY - iterator end() _NOEXCEPT {return __base::end();} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT {return __base::end();} - - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rbegin() _NOEXCEPT - {return reverse_iterator(__base::end());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rbegin() const _NOEXCEPT - {return const_reverse_iterator(__base::end());} - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rend() _NOEXCEPT - {return reverse_iterator(__base::begin());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rend() const _NOEXCEPT - {return const_reverse_iterator(__base::begin());} - - _LIBCPP_INLINE_VISIBILITY - const_iterator cbegin() const _NOEXCEPT - {return __base::begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator cend() const _NOEXCEPT - {return __base::end();} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crbegin() const _NOEXCEPT - {return const_reverse_iterator(__base::end());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crend() const _NOEXCEPT - {return const_reverse_iterator(__base::begin());} - - // capacity: - _LIBCPP_INLINE_VISIBILITY - size_type size() const _NOEXCEPT {return __base::size();} - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const _NOEXCEPT - {return __alloc_traits::max_size(__base::__alloc());} - void resize(size_type __n); - void resize(size_type __n, const value_type& __v); - void shrink_to_fit() _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY - bool empty() const _NOEXCEPT {return __base::size() == 0;} - - // element access: - reference operator[](size_type __i); - const_reference operator[](size_type __i) const; - reference at(size_type __i); - const_reference at(size_type __i) const; - reference front(); - const_reference front() const; - reference back(); - const_reference back() const; - - // 23.2.2.3 modifiers: - void push_front(const value_type& __v); - void push_back(const value_type& __v); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - template void emplace_front(_Args&&... __args); - template void emplace_back(_Args&&... __args); - template iterator emplace(const_iterator __p, _Args&&... __args); -#endif // _LIBCPP_HAS_NO_VARIADICS - void push_front(value_type&& __v); - void push_back(value_type&& __v); - iterator insert(const_iterator __p, value_type&& __v); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - iterator insert(const_iterator __p, const value_type& __v); - iterator insert(const_iterator __p, size_type __n, const value_type& __v); - template - iterator insert(const_iterator __p, _InputIter __f, _InputIter __l, - typename enable_if<__is_input_iterator<_InputIter>::value - &&!__is_forward_iterator<_InputIter>::value>::type* = 0); - template - iterator insert(const_iterator __p, _ForwardIterator __f, _ForwardIterator __l, - typename enable_if<__is_forward_iterator<_ForwardIterator>::value - &&!__is_bidirectional_iterator<_ForwardIterator>::value>::type* = 0); - template - iterator insert(const_iterator __p, _BiIter __f, _BiIter __l, - typename enable_if<__is_bidirectional_iterator<_BiIter>::value>::type* = 0); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY - iterator insert(const_iterator __p, initializer_list __il) - {return insert(__p, __il.begin(), __il.end());} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - void pop_front(); - void pop_back(); - iterator erase(const_iterator __p); - iterator erase(const_iterator __f, const_iterator __l); - - void swap(deque& __c) - _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || - __is_nothrow_swappable::value); - void clear() _NOEXCEPT; - - _LIBCPP_INLINE_VISIBILITY - bool __invariants() const {return __base::__invariants();} -private: - typedef typename __base::__map_const_pointer __map_const_pointer; - - _LIBCPP_INLINE_VISIBILITY - static size_type __recommend_blocks(size_type __n) - { - return __n / __base::__block_size + (__n % __base::__block_size != 0); - } - _LIBCPP_INLINE_VISIBILITY - size_type __capacity() const - { - return __base::__map_.size() == 0 ? 0 : __base::__map_.size() * __base::__block_size - 1; - } - _LIBCPP_INLINE_VISIBILITY - size_type __front_spare() const - { - return __base::__start_; - } - _LIBCPP_INLINE_VISIBILITY - size_type __back_spare() const - { - return __capacity() - (__base::__start_ + __base::size()); - } - - template - void __append(_InpIter __f, _InpIter __l, - typename enable_if<__is_input_iterator<_InpIter>::value && - !__is_forward_iterator<_InpIter>::value>::type* = 0); - template - void __append(_ForIter __f, _ForIter __l, - typename enable_if<__is_forward_iterator<_ForIter>::value>::type* = 0); - void __append(size_type __n); - void __append(size_type __n, const value_type& __v); - void __erase_to_end(const_iterator __f); - void __add_front_capacity(); - void __add_front_capacity(size_type __n); - void __add_back_capacity(); - void __add_back_capacity(size_type __n); - iterator __move_and_check(iterator __f, iterator __l, iterator __r, - const_pointer& __vt); - iterator __move_backward_and_check(iterator __f, iterator __l, iterator __r, - const_pointer& __vt); - void __move_construct_and_check(iterator __f, iterator __l, - iterator __r, const_pointer& __vt); - void __move_construct_backward_and_check(iterator __f, iterator __l, - iterator __r, const_pointer& __vt); - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const deque& __c) - {__copy_assign_alloc(__c, integral_constant());} - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const deque& __c, true_type) - { - if (__base::__alloc() != __c.__alloc()) - { - clear(); - shrink_to_fit(); - } - __base::__alloc() = __c.__alloc(); - __base::__map_.__alloc() = __c.__map_.__alloc(); - } - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const deque&, false_type) - {} - - void __move_assign(deque& __c, true_type) - _NOEXCEPT_(is_nothrow_move_assignable::value); - void __move_assign(deque& __c, false_type); -}; - -template -deque<_Tp, _Allocator>::deque(size_type __n) -{ - if (__n > 0) - __append(__n); -} - -#if _LIBCPP_STD_VER > 11 -template -deque<_Tp, _Allocator>::deque(size_type __n, const _Allocator& __a) - : __base(__a) -{ - if (__n > 0) - __append(__n); -} -#endif - -template -deque<_Tp, _Allocator>::deque(size_type __n, const value_type& __v) -{ - if (__n > 0) - __append(__n, __v); -} - -template -deque<_Tp, _Allocator>::deque(size_type __n, const value_type& __v, const allocator_type& __a) - : __base(__a) -{ - if (__n > 0) - __append(__n, __v); -} - -template -template -deque<_Tp, _Allocator>::deque(_InputIter __f, _InputIter __l, - typename enable_if<__is_input_iterator<_InputIter>::value>::type*) -{ - __append(__f, __l); -} - -template -template -deque<_Tp, _Allocator>::deque(_InputIter __f, _InputIter __l, const allocator_type& __a, - typename enable_if<__is_input_iterator<_InputIter>::value>::type*) - : __base(__a) -{ - __append(__f, __l); -} - -template -deque<_Tp, _Allocator>::deque(const deque& __c) - : __base(__alloc_traits::select_on_container_copy_construction(__c.__alloc())) -{ - __append(__c.begin(), __c.end()); -} - -template -deque<_Tp, _Allocator>::deque(const deque& __c, const allocator_type& __a) - : __base(__a) -{ - __append(__c.begin(), __c.end()); -} - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -deque<_Tp, _Allocator>::deque(initializer_list __il) -{ - __append(__il.begin(), __il.end()); -} - -template -deque<_Tp, _Allocator>::deque(initializer_list __il, const allocator_type& __a) - : __base(__a) -{ - __append(__il.begin(), __il.end()); -} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -deque<_Tp, _Allocator>& -deque<_Tp, _Allocator>::operator=(const deque& __c) -{ - if (this != &__c) - { - __copy_assign_alloc(__c); - assign(__c.begin(), __c.end()); - } - return *this; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -deque<_Tp, _Allocator>::deque(deque&& __c) - _NOEXCEPT_(is_nothrow_move_constructible<__base>::value) - : __base(_VSTD::move(__c)) -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -deque<_Tp, _Allocator>::deque(deque&& __c, const allocator_type& __a) - : __base(_VSTD::move(__c), __a) -{ - if (__a != __c.__alloc()) - { - typedef move_iterator _Ip; - assign(_Ip(__c.begin()), _Ip(__c.end())); - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -deque<_Tp, _Allocator>& -deque<_Tp, _Allocator>::operator=(deque&& __c) - _NOEXCEPT_(__alloc_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value) -{ - __move_assign(__c, integral_constant()); - return *this; -} - -template -void -deque<_Tp, _Allocator>::__move_assign(deque& __c, false_type) -{ - if (__base::__alloc() != __c.__alloc()) - { - typedef move_iterator _Ip; - assign(_Ip(__c.begin()), _Ip(__c.end())); - } - else - __move_assign(__c, true_type()); -} - -template -void -deque<_Tp, _Allocator>::__move_assign(deque& __c, true_type) - _NOEXCEPT_(is_nothrow_move_assignable::value) -{ - clear(); - shrink_to_fit(); - __base::__move_assign(__c); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -template -void -deque<_Tp, _Allocator>::assign(_InputIter __f, _InputIter __l, - typename enable_if<__is_input_iterator<_InputIter>::value && - !__is_random_access_iterator<_InputIter>::value>::type*) -{ - iterator __i = __base::begin(); - iterator __e = __base::end(); - for (; __f != __l && __i != __e; ++__f, (void) ++__i) - *__i = *__f; - if (__f != __l) - __append(__f, __l); - else - __erase_to_end(__i); -} - -template -template -void -deque<_Tp, _Allocator>::assign(_RAIter __f, _RAIter __l, - typename enable_if<__is_random_access_iterator<_RAIter>::value>::type*) -{ - if (static_cast(__l - __f) > __base::size()) - { - _RAIter __m = __f + __base::size(); - _VSTD::copy(__f, __m, __base::begin()); - __append(__m, __l); - } - else - __erase_to_end(_VSTD::copy(__f, __l, __base::begin())); -} - -template -void -deque<_Tp, _Allocator>::assign(size_type __n, const value_type& __v) -{ - if (__n > __base::size()) - { - _VSTD::fill_n(__base::begin(), __base::size(), __v); - __n -= __base::size(); - __append(__n, __v); - } - else - __erase_to_end(_VSTD::fill_n(__base::begin(), __n, __v)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Allocator -deque<_Tp, _Allocator>::get_allocator() const _NOEXCEPT -{ - return __base::__alloc(); -} - -template -void -deque<_Tp, _Allocator>::resize(size_type __n) -{ - if (__n > __base::size()) - __append(__n - __base::size()); - else if (__n < __base::size()) - __erase_to_end(__base::begin() + __n); -} - -template -void -deque<_Tp, _Allocator>::resize(size_type __n, const value_type& __v) -{ - if (__n > __base::size()) - __append(__n - __base::size(), __v); - else if (__n < __base::size()) - __erase_to_end(__base::begin() + __n); -} - -template -void -deque<_Tp, _Allocator>::shrink_to_fit() _NOEXCEPT -{ - allocator_type& __a = __base::__alloc(); - if (empty()) - { - while (__base::__map_.size() > 0) - { - __alloc_traits::deallocate(__a, __base::__map_.back(), __base::__block_size); - __base::__map_.pop_back(); - } - __base::__start_ = 0; - } - else - { - if (__front_spare() >= __base::__block_size) - { - __alloc_traits::deallocate(__a, __base::__map_.front(), __base::__block_size); - __base::__map_.pop_front(); - __base::__start_ -= __base::__block_size; - } - if (__back_spare() >= __base::__block_size) - { - __alloc_traits::deallocate(__a, __base::__map_.back(), __base::__block_size); - __base::__map_.pop_back(); - } - } - __base::__map_.shrink_to_fit(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename deque<_Tp, _Allocator>::reference -deque<_Tp, _Allocator>::operator[](size_type __i) -{ - size_type __p = __base::__start_ + __i; - return *(*(__base::__map_.begin() + __p / __base::__block_size) + __p % __base::__block_size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename deque<_Tp, _Allocator>::const_reference -deque<_Tp, _Allocator>::operator[](size_type __i) const -{ - size_type __p = __base::__start_ + __i; - return *(*(__base::__map_.begin() + __p / __base::__block_size) + __p % __base::__block_size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename deque<_Tp, _Allocator>::reference -deque<_Tp, _Allocator>::at(size_type __i) -{ - if (__i >= __base::size()) - __base::__throw_out_of_range(); - size_type __p = __base::__start_ + __i; - return *(*(__base::__map_.begin() + __p / __base::__block_size) + __p % __base::__block_size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename deque<_Tp, _Allocator>::const_reference -deque<_Tp, _Allocator>::at(size_type __i) const -{ - if (__i >= __base::size()) - __base::__throw_out_of_range(); - size_type __p = __base::__start_ + __i; - return *(*(__base::__map_.begin() + __p / __base::__block_size) + __p % __base::__block_size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename deque<_Tp, _Allocator>::reference -deque<_Tp, _Allocator>::front() -{ - return *(*(__base::__map_.begin() + __base::__start_ / __base::__block_size) - + __base::__start_ % __base::__block_size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename deque<_Tp, _Allocator>::const_reference -deque<_Tp, _Allocator>::front() const -{ - return *(*(__base::__map_.begin() + __base::__start_ / __base::__block_size) - + __base::__start_ % __base::__block_size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename deque<_Tp, _Allocator>::reference -deque<_Tp, _Allocator>::back() -{ - size_type __p = __base::size() + __base::__start_ - 1; - return *(*(__base::__map_.begin() + __p / __base::__block_size) + __p % __base::__block_size); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename deque<_Tp, _Allocator>::const_reference -deque<_Tp, _Allocator>::back() const -{ - size_type __p = __base::size() + __base::__start_ - 1; - return *(*(__base::__map_.begin() + __p / __base::__block_size) + __p % __base::__block_size); -} - -template -void -deque<_Tp, _Allocator>::push_back(const value_type& __v) -{ - allocator_type& __a = __base::__alloc(); - if (__back_spare() == 0) - __add_back_capacity(); - // __back_spare() >= 1 - __alloc_traits::construct(__a, _VSTD::addressof(*__base::end()), __v); - ++__base::size(); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -deque<_Tp, _Allocator>::push_back(value_type&& __v) -{ - allocator_type& __a = __base::__alloc(); - if (__back_spare() == 0) - __add_back_capacity(); - // __back_spare() >= 1 - __alloc_traits::construct(__a, _VSTD::addressof(*__base::end()), _VSTD::move(__v)); - ++__base::size(); -} - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -void -deque<_Tp, _Allocator>::emplace_back(_Args&&... __args) -{ - allocator_type& __a = __base::__alloc(); - if (__back_spare() == 0) - __add_back_capacity(); - // __back_spare() >= 1 - __alloc_traits::construct(__a, _VSTD::addressof(*__base::end()), _VSTD::forward<_Args>(__args)...); - ++__base::size(); -} - -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -deque<_Tp, _Allocator>::push_front(const value_type& __v) -{ - allocator_type& __a = __base::__alloc(); - if (__front_spare() == 0) - __add_front_capacity(); - // __front_spare() >= 1 - __alloc_traits::construct(__a, _VSTD::addressof(*--__base::begin()), __v); - --__base::__start_; - ++__base::size(); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -deque<_Tp, _Allocator>::push_front(value_type&& __v) -{ - allocator_type& __a = __base::__alloc(); - if (__front_spare() == 0) - __add_front_capacity(); - // __front_spare() >= 1 - __alloc_traits::construct(__a, _VSTD::addressof(*--__base::begin()), _VSTD::move(__v)); - --__base::__start_; - ++__base::size(); -} - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -void -deque<_Tp, _Allocator>::emplace_front(_Args&&... __args) -{ - allocator_type& __a = __base::__alloc(); - if (__front_spare() == 0) - __add_front_capacity(); - // __front_spare() >= 1 - __alloc_traits::construct(__a, _VSTD::addressof(*--__base::begin()), _VSTD::forward<_Args>(__args)...); - --__base::__start_; - ++__base::size(); -} - -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::insert(const_iterator __p, const value_type& __v) -{ - size_type __pos = __p - __base::begin(); - size_type __to_end = __base::size() - __pos; - allocator_type& __a = __base::__alloc(); - if (__pos < __to_end) - { // insert by shifting things backward - if (__front_spare() == 0) - __add_front_capacity(); - // __front_spare() >= 1 - if (__pos == 0) - { - __alloc_traits::construct(__a, _VSTD::addressof(*--__base::begin()), __v); - --__base::__start_; - ++__base::size(); - } - else - { - const_pointer __vt = pointer_traits::pointer_to(__v); - iterator __b = __base::begin(); - iterator __bm1 = _VSTD::prev(__b); - if (__vt == pointer_traits::pointer_to(*__b)) - __vt = pointer_traits::pointer_to(*__bm1); - __alloc_traits::construct(__a, _VSTD::addressof(*__bm1), _VSTD::move(*__b)); - --__base::__start_; - ++__base::size(); - if (__pos > 1) - __b = __move_and_check(_VSTD::next(__b), __b + __pos, __b, __vt); - *__b = *__vt; - } - } - else - { // insert by shifting things forward - if (__back_spare() == 0) - __add_back_capacity(); - // __back_capacity >= 1 - size_type __de = __base::size() - __pos; - if (__de == 0) - { - __alloc_traits::construct(__a, _VSTD::addressof(*__base::end()), __v); - ++__base::size(); - } - else - { - const_pointer __vt = pointer_traits::pointer_to(__v); - iterator __e = __base::end(); - iterator __em1 = _VSTD::prev(__e); - if (__vt == pointer_traits::pointer_to(*__em1)) - __vt = pointer_traits::pointer_to(*__e); - __alloc_traits::construct(__a, _VSTD::addressof(*__e), _VSTD::move(*__em1)); - ++__base::size(); - if (__de > 1) - __e = __move_backward_and_check(__e - __de, __em1, __e, __vt); - *--__e = *__vt; - } - } - return __base::begin() + __pos; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::insert(const_iterator __p, value_type&& __v) -{ - size_type __pos = __p - __base::begin(); - size_type __to_end = __base::size() - __pos; - allocator_type& __a = __base::__alloc(); - if (__pos < __to_end) - { // insert by shifting things backward - if (__front_spare() == 0) - __add_front_capacity(); - // __front_spare() >= 1 - if (__pos == 0) - { - __alloc_traits::construct(__a, _VSTD::addressof(*--__base::begin()), _VSTD::move(__v)); - --__base::__start_; - ++__base::size(); - } - else - { - iterator __b = __base::begin(); - iterator __bm1 = _VSTD::prev(__b); - __alloc_traits::construct(__a, _VSTD::addressof(*__bm1), _VSTD::move(*__b)); - --__base::__start_; - ++__base::size(); - if (__pos > 1) - __b = _VSTD::move(_VSTD::next(__b), __b + __pos, __b); - *__b = _VSTD::move(__v); - } - } - else - { // insert by shifting things forward - if (__back_spare() == 0) - __add_back_capacity(); - // __back_capacity >= 1 - size_type __de = __base::size() - __pos; - if (__de == 0) - { - __alloc_traits::construct(__a, _VSTD::addressof(*__base::end()), _VSTD::move(__v)); - ++__base::size(); - } - else - { - iterator __e = __base::end(); - iterator __em1 = _VSTD::prev(__e); - __alloc_traits::construct(__a, _VSTD::addressof(*__e), _VSTD::move(*__em1)); - ++__base::size(); - if (__de > 1) - __e = _VSTD::move_backward(__e - __de, __em1, __e); - *--__e = _VSTD::move(__v); - } - } - return __base::begin() + __pos; -} - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::emplace(const_iterator __p, _Args&&... __args) -{ - size_type __pos = __p - __base::begin(); - size_type __to_end = __base::size() - __pos; - allocator_type& __a = __base::__alloc(); - if (__pos < __to_end) - { // insert by shifting things backward - if (__front_spare() == 0) - __add_front_capacity(); - // __front_spare() >= 1 - if (__pos == 0) - { - __alloc_traits::construct(__a, _VSTD::addressof(*--__base::begin()), _VSTD::forward<_Args>(__args)...); - --__base::__start_; - ++__base::size(); - } - else - { - value_type __tmp(_VSTD::forward<_Args>(__args)...); - iterator __b = __base::begin(); - iterator __bm1 = _VSTD::prev(__b); - __alloc_traits::construct(__a, _VSTD::addressof(*__bm1), _VSTD::move(*__b)); - --__base::__start_; - ++__base::size(); - if (__pos > 1) - __b = _VSTD::move(_VSTD::next(__b), __b + __pos, __b); - *__b = _VSTD::move(__tmp); - } - } - else - { // insert by shifting things forward - if (__back_spare() == 0) - __add_back_capacity(); - // __back_capacity >= 1 - size_type __de = __base::size() - __pos; - if (__de == 0) - { - __alloc_traits::construct(__a, _VSTD::addressof(*__base::end()), _VSTD::forward<_Args>(__args)...); - ++__base::size(); - } - else - { - value_type __tmp(_VSTD::forward<_Args>(__args)...); - iterator __e = __base::end(); - iterator __em1 = _VSTD::prev(__e); - __alloc_traits::construct(__a, _VSTD::addressof(*__e), _VSTD::move(*__em1)); - ++__base::size(); - if (__de > 1) - __e = _VSTD::move_backward(__e - __de, __em1, __e); - *--__e = _VSTD::move(__tmp); - } - } - return __base::begin() + __pos; -} - -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::insert(const_iterator __p, size_type __n, const value_type& __v) -{ - size_type __pos = __p - __base::begin(); - size_type __to_end = __base::size() - __pos; - allocator_type& __a = __base::__alloc(); - if (__pos < __to_end) - { // insert by shifting things backward - if (__n > __front_spare()) - __add_front_capacity(__n - __front_spare()); - // __n <= __front_spare() - size_type __old_n = __n; - iterator __old_begin = __base::begin(); - iterator __i = __old_begin; - if (__n > __pos) - { - for (size_type __m = __n - __pos; __m; --__m, --__base::__start_, ++__base::size()) - __alloc_traits::construct(__a, _VSTD::addressof(*--__i), __v); - __n = __pos; - } - if (__n > 0) - { - const_pointer __vt = pointer_traits::pointer_to(__v); - iterator __obn = __old_begin + __n; - __move_construct_backward_and_check(__old_begin, __obn, __i, __vt); - if (__n < __pos) - __old_begin = __move_and_check(__obn, __old_begin + __pos, __old_begin, __vt); - _VSTD::fill_n(__old_begin, __n, *__vt); - } - } - else - { // insert by shifting things forward - size_type __back_capacity = __back_spare(); - if (__n > __back_capacity) - __add_back_capacity(__n - __back_capacity); - // __n <= __back_capacity - size_type __old_n = __n; - iterator __old_end = __base::end(); - iterator __i = __old_end; - size_type __de = __base::size() - __pos; - if (__n > __de) - { - for (size_type __m = __n - __de; __m; --__m, ++__i, ++__base::size()) - __alloc_traits::construct(__a, _VSTD::addressof(*__i), __v); - __n = __de; - } - if (__n > 0) - { - const_pointer __vt = pointer_traits::pointer_to(__v); - iterator __oen = __old_end - __n; - __move_construct_and_check(__oen, __old_end, __i, __vt); - if (__n < __de) - __old_end = __move_backward_and_check(__old_end - __de, __oen, __old_end, __vt); - _VSTD::fill_n(__old_end - __n, __n, *__vt); - } - } - return __base::begin() + __pos; -} - -template -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::insert(const_iterator __p, _InputIter __f, _InputIter __l, - typename enable_if<__is_input_iterator<_InputIter>::value - &&!__is_forward_iterator<_InputIter>::value>::type*) -{ - __split_buffer __buf(__base::__alloc()); - __buf.__construct_at_end(__f, __l); - typedef typename __split_buffer::iterator __bi; - return insert(__p, move_iterator<__bi>(__buf.begin()), move_iterator<__bi>(__buf.end())); -} - -template -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::insert(const_iterator __p, _ForwardIterator __f, _ForwardIterator __l, - typename enable_if<__is_forward_iterator<_ForwardIterator>::value - &&!__is_bidirectional_iterator<_ForwardIterator>::value>::type*) -{ - size_type __n = _VSTD::distance(__f, __l); - __split_buffer __buf(__n, 0, __base::__alloc()); - __buf.__construct_at_end(__f, __l); - typedef typename __split_buffer::iterator __fwd; - return insert(__p, move_iterator<__fwd>(__buf.begin()), move_iterator<__fwd>(__buf.end())); -} - -template -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::insert(const_iterator __p, _BiIter __f, _BiIter __l, - typename enable_if<__is_bidirectional_iterator<_BiIter>::value>::type*) -{ - size_type __n = _VSTD::distance(__f, __l); - size_type __pos = __p - __base::begin(); - size_type __to_end = __base::size() - __pos; - allocator_type& __a = __base::__alloc(); - if (__pos < __to_end) - { // insert by shifting things backward - if (__n > __front_spare()) - __add_front_capacity(__n - __front_spare()); - // __n <= __front_spare() - size_type __old_n = __n; - iterator __old_begin = __base::begin(); - iterator __i = __old_begin; - _BiIter __m = __f; - if (__n > __pos) - { - __m = __pos < __n / 2 ? _VSTD::prev(__l, __pos) : _VSTD::next(__f, __n - __pos); - for (_BiIter __j = __m; __j != __f; --__base::__start_, ++__base::size()) - __alloc_traits::construct(__a, _VSTD::addressof(*--__i), *--__j); - __n = __pos; - } - if (__n > 0) - { - iterator __obn = __old_begin + __n; - for (iterator __j = __obn; __j != __old_begin;) - { - __alloc_traits::construct(__a, _VSTD::addressof(*--__i), _VSTD::move(*--__j)); - --__base::__start_; - ++__base::size(); - } - if (__n < __pos) - __old_begin = _VSTD::move(__obn, __old_begin + __pos, __old_begin); - _VSTD::copy(__m, __l, __old_begin); - } - } - else - { // insert by shifting things forward - size_type __back_capacity = __back_spare(); - if (__n > __back_capacity) - __add_back_capacity(__n - __back_capacity); - // __n <= __back_capacity - size_type __old_n = __n; - iterator __old_end = __base::end(); - iterator __i = __old_end; - _BiIter __m = __l; - size_type __de = __base::size() - __pos; - if (__n > __de) - { - __m = __de < __n / 2 ? _VSTD::next(__f, __de) : _VSTD::prev(__l, __n - __de); - for (_BiIter __j = __m; __j != __l; ++__i, (void) ++__j, ++__base::size()) - __alloc_traits::construct(__a, _VSTD::addressof(*__i), *__j); - __n = __de; - } - if (__n > 0) - { - iterator __oen = __old_end - __n; - for (iterator __j = __oen; __j != __old_end; ++__i, ++__j, ++__base::size()) - __alloc_traits::construct(__a, _VSTD::addressof(*__i), _VSTD::move(*__j)); - if (__n < __de) - __old_end = _VSTD::move_backward(__old_end - __de, __oen, __old_end); - _VSTD::copy_backward(__f, __m, __old_end); - } - } - return __base::begin() + __pos; -} - -template -template -void -deque<_Tp, _Allocator>::__append(_InpIter __f, _InpIter __l, - typename enable_if<__is_input_iterator<_InpIter>::value && - !__is_forward_iterator<_InpIter>::value>::type*) -{ - for (; __f != __l; ++__f) - push_back(*__f); -} - -template -template -void -deque<_Tp, _Allocator>::__append(_ForIter __f, _ForIter __l, - typename enable_if<__is_forward_iterator<_ForIter>::value>::type*) -{ - size_type __n = _VSTD::distance(__f, __l); - allocator_type& __a = __base::__alloc(); - size_type __back_capacity = __back_spare(); - if (__n > __back_capacity) - __add_back_capacity(__n - __back_capacity); - // __n <= __back_capacity - for (iterator __i = __base::end(); __f != __l; ++__i, (void) ++__f, ++__base::size()) - __alloc_traits::construct(__a, _VSTD::addressof(*__i), *__f); -} - -template -void -deque<_Tp, _Allocator>::__append(size_type __n) -{ - allocator_type& __a = __base::__alloc(); - size_type __back_capacity = __back_spare(); - if (__n > __back_capacity) - __add_back_capacity(__n - __back_capacity); - // __n <= __back_capacity - for (iterator __i = __base::end(); __n; --__n, ++__i, ++__base::size()) - __alloc_traits::construct(__a, _VSTD::addressof(*__i)); -} - -template -void -deque<_Tp, _Allocator>::__append(size_type __n, const value_type& __v) -{ - allocator_type& __a = __base::__alloc(); - size_type __back_capacity = __back_spare(); - if (__n > __back_capacity) - __add_back_capacity(__n - __back_capacity); - // __n <= __back_capacity - for (iterator __i = __base::end(); __n; --__n, ++__i, ++__base::size()) - __alloc_traits::construct(__a, _VSTD::addressof(*__i), __v); -} - -// Create front capacity for one block of elements. -// Strong guarantee. Either do it or don't touch anything. -template -void -deque<_Tp, _Allocator>::__add_front_capacity() -{ - allocator_type& __a = __base::__alloc(); - if (__back_spare() >= __base::__block_size) - { - __base::__start_ += __base::__block_size; - pointer __pt = __base::__map_.back(); - __base::__map_.pop_back(); - __base::__map_.push_front(__pt); - } - // Else if __base::__map_.size() < __base::__map_.capacity() then we need to allocate 1 buffer - else if (__base::__map_.size() < __base::__map_.capacity()) - { // we can put the new buffer into the map, but don't shift things around - // until all buffers are allocated. If we throw, we don't need to fix - // anything up (any added buffers are undetectible) - if (__base::__map_.__front_spare() > 0) - __base::__map_.push_front(__alloc_traits::allocate(__a, __base::__block_size)); - else - { - __base::__map_.push_back(__alloc_traits::allocate(__a, __base::__block_size)); - // Done allocating, reorder capacity - pointer __pt = __base::__map_.back(); - __base::__map_.pop_back(); - __base::__map_.push_front(__pt); - } - __base::__start_ = __base::__map_.size() == 1 ? - __base::__block_size / 2 : - __base::__start_ + __base::__block_size; - } - // Else need to allocate 1 buffer, *and* we need to reallocate __map_. - else - { - __split_buffer - __buf(max(2 * __base::__map_.capacity(), 1), - 0, __base::__map_.__alloc()); - - typedef __allocator_destructor<_Allocator> _Dp; - unique_ptr __hold( - __alloc_traits::allocate(__a, __base::__block_size), - _Dp(__a, __base::__block_size)); - __buf.push_back(__hold.get()); - __hold.release(); - - for (typename __base::__map_pointer __i = __base::__map_.begin(); - __i != __base::__map_.end(); ++__i) - __buf.push_back(*__i); - _VSTD::swap(__base::__map_.__first_, __buf.__first_); - _VSTD::swap(__base::__map_.__begin_, __buf.__begin_); - _VSTD::swap(__base::__map_.__end_, __buf.__end_); - _VSTD::swap(__base::__map_.__end_cap(), __buf.__end_cap()); - __base::__start_ = __base::__map_.size() == 1 ? - __base::__block_size / 2 : - __base::__start_ + __base::__block_size; - } -} - -// Create front capacity for __n elements. -// Strong guarantee. Either do it or don't touch anything. -template -void -deque<_Tp, _Allocator>::__add_front_capacity(size_type __n) -{ - allocator_type& __a = __base::__alloc(); - size_type __nb = __recommend_blocks(__n + __base::__map_.empty()); - // Number of unused blocks at back: - size_type __back_capacity = __back_spare() / __base::__block_size; - __back_capacity = _VSTD::min(__back_capacity, __nb); // don't take more than you need - __nb -= __back_capacity; // number of blocks need to allocate - // If __nb == 0, then we have sufficient capacity. - if (__nb == 0) - { - __base::__start_ += __base::__block_size * __back_capacity; - for (; __back_capacity > 0; --__back_capacity) - { - pointer __pt = __base::__map_.back(); - __base::__map_.pop_back(); - __base::__map_.push_front(__pt); - } - } - // Else if __nb <= __map_.capacity() - __map_.size() then we need to allocate __nb buffers - else if (__nb <= __base::__map_.capacity() - __base::__map_.size()) - { // we can put the new buffers into the map, but don't shift things around - // until all buffers are allocated. If we throw, we don't need to fix - // anything up (any added buffers are undetectible) - for (; __nb > 0; --__nb, __base::__start_ += __base::__block_size - (__base::__map_.size() == 1)) - { - if (__base::__map_.__front_spare() == 0) - break; - __base::__map_.push_front(__alloc_traits::allocate(__a, __base::__block_size)); - } - for (; __nb > 0; --__nb, ++__back_capacity) - __base::__map_.push_back(__alloc_traits::allocate(__a, __base::__block_size)); - // Done allocating, reorder capacity - __base::__start_ += __back_capacity * __base::__block_size; - for (; __back_capacity > 0; --__back_capacity) - { - pointer __pt = __base::__map_.back(); - __base::__map_.pop_back(); - __base::__map_.push_front(__pt); - } - } - // Else need to allocate __nb buffers, *and* we need to reallocate __map_. - else - { - size_type __ds = (__nb + __back_capacity) * __base::__block_size - __base::__map_.empty(); - __split_buffer - __buf(max(2* __base::__map_.capacity(), - __nb + __base::__map_.size()), - 0, __base::__map_.__alloc()); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __nb > 0; --__nb) - __buf.push_back(__alloc_traits::allocate(__a, __base::__block_size)); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - for (typename __base::__map_pointer __i = __buf.begin(); - __i != __buf.end(); ++__i) - __alloc_traits::deallocate(__a, *__i, __base::__block_size); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __back_capacity > 0; --__back_capacity) - { - __buf.push_back(__base::__map_.back()); - __base::__map_.pop_back(); - } - for (typename __base::__map_pointer __i = __base::__map_.begin(); - __i != __base::__map_.end(); ++__i) - __buf.push_back(*__i); - _VSTD::swap(__base::__map_.__first_, __buf.__first_); - _VSTD::swap(__base::__map_.__begin_, __buf.__begin_); - _VSTD::swap(__base::__map_.__end_, __buf.__end_); - _VSTD::swap(__base::__map_.__end_cap(), __buf.__end_cap()); - __base::__start_ += __ds; - } -} - -// Create back capacity for one block of elements. -// Strong guarantee. Either do it or don't touch anything. -template -void -deque<_Tp, _Allocator>::__add_back_capacity() -{ - allocator_type& __a = __base::__alloc(); - if (__front_spare() >= __base::__block_size) - { - __base::__start_ -= __base::__block_size; - pointer __pt = __base::__map_.front(); - __base::__map_.pop_front(); - __base::__map_.push_back(__pt); - } - // Else if __nb <= __map_.capacity() - __map_.size() then we need to allocate __nb buffers - else if (__base::__map_.size() < __base::__map_.capacity()) - { // we can put the new buffer into the map, but don't shift things around - // until it is allocated. If we throw, we don't need to fix - // anything up (any added buffers are undetectible) - if (__base::__map_.__back_spare() != 0) - __base::__map_.push_back(__alloc_traits::allocate(__a, __base::__block_size)); - else - { - __base::__map_.push_front(__alloc_traits::allocate(__a, __base::__block_size)); - // Done allocating, reorder capacity - pointer __pt = __base::__map_.front(); - __base::__map_.pop_front(); - __base::__map_.push_back(__pt); - } - } - // Else need to allocate 1 buffer, *and* we need to reallocate __map_. - else - { - __split_buffer - __buf(max(2* __base::__map_.capacity(), 1), - __base::__map_.size(), - __base::__map_.__alloc()); - - typedef __allocator_destructor<_Allocator> _Dp; - unique_ptr __hold( - __alloc_traits::allocate(__a, __base::__block_size), - _Dp(__a, __base::__block_size)); - __buf.push_back(__hold.get()); - __hold.release(); - - for (typename __base::__map_pointer __i = __base::__map_.end(); - __i != __base::__map_.begin();) - __buf.push_front(*--__i); - _VSTD::swap(__base::__map_.__first_, __buf.__first_); - _VSTD::swap(__base::__map_.__begin_, __buf.__begin_); - _VSTD::swap(__base::__map_.__end_, __buf.__end_); - _VSTD::swap(__base::__map_.__end_cap(), __buf.__end_cap()); - } -} - -// Create back capacity for __n elements. -// Strong guarantee. Either do it or don't touch anything. -template -void -deque<_Tp, _Allocator>::__add_back_capacity(size_type __n) -{ - allocator_type& __a = __base::__alloc(); - size_type __nb = __recommend_blocks(__n + __base::__map_.empty()); - // Number of unused blocks at front: - size_type __front_capacity = __front_spare() / __base::__block_size; - __front_capacity = _VSTD::min(__front_capacity, __nb); // don't take more than you need - __nb -= __front_capacity; // number of blocks need to allocate - // If __nb == 0, then we have sufficient capacity. - if (__nb == 0) - { - __base::__start_ -= __base::__block_size * __front_capacity; - for (; __front_capacity > 0; --__front_capacity) - { - pointer __pt = __base::__map_.front(); - __base::__map_.pop_front(); - __base::__map_.push_back(__pt); - } - } - // Else if __nb <= __map_.capacity() - __map_.size() then we need to allocate __nb buffers - else if (__nb <= __base::__map_.capacity() - __base::__map_.size()) - { // we can put the new buffers into the map, but don't shift things around - // until all buffers are allocated. If we throw, we don't need to fix - // anything up (any added buffers are undetectible) - for (; __nb > 0; --__nb) - { - if (__base::__map_.__back_spare() == 0) - break; - __base::__map_.push_back(__alloc_traits::allocate(__a, __base::__block_size)); - } - for (; __nb > 0; --__nb, ++__front_capacity, __base::__start_ += - __base::__block_size - (__base::__map_.size() == 1)) - __base::__map_.push_front(__alloc_traits::allocate(__a, __base::__block_size)); - // Done allocating, reorder capacity - __base::__start_ -= __base::__block_size * __front_capacity; - for (; __front_capacity > 0; --__front_capacity) - { - pointer __pt = __base::__map_.front(); - __base::__map_.pop_front(); - __base::__map_.push_back(__pt); - } - } - // Else need to allocate __nb buffers, *and* we need to reallocate __map_. - else - { - size_type __ds = __front_capacity * __base::__block_size; - __split_buffer - __buf(max(2* __base::__map_.capacity(), - __nb + __base::__map_.size()), - __base::__map_.size() - __front_capacity, - __base::__map_.__alloc()); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __nb > 0; --__nb) - __buf.push_back(__alloc_traits::allocate(__a, __base::__block_size)); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - for (typename __base::__map_pointer __i = __buf.begin(); - __i != __buf.end(); ++__i) - __alloc_traits::deallocate(__a, *__i, __base::__block_size); - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - for (; __front_capacity > 0; --__front_capacity) - { - __buf.push_back(__base::__map_.front()); - __base::__map_.pop_front(); - } - for (typename __base::__map_pointer __i = __base::__map_.end(); - __i != __base::__map_.begin();) - __buf.push_front(*--__i); - _VSTD::swap(__base::__map_.__first_, __buf.__first_); - _VSTD::swap(__base::__map_.__begin_, __buf.__begin_); - _VSTD::swap(__base::__map_.__end_, __buf.__end_); - _VSTD::swap(__base::__map_.__end_cap(), __buf.__end_cap()); - __base::__start_ -= __ds; - } -} - -template -void -deque<_Tp, _Allocator>::pop_front() -{ - allocator_type& __a = __base::__alloc(); - __alloc_traits::destroy(__a, __to_raw_pointer(*(__base::__map_.begin() + - __base::__start_ / __base::__block_size) + - __base::__start_ % __base::__block_size)); - --__base::size(); - if (++__base::__start_ >= 2 * __base::__block_size) - { - __alloc_traits::deallocate(__a, __base::__map_.front(), __base::__block_size); - __base::__map_.pop_front(); - __base::__start_ -= __base::__block_size; - } -} - -template -void -deque<_Tp, _Allocator>::pop_back() -{ - allocator_type& __a = __base::__alloc(); - size_type __p = __base::size() + __base::__start_ - 1; - __alloc_traits::destroy(__a, __to_raw_pointer(*(__base::__map_.begin() + - __p / __base::__block_size) + - __p % __base::__block_size)); - --__base::size(); - if (__back_spare() >= 2 * __base::__block_size) - { - __alloc_traits::deallocate(__a, __base::__map_.back(), __base::__block_size); - __base::__map_.pop_back(); - } -} - -// move assign [__f, __l) to [__r, __r + (__l-__f)). -// If __vt points into [__f, __l), then subtract (__f - __r) from __vt. -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::__move_and_check(iterator __f, iterator __l, iterator __r, - const_pointer& __vt) -{ - // as if - // for (; __f != __l; ++__f, ++__r) - // *__r = _VSTD::move(*__f); - difference_type __n = __l - __f; - while (__n > 0) - { - pointer __fb = __f.__ptr_; - pointer __fe = *__f.__m_iter_ + __base::__block_size; - difference_type __bs = __fe - __fb; - if (__bs > __n) - { - __bs = __n; - __fe = __fb + __bs; - } - if (__fb <= __vt && __vt < __fe) - __vt = (const_iterator(static_cast<__map_const_pointer>(__f.__m_iter_), __vt) -= __f - __r).__ptr_; - __r = _VSTD::move(__fb, __fe, __r); - __n -= __bs; - __f += __bs; - } - return __r; -} - -// move assign [__f, __l) to [__r - (__l-__f), __r) backwards. -// If __vt points into [__f, __l), then add (__r - __l) to __vt. -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::__move_backward_and_check(iterator __f, iterator __l, iterator __r, - const_pointer& __vt) -{ - // as if - // while (__f != __l) - // *--__r = _VSTD::move(*--__l); - difference_type __n = __l - __f; - while (__n > 0) - { - --__l; - pointer __lb = *__l.__m_iter_; - pointer __le = __l.__ptr_ + 1; - difference_type __bs = __le - __lb; - if (__bs > __n) - { - __bs = __n; - __lb = __le - __bs; - } - if (__lb <= __vt && __vt < __le) - __vt = (const_iterator(static_cast<__map_const_pointer>(__l.__m_iter_), __vt) += __r - __l - 1).__ptr_; - __r = _VSTD::move_backward(__lb, __le, __r); - __n -= __bs; - __l -= __bs - 1; - } - return __r; -} - -// move construct [__f, __l) to [__r, __r + (__l-__f)). -// If __vt points into [__f, __l), then add (__r - __f) to __vt. -template -void -deque<_Tp, _Allocator>::__move_construct_and_check(iterator __f, iterator __l, - iterator __r, const_pointer& __vt) -{ - allocator_type& __a = __base::__alloc(); - // as if - // for (; __f != __l; ++__r, ++__f, ++__base::size()) - // __alloc_traits::construct(__a, _VSTD::addressof(*__r), _VSTD::move(*__f)); - difference_type __n = __l - __f; - while (__n > 0) - { - pointer __fb = __f.__ptr_; - pointer __fe = *__f.__m_iter_ + __base::__block_size; - difference_type __bs = __fe - __fb; - if (__bs > __n) - { - __bs = __n; - __fe = __fb + __bs; - } - if (__fb <= __vt && __vt < __fe) - __vt = (const_iterator(static_cast<__map_const_pointer>(__f.__m_iter_), __vt) += __r - __f).__ptr_; - for (; __fb != __fe; ++__fb, ++__r, ++__base::size()) - __alloc_traits::construct(__a, _VSTD::addressof(*__r), _VSTD::move(*__fb)); - __n -= __bs; - __f += __bs; - } -} - -// move construct [__f, __l) to [__r - (__l-__f), __r) backwards. -// If __vt points into [__f, __l), then subtract (__l - __r) from __vt. -template -void -deque<_Tp, _Allocator>::__move_construct_backward_and_check(iterator __f, iterator __l, - iterator __r, const_pointer& __vt) -{ - allocator_type& __a = __base::__alloc(); - // as if - // for (iterator __j = __l; __j != __f;) - // { - // __alloc_traitsconstruct(__a, _VSTD::addressof(*--__r), _VSTD::move(*--__j)); - // --__base::__start_; - // ++__base::size(); - // } - difference_type __n = __l - __f; - while (__n > 0) - { - --__l; - pointer __lb = *__l.__m_iter_; - pointer __le = __l.__ptr_ + 1; - difference_type __bs = __le - __lb; - if (__bs > __n) - { - __bs = __n; - __lb = __le - __bs; - } - if (__lb <= __vt && __vt < __le) - __vt = (const_iterator(static_cast<__map_const_pointer>(__l.__m_iter_), __vt) -= __l - __r + 1).__ptr_; - while (__le != __lb) - { - __alloc_traits::construct(__a, _VSTD::addressof(*--__r), _VSTD::move(*--__le)); - --__base::__start_; - ++__base::size(); - } - __n -= __bs; - __l -= __bs - 1; - } -} - -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::erase(const_iterator __f) -{ - difference_type __n = 1; - iterator __b = __base::begin(); - difference_type __pos = __f - __b; - iterator __p = __b + __pos; - allocator_type& __a = __base::__alloc(); - if (__pos < (__base::size() - 1) / 2) - { // erase from front - _VSTD::move_backward(__b, __p, _VSTD::next(__p)); - __alloc_traits::destroy(__a, _VSTD::addressof(*__b)); - --__base::size(); - ++__base::__start_; - if (__front_spare() >= 2 * __base::__block_size) - { - __alloc_traits::deallocate(__a, __base::__map_.front(), __base::__block_size); - __base::__map_.pop_front(); - __base::__start_ -= __base::__block_size; - } - } - else - { // erase from back - iterator __i = _VSTD::move(_VSTD::next(__p), __base::end(), __p); - __alloc_traits::destroy(__a, _VSTD::addressof(*__i)); - --__base::size(); - if (__back_spare() >= 2 * __base::__block_size) - { - __alloc_traits::deallocate(__a, __base::__map_.back(), __base::__block_size); - __base::__map_.pop_back(); - } - } - return __base::begin() + __pos; -} - -template -typename deque<_Tp, _Allocator>::iterator -deque<_Tp, _Allocator>::erase(const_iterator __f, const_iterator __l) -{ - difference_type __n = __l - __f; - iterator __b = __base::begin(); - difference_type __pos = __f - __b; - iterator __p = __b + __pos; - if (__n > 0) - { - allocator_type& __a = __base::__alloc(); - if (__pos < (__base::size() - __n) / 2) - { // erase from front - iterator __i = _VSTD::move_backward(__b, __p, __p + __n); - for (; __b != __i; ++__b) - __alloc_traits::destroy(__a, _VSTD::addressof(*__b)); - __base::size() -= __n; - __base::__start_ += __n; - while (__front_spare() >= 2 * __base::__block_size) - { - __alloc_traits::deallocate(__a, __base::__map_.front(), __base::__block_size); - __base::__map_.pop_front(); - __base::__start_ -= __base::__block_size; - } - } - else - { // erase from back - iterator __i = _VSTD::move(__p + __n, __base::end(), __p); - for (iterator __e = __base::end(); __i != __e; ++__i) - __alloc_traits::destroy(__a, _VSTD::addressof(*__i)); - __base::size() -= __n; - while (__back_spare() >= 2 * __base::__block_size) - { - __alloc_traits::deallocate(__a, __base::__map_.back(), __base::__block_size); - __base::__map_.pop_back(); - } - } - } - return __base::begin() + __pos; -} - -template -void -deque<_Tp, _Allocator>::__erase_to_end(const_iterator __f) -{ - iterator __e = __base::end(); - difference_type __n = __e - __f; - if (__n > 0) - { - allocator_type& __a = __base::__alloc(); - iterator __b = __base::begin(); - difference_type __pos = __f - __b; - for (iterator __p = __b + __pos; __p != __e; ++__p) - __alloc_traits::destroy(__a, _VSTD::addressof(*__p)); - __base::size() -= __n; - while (__back_spare() >= 2 * __base::__block_size) - { - __alloc_traits::deallocate(__a, __base::__map_.back(), __base::__block_size); - __base::__map_.pop_back(); - } - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -deque<_Tp, _Allocator>::swap(deque& __c) - _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || - __is_nothrow_swappable::value) -{ - __base::swap(__c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -deque<_Tp, _Allocator>::clear() _NOEXCEPT -{ - __base::clear(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const deque<_Tp, _Allocator>& __x, const deque<_Tp, _Allocator>& __y) -{ - const typename deque<_Tp, _Allocator>::size_type __sz = __x.size(); - return __sz == __y.size() && _VSTD::equal(__x.begin(), __x.end(), __y.begin()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const deque<_Tp, _Allocator>& __x, const deque<_Tp, _Allocator>& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator< (const deque<_Tp, _Allocator>& __x, const deque<_Tp, _Allocator>& __y) -{ - return _VSTD::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator> (const deque<_Tp, _Allocator>& __x, const deque<_Tp, _Allocator>& __y) -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>=(const deque<_Tp, _Allocator>& __x, const deque<_Tp, _Allocator>& __y) -{ - return !(__x < __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<=(const deque<_Tp, _Allocator>& __x, const deque<_Tp, _Allocator>& __y) -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(deque<_Tp, _Allocator>& __x, deque<_Tp, _Allocator>& __y) - _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) -{ - __x.swap(__y); -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_DEQUE diff --git a/libcxx/include/exception b/libcxx/include/exception deleted file mode 100644 index 2d8c0f541..000000000 --- a/libcxx/include/exception +++ /dev/null @@ -1,256 +0,0 @@ -// -*- C++ -*- -//===-------------------------- exception ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_EXCEPTION -#define _LIBCPP_EXCEPTION - -/* - exception synopsis - -namespace std -{ - -class exception -{ -public: - exception() noexcept; - exception(const exception&) noexcept; - exception& operator=(const exception&) noexcept; - virtual ~exception() noexcept; - virtual const char* what() const noexcept; -}; - -class bad_exception - : public exception -{ -public: - bad_exception() noexcept; - bad_exception(const bad_exception&) noexcept; - bad_exception& operator=(const bad_exception&) noexcept; - virtual ~bad_exception() noexcept; - virtual const char* what() const noexcept; -}; - -typedef void (*unexpected_handler)(); -unexpected_handler set_unexpected(unexpected_handler f ) noexcept; -unexpected_handler get_unexpected() noexcept; -[[noreturn]] void unexpected(); - -typedef void (*terminate_handler)(); -terminate_handler set_terminate(terminate_handler f ) noexcept; -terminate_handler get_terminate() noexcept; -[[noreturn]] void terminate() noexcept; - -bool uncaught_exception() noexcept; - -typedef unspecified exception_ptr; - -exception_ptr current_exception() noexcept; -void rethrow_exception [[noreturn]] (exception_ptr p); -template exception_ptr make_exception_ptr(E e) noexcept; - -class nested_exception -{ -public: - nested_exception() noexcept; - nested_exception(const nested_exception&) noexcept = default; - nested_exception& operator=(const nested_exception&) noexcept = default; - virtual ~nested_exception() = default; - - // access functions - [[noreturn]] void rethrow_nested() const; - exception_ptr nested_ptr() const noexcept; -}; - -template [[noreturn]] void throw_with_nested(T&& t); -template void rethrow_if_nested(const E& e); - -} // std - -*/ - -#include <__config> -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -namespace std // purposefully not using versioning namespace -{ - -class _LIBCPP_EXCEPTION_ABI exception -{ -public: - _LIBCPP_INLINE_VISIBILITY exception() _NOEXCEPT {} - virtual ~exception() _NOEXCEPT; - virtual const char* what() const _NOEXCEPT; -}; - -class _LIBCPP_EXCEPTION_ABI bad_exception - : public exception -{ -public: - _LIBCPP_INLINE_VISIBILITY bad_exception() _NOEXCEPT {} - virtual ~bad_exception() _NOEXCEPT; - virtual const char* what() const _NOEXCEPT; -}; - -typedef void (*unexpected_handler)(); -_LIBCPP_FUNC_VIS unexpected_handler set_unexpected(unexpected_handler) _NOEXCEPT; -_LIBCPP_FUNC_VIS unexpected_handler get_unexpected() _NOEXCEPT; -_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void unexpected(); - -typedef void (*terminate_handler)(); -_LIBCPP_FUNC_VIS terminate_handler set_terminate(terminate_handler) _NOEXCEPT; -_LIBCPP_FUNC_VIS terminate_handler get_terminate() _NOEXCEPT; -_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void terminate() _NOEXCEPT; - -_LIBCPP_FUNC_VIS bool uncaught_exception() _NOEXCEPT; - -class _LIBCPP_TYPE_VIS exception_ptr; - -_LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; -_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr); - -class _LIBCPP_TYPE_VIS exception_ptr -{ - void* __ptr_; -public: - _LIBCPP_INLINE_VISIBILITY exception_ptr() _NOEXCEPT : __ptr_() {} - _LIBCPP_INLINE_VISIBILITY exception_ptr(nullptr_t) _NOEXCEPT : __ptr_() {} - exception_ptr(const exception_ptr&) _NOEXCEPT; - exception_ptr& operator=(const exception_ptr&) _NOEXCEPT; - ~exception_ptr() _NOEXCEPT; - - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_EXPLICIT - operator bool() const _NOEXCEPT {return __ptr_ != nullptr;} - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT - {return __x.__ptr_ == __y.__ptr_;} - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT - {return !(__x == __y);} - - friend _LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; - friend _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr); -}; - -template -exception_ptr -make_exception_ptr(_Ep __e) _NOEXCEPT -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { - throw __e; - } - catch (...) - { - return current_exception(); - } -#endif // _LIBCPP_NO_EXCEPTIONS -} - -// nested_exception - -class _LIBCPP_EXCEPTION_ABI nested_exception -{ - exception_ptr __ptr_; -public: - nested_exception() _NOEXCEPT; -// nested_exception(const nested_exception&) noexcept = default; -// nested_exception& operator=(const nested_exception&) noexcept = default; - virtual ~nested_exception() _NOEXCEPT; - - // access functions - _LIBCPP_NORETURN void rethrow_nested() const; - _LIBCPP_INLINE_VISIBILITY exception_ptr nested_ptr() const _NOEXCEPT {return __ptr_;} -}; - -template -struct __nested - : public _Tp, - public nested_exception -{ - _LIBCPP_INLINE_VISIBILITY explicit __nested(const _Tp& __t) : _Tp(__t) {} -}; - -template -_LIBCPP_NORETURN -void -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -throw_with_nested(_Tp&& __t, typename enable_if< - is_class::type>::value && - !is_base_of::type>::value -#if _LIBCPP_STD_VER > 11 - && !is_final::type>::value -#endif - >::type* = 0) -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -throw_with_nested (_Tp& __t, typename enable_if< - is_class<_Tp>::value && !is_base_of::value - >::type* = 0) -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - throw __nested::type>(_VSTD::forward<_Tp>(__t)); -#endif -} - -template -_LIBCPP_NORETURN -void -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -throw_with_nested(_Tp&& __t, typename enable_if< - !is_class::type>::value || - is_base_of::type>::value -#if _LIBCPP_STD_VER > 11 - || is_final::type>::value -#endif - >::type* = 0) -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -throw_with_nested (_Tp& __t, typename enable_if< - !is_class<_Tp>::value || is_base_of::value - >::type* = 0) -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - throw _VSTD::forward<_Tp>(__t); -#endif -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -rethrow_if_nested(const _Ep& __e, typename enable_if< - is_polymorphic<_Ep>::value - >::type* = 0) -{ - const nested_exception* __nep = dynamic_cast(&__e); - if (__nep) - __nep->rethrow_nested(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -rethrow_if_nested(const _Ep&, typename enable_if< - !is_polymorphic<_Ep>::value - >::type* = 0) -{ -} - -} // std - -#endif // _LIBCPP_EXCEPTION diff --git a/libcxx/include/experimental/__config b/libcxx/include/experimental/__config deleted file mode 100644 index f64a3a90c..000000000 --- a/libcxx/include/experimental/__config +++ /dev/null @@ -1,32 +0,0 @@ -// -*- C++ -*- -//===--------------------------- __config ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_EXPERIMENTAL_CONFIG -#define _LIBCPP_EXPERIMENTAL_CONFIG - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL namespace std { namespace experimental { -#define _LIBCPP_END_NAMESPACE_EXPERIMENTAL } } -#define _VSTD_EXPERIMENTAL std::experimental - -#define _LIBCPP_BEGIN_NAMESPACE_LFTS _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v1 { -#define _LIBCPP_END_NAMESPACE_LFTS } } } -#define _VSTD_LFTS _VSTD_EXPERIMENTAL::fundamentals_v1 - -#define _LIBCPP_BEGIN_NAMESPACE_CHRONO_LFTS _LIBCPP_BEGIN_NAMESPACE_STD \ - namespace chrono { namespace experimental { inline namespace fundamentals_v1 { -#define _LIBCPP_END_NAMESPACE_CHRONO_LFTS _LIBCPP_END_NAMESPACE_STD } } } - -#endif diff --git a/libcxx/include/experimental/chrono b/libcxx/include/experimental/chrono deleted file mode 100644 index ca9e5f852..000000000 --- a/libcxx/include/experimental/chrono +++ /dev/null @@ -1,59 +0,0 @@ -// -*- C++ -*- -//===------------------------------ chrono ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_EXPERIMENTAL_CHRONO -#define _LIBCPP_EXPERIMENTAL_CHRONO - -/** - experimental/chrono synopsis - -// C++1y - -#include - -namespace std { -namespace chrono { -namespace experimental { -inline namespace fundamentals_v1 { - - // See C++14 20.12.4, customization traits - template constexpr bool treat_as_floating_point_v - = treat_as_floating_point::value; - -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace chrono -} // namespace std - - */ - -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER > 11 - -_LIBCPP_BEGIN_NAMESPACE_CHRONO_LFTS - -#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES - -template _LIBCPP_CONSTEXPR bool treat_as_floating_point_v - = treat_as_floating_point<_Rep>::value; - -#endif /* _LIBCPP_HAS_NO_VARIABLE_TEMPLATES */ - -_LIBCPP_END_NAMESPACE_CHRONO_LFTS - -#endif /* _LIBCPP_STD_VER > 11 */ - -#endif /* _LIBCPP_EXPERIMENTAL_CHRONO */ diff --git a/libcxx/include/experimental/dynarray b/libcxx/include/experimental/dynarray deleted file mode 100644 index a0258628d..000000000 --- a/libcxx/include/experimental/dynarray +++ /dev/null @@ -1,316 +0,0 @@ -// -*- C++ -*- -//===-------------------------- dynarray ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_DYNARRAY -#define _LIBCPP_DYNARRAY - -#include <__config> -#if _LIBCPP_STD_VER > 11 - -/* - dynarray synopsis - -namespace std { namespace experimental { - -template< typename T > -class dynarray -{ - // types: - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef T* pointer; - typedef const T* const_pointer; - typedef implementation-defined iterator; - typedef implementation-defined const_iterator; - typedef reverse_iterator reverse_iterator; - typedef reverse_iterator const_reverse_iterator; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - -public: - // construct/copy/destroy: - explicit dynarray(size_type c); - dynarray(size_type c, const T& v); - dynarray(const dynarray& d); - dynarray(initializer_list); - - template - dynarray(allocator_arg_t, const Alloc& a, size_type c, const Alloc& alloc); - template - dynarray(allocator_arg_t, const Alloc& a, size_type c, const T& v, const Alloc& alloc); - template - dynarray(allocator_arg_t, const Alloc& a, const dynarray& d, const Alloc& alloc); - template - dynarray(allocator_arg_t, const Alloc& a, initializer_list, const Alloc& alloc); - dynarray& operator=(const dynarray&) = delete; - ~dynarray(); - - // iterators: - iterator begin() noexcept; - const_iterator begin() const noexcept; - const_iterator cbegin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - const_iterator cend() const noexcept; - - reverse_iterator rbegin() noexcept; - const_reverse_iterator rbegin() const noexcept; - const_reverse_iterator crbegin() const noexcept; - reverse_iterator rend() noexcept; - const_reverse_iterator rend() const noexcept; - const_reverse_iterator crend() const noexcept; - - // capacity: - size_type size() const noexcept; - size_type max_size() const noexcept; - bool empty() const noexcept; - - // element access: - reference operator[](size_type n); - const_reference operator[](size_type n) const; - - reference front(); - const_reference front() const; - reference back(); - const_reference back() const; - - const_reference at(size_type n) const; - reference at(size_type n); - - // data access: - T* data() noexcept; - const T* data() const noexcept; - - // mutating member functions: - void fill(const T& v); -}; - -}} // std::experimental - -*/ - -#include <__functional_base> -#include -#include -#include -#include -#include - -#include <__undef___deallocate> - -#if defined(_LIBCPP_NO_EXCEPTIONS) - #include -#endif - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -namespace std { namespace experimental { inline namespace __array_extensions_v1 { - -template -struct _LIBCPP_TYPE_VIS_ONLY dynarray -{ -public: - // types: - typedef dynarray __self; - typedef _Tp value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef value_type* iterator; - typedef const value_type* const_iterator; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - -private: - size_t __size_; - value_type * __base_; - _LIBCPP_ALWAYS_INLINE dynarray () noexcept : __base_(nullptr), __size_(0) {} - - static inline _LIBCPP_INLINE_VISIBILITY value_type* __allocate ( size_t count ) - { - if ( numeric_limits::max() / sizeof (value_type) <= count ) - { -#ifndef _LIBCPP_NO_EXCEPTIONS - throw bad_array_length(); -#else - assert(!"dynarray::allocation"); -#endif - } - return static_cast (_VSTD::__allocate (sizeof(value_type) * count)); - } - - static inline _LIBCPP_INLINE_VISIBILITY void __deallocate ( value_type* __ptr ) noexcept - { - _VSTD::__deallocate (static_cast (__ptr)); - } - -public: - - explicit dynarray(size_type __c); - dynarray(size_type __c, const value_type& __v); - dynarray(const dynarray& __d); - dynarray(initializer_list); - -// We're not implementing these right now. -// Updated with the resolution of LWG issue #2255 -// template -// dynarray(allocator_arg_t, const _Alloc& __alloc, size_type __c); -// template -// dynarray(allocator_arg_t, const _Alloc& __alloc, size_type __c, const value_type& __v); -// template -// dynarray(allocator_arg_t, const _Alloc& __alloc, const dynarray& __d); -// template -// dynarray(allocator_arg_t, const _Alloc& __alloc, initializer_list); - - dynarray& operator=(const dynarray&) = delete; - ~dynarray(); - - // iterators: - inline _LIBCPP_INLINE_VISIBILITY iterator begin() noexcept { return iterator(data()); } - inline _LIBCPP_INLINE_VISIBILITY const_iterator begin() const noexcept { return const_iterator(data()); } - inline _LIBCPP_INLINE_VISIBILITY const_iterator cbegin() const noexcept { return const_iterator(data()); } - inline _LIBCPP_INLINE_VISIBILITY iterator end() noexcept { return iterator(data() + __size_); } - inline _LIBCPP_INLINE_VISIBILITY const_iterator end() const noexcept { return const_iterator(data() + __size_); } - inline _LIBCPP_INLINE_VISIBILITY const_iterator cend() const noexcept { return const_iterator(data() + __size_); } - - inline _LIBCPP_INLINE_VISIBILITY reverse_iterator rbegin() noexcept { return reverse_iterator(end()); } - inline _LIBCPP_INLINE_VISIBILITY const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); } - inline _LIBCPP_INLINE_VISIBILITY const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); } - inline _LIBCPP_INLINE_VISIBILITY reverse_iterator rend() noexcept { return reverse_iterator(begin()); } - inline _LIBCPP_INLINE_VISIBILITY const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); } - inline _LIBCPP_INLINE_VISIBILITY const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); } - - // capacity: - inline _LIBCPP_INLINE_VISIBILITY size_type size() const noexcept { return __size_; } - inline _LIBCPP_INLINE_VISIBILITY size_type max_size() const noexcept { return __size_; } - inline _LIBCPP_INLINE_VISIBILITY bool empty() const noexcept { return __size_ == 0; } - - // element access: - inline _LIBCPP_INLINE_VISIBILITY reference operator[](size_type __n) { return data()[__n]; } - inline _LIBCPP_INLINE_VISIBILITY const_reference operator[](size_type __n) const { return data()[__n]; } - - inline _LIBCPP_INLINE_VISIBILITY reference front() { return data()[0]; } - inline _LIBCPP_INLINE_VISIBILITY const_reference front() const { return data()[0]; } - inline _LIBCPP_INLINE_VISIBILITY reference back() { return data()[__size_-1]; } - inline _LIBCPP_INLINE_VISIBILITY const_reference back() const { return data()[__size_-1]; } - - inline _LIBCPP_INLINE_VISIBILITY const_reference at(size_type __n) const; - inline _LIBCPP_INLINE_VISIBILITY reference at(size_type __n); - - // data access: - inline _LIBCPP_INLINE_VISIBILITY _Tp* data() noexcept { return __base_; } - inline _LIBCPP_INLINE_VISIBILITY const _Tp* data() const noexcept { return __base_; } - - // mutating member functions: - inline _LIBCPP_INLINE_VISIBILITY void fill(const value_type& __v) { fill_n(begin(), __size_, __v); } -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -dynarray<_Tp>::dynarray(size_type __c) : dynarray () -{ - __base_ = __allocate (__c); - value_type *__data = data (); - for ( __size_ = 0; __size_ < __c; ++__size_, ++__data ) - ::new (__data) value_type; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -dynarray<_Tp>::dynarray(size_type __c, const value_type& __v) : dynarray () -{ - __base_ = __allocate (__c); - value_type *__data = data (); - for ( __size_ = 0; __size_ < __c; ++__size_, ++__data ) - ::new (__data) value_type (__v); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -dynarray<_Tp>::dynarray(initializer_list __il) : dynarray () -{ - size_t sz = __il.size(); - __base_ = __allocate (sz); - value_type *__data = data (); - auto src = __il.begin(); - for ( __size_ = 0; __size_ < sz; ++__size_, ++__data, ++src ) - ::new (__data) value_type (*src); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -dynarray<_Tp>::dynarray(const dynarray& __d) : dynarray () -{ - size_t sz = __d.size(); - __base_ = __allocate (sz); - value_type *__data = data (); - auto src = __d.begin(); - for ( __size_ = 0; __size_ < sz; ++__size_, ++__data, ++src ) - ::new (__data) value_type (*src); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -dynarray<_Tp>::~dynarray() -{ - value_type *__data = data () + __size_; - for ( size_t i = 0; i < __size_; ++i ) - (--__data)->value_type::~value_type(); - __deallocate ( __base_ ); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename dynarray<_Tp>::reference -dynarray<_Tp>::at(size_type __n) -{ - if (__n >= __size_) - { -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("dynarray::at"); -#else - assert(!"dynarray::at out_of_range"); -#endif - } - return data()[__n]; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename dynarray<_Tp>::const_reference -dynarray<_Tp>::at(size_type __n) const -{ - if (__n >= __size_) - { -#ifndef _LIBCPP_NO_EXCEPTIONS - throw out_of_range("dynarray::at"); -#else - assert(!"dynarray::at out_of_range"); -#endif - } - return data()[__n]; -} - -}}} - - -_LIBCPP_BEGIN_NAMESPACE_STD -template -struct _LIBCPP_TYPE_VIS_ONLY uses_allocator, _Alloc> : true_type {}; -_LIBCPP_END_NAMESPACE_STD - -#endif // if _LIBCPP_STD_VER > 11 -#endif // _LIBCPP_DYNARRAY diff --git a/libcxx/include/experimental/optional b/libcxx/include/experimental/optional deleted file mode 100644 index a384882a1..000000000 --- a/libcxx/include/experimental/optional +++ /dev/null @@ -1,894 +0,0 @@ -// -*- C++ -*- -//===-------------------------- optional ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_OPTIONAL -#define _LIBCPP_OPTIONAL - -/* - optional synopsis - -// C++1y - -namespace std { namespace experimental { inline namespace fundamentals_v1 { - - // 5.3, optional for object types - template class optional; - - // 5.4, In-place construction - struct in_place_t{}; - constexpr in_place_t in_place{}; - - // 5.5, No-value state indicator - struct nullopt_t{see below}; - constexpr nullopt_t nullopt(unspecified); - - // 5.6, Class bad_optional_access - class bad_optional_access; - - // 5.7, Relational operators - template - constexpr bool operator==(const optional&, const optional&); - template - constexpr bool operator!=(const optional&, const optional&); - template - constexpr bool operator<(const optional&, const optional&); - template - constexpr bool operator>(const optional&, const optional&); - template - constexpr bool operator<=(const optional&, const optional&); - template - constexpr bool operator>=(const optional&, const optional&); - - // 5.8, Comparison with nullopt - template constexpr bool operator==(const optional&, nullopt_t) noexcept; - template constexpr bool operator==(nullopt_t, const optional&) noexcept; - template constexpr bool operator!=(const optional&, nullopt_t) noexcept; - template constexpr bool operator!=(nullopt_t, const optional&) noexcept; - template constexpr bool operator<(const optional&, nullopt_t) noexcept; - template constexpr bool operator<(nullopt_t, const optional&) noexcept; - template constexpr bool operator<=(const optional&, nullopt_t) noexcept; - template constexpr bool operator<=(nullopt_t, const optional&) noexcept; - template constexpr bool operator>(const optional&, nullopt_t) noexcept; - template constexpr bool operator>(nullopt_t, const optional&) noexcept; - template constexpr bool operator>=(const optional&, nullopt_t) noexcept; - template constexpr bool operator>=(nullopt_t, const optional&) noexcept; - - // 5.9, Comparison with T - template constexpr bool operator==(const optional&, const T&); - template constexpr bool operator==(const T&, const optional&); - template constexpr bool operator!=(const optional&, const T&); - template constexpr bool operator!=(const T&, const optional&); - template constexpr bool operator<(const optional&, const T&); - template constexpr bool operator<(const T&, const optional&); - template constexpr bool operator<=(const optional&, const T&); - template constexpr bool operator<=(const T&, const optional&); - template constexpr bool operator>(const optional&, const T&); - template constexpr bool operator>(const T&, const optional&); - template constexpr bool operator>=(const optional&, const T&); - template constexpr bool operator>=(const T&, const optional&); - - // 5.10, Specialized algorithms - template void swap(optional&, optional&) noexcept(see below); - template constexpr optional make_optional(T&&); - - template - class optional - { - public: - typedef T value_type; - - // 5.3.1, Constructors - constexpr optional() noexcept; - constexpr optional(nullopt_t) noexcept; - optional(const optional&); - optional(optional&&) noexcept(see below); - constexpr optional(const T&); - constexpr optional(T&&); - template constexpr explicit optional(in_place_t, Args&&...); - template - constexpr explicit optional(in_place_t, initializer_list, Args&&...); - - // 5.3.2, Destructor - ~optional(); - - // 5.3.3, Assignment - optional& operator=(nullopt_t) noexcept; - optional& operator=(const optional&); - optional& operator=(optional&&) noexcept(see below); - template optional& operator=(U&&); - template void emplace(Args&&...); - template - void emplace(initializer_list, Args&&...); - - // 5.3.4, Swap - void swap(optional&) noexcept(see below); - - // 5.3.5, Observers - constexpr T const* operator ->() const; - constexpr T* operator ->(); - constexpr T const& operator *() const &; - constexpr T& operator *() &; - constexpr T&& operator *() &&; - constexpr const T&& operator *() const &&; - constexpr explicit operator bool() const noexcept; - constexpr T const& value() const &; - constexpr T& value() &; - constexpr T&& value() &&; - constexpr const T&& value() const &&; - template constexpr T value_or(U&&) const &; - template constexpr T value_or(U&&) &&; - - private: - T* val; // exposition only - }; - - } // namespace fundamentals_v1 - } // namespace experimental - - // 5.11, Hash support - template struct hash; - template struct hash>; - -} // namespace std - -*/ - -#include -#include -#include - -_LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL -class _LIBCPP_EXCEPTION_ABI bad_optional_access - : public std::logic_error -{ -public: - bad_optional_access() : std::logic_error("Bad optional Access") {} - -// Get the key function ~bad_optional_access() into the dylib - virtual ~bad_optional_access() _NOEXCEPT; -}; - -_LIBCPP_END_NAMESPACE_EXPERIMENTAL - - -#if _LIBCPP_STD_VER > 11 - -#include -#include -#include -#include <__functional_base> -#include <__undef_min_max> -#include <__debug> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_LFTS - -struct in_place_t {}; -constexpr in_place_t in_place{}; - -struct nullopt_t -{ - explicit constexpr nullopt_t(int) noexcept {} -}; - -constexpr nullopt_t nullopt{0}; - -template ::value> -class __optional_storage -{ -protected: - typedef _Tp value_type; - union - { - char __null_state_; - value_type __val_; - }; - bool __engaged_ = false; - - _LIBCPP_INLINE_VISIBILITY - ~__optional_storage() - { - if (__engaged_) - __val_.~value_type(); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage() noexcept - : __null_state_('\0') {} - - _LIBCPP_INLINE_VISIBILITY - __optional_storage(const __optional_storage& __x) - : __engaged_(__x.__engaged_) - { - if (__engaged_) - ::new(_VSTD::addressof(__val_)) value_type(__x.__val_); - } - - _LIBCPP_INLINE_VISIBILITY - __optional_storage(__optional_storage&& __x) - noexcept(is_nothrow_move_constructible::value) - : __engaged_(__x.__engaged_) - { - if (__engaged_) - ::new(_VSTD::addressof(__val_)) value_type(_VSTD::move(__x.__val_)); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage(const value_type& __v) - : __val_(__v), - __engaged_(true) {} - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage(value_type&& __v) - : __val_(_VSTD::move(__v)), - __engaged_(true) {} - - template - _LIBCPP_INLINE_VISIBILITY - constexpr - explicit __optional_storage(in_place_t, _Args&&... __args) - : __val_(_VSTD::forward<_Args>(__args)...), - __engaged_(true) {} -}; - -template -class __optional_storage<_Tp, true> -{ -protected: - typedef _Tp value_type; - union - { - char __null_state_; - value_type __val_; - }; - bool __engaged_ = false; - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage() noexcept - : __null_state_('\0') {} - - _LIBCPP_INLINE_VISIBILITY - __optional_storage(const __optional_storage& __x) - : __engaged_(__x.__engaged_) - { - if (__engaged_) - ::new(_VSTD::addressof(__val_)) value_type(__x.__val_); - } - - _LIBCPP_INLINE_VISIBILITY - __optional_storage(__optional_storage&& __x) - noexcept(is_nothrow_move_constructible::value) - : __engaged_(__x.__engaged_) - { - if (__engaged_) - ::new(_VSTD::addressof(__val_)) value_type(_VSTD::move(__x.__val_)); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage(const value_type& __v) - : __val_(__v), - __engaged_(true) {} - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage(value_type&& __v) - : __val_(_VSTD::move(__v)), - __engaged_(true) {} - - template - _LIBCPP_INLINE_VISIBILITY - constexpr - explicit __optional_storage(in_place_t, _Args&&... __args) - : __val_(_VSTD::forward<_Args>(__args)...), - __engaged_(true) {} -}; - -template -class optional - : private __optional_storage<_Tp> -{ - typedef __optional_storage<_Tp> __base; -public: - typedef _Tp value_type; - - static_assert(!is_reference::value, - "Instantiation of optional with a reference type is ill-formed."); - static_assert(!is_same::type, in_place_t>::value, - "Instantiation of optional with a in_place_t type is ill-formed."); - static_assert(!is_same::type, nullopt_t>::value, - "Instantiation of optional with a nullopt_t type is ill-formed."); - static_assert(is_object::value, - "Instantiation of optional with a non-object type is undefined behavior."); - static_assert(is_nothrow_destructible::value, - "Instantiation of optional with an object type that is not noexcept destructible is undefined behavior."); - - _LIBCPP_INLINE_VISIBILITY constexpr optional() noexcept {} - _LIBCPP_INLINE_VISIBILITY optional(const optional&) = default; - _LIBCPP_INLINE_VISIBILITY optional(optional&&) = default; - _LIBCPP_INLINE_VISIBILITY ~optional() = default; - _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {} - _LIBCPP_INLINE_VISIBILITY constexpr optional(const value_type& __v) - : __base(__v) {} - _LIBCPP_INLINE_VISIBILITY constexpr optional(value_type&& __v) - : __base(_VSTD::move(__v)) {} - - template ::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - constexpr - explicit optional(in_place_t, _Args&&... __args) - : __base(in_place, _VSTD::forward<_Args>(__args)...) {} - - template &, _Args...>::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - constexpr - explicit optional(in_place_t, initializer_list<_Up> __il, _Args&&... __args) - : __base(in_place, __il, _VSTD::forward<_Args>(__args)...) {} - - _LIBCPP_INLINE_VISIBILITY - optional& operator=(nullopt_t) noexcept - { - if (this->__engaged_) - { - this->__val_.~value_type(); - this->__engaged_ = false; - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - optional& - operator=(const optional& __opt) - { - if (this->__engaged_ == __opt.__engaged_) - { - if (this->__engaged_) - this->__val_ = __opt.__val_; - } - else - { - if (this->__engaged_) - this->__val_.~value_type(); - else - ::new(_VSTD::addressof(this->__val_)) value_type(__opt.__val_); - this->__engaged_ = __opt.__engaged_; - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - optional& - operator=(optional&& __opt) - noexcept(is_nothrow_move_assignable::value && - is_nothrow_move_constructible::value) - { - if (this->__engaged_ == __opt.__engaged_) - { - if (this->__engaged_) - this->__val_ = _VSTD::move(__opt.__val_); - } - else - { - if (this->__engaged_) - this->__val_.~value_type(); - else - ::new(_VSTD::addressof(this->__val_)) value_type(_VSTD::move(__opt.__val_)); - this->__engaged_ = __opt.__engaged_; - } - return *this; - } - - template ::type, value_type>::value && - is_constructible::value && - is_assignable::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - optional& - operator=(_Up&& __v) - { - if (this->__engaged_) - this->__val_ = _VSTD::forward<_Up>(__v); - else - { - ::new(_VSTD::addressof(this->__val_)) value_type(_VSTD::forward<_Up>(__v)); - this->__engaged_ = true; - } - return *this; - } - - template ::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - void - emplace(_Args&&... __args) - { - *this = nullopt; - ::new(_VSTD::addressof(this->__val_)) value_type(_VSTD::forward<_Args>(__args)...); - this->__engaged_ = true; - } - - template &, _Args...>::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - void - emplace(initializer_list<_Up> __il, _Args&&... __args) - { - *this = nullopt; - ::new(_VSTD::addressof(this->__val_)) value_type(__il, _VSTD::forward<_Args>(__args)...); - this->__engaged_ = true; - } - - _LIBCPP_INLINE_VISIBILITY - void - swap(optional& __opt) - noexcept(is_nothrow_move_constructible::value && - __is_nothrow_swappable::value) - { - using _VSTD::swap; - if (this->__engaged_ == __opt.__engaged_) - { - if (this->__engaged_) - swap(this->__val_, __opt.__val_); - } - else - { - if (this->__engaged_) - { - ::new(_VSTD::addressof(__opt.__val_)) value_type(_VSTD::move(this->__val_)); - this->__val_.~value_type(); - } - else - { - ::new(_VSTD::addressof(this->__val_)) value_type(_VSTD::move(__opt.__val_)); - __opt.__val_.~value_type(); - } - swap(this->__engaged_, __opt.__engaged_); - } - } - - _LIBCPP_INLINE_VISIBILITY - constexpr - value_type const* - operator->() const - { - _LIBCPP_ASSERT(this->__engaged_, "optional operator-> called for disengaged value"); - return __operator_arrow(__has_operator_addressof{}); - } - - _LIBCPP_INLINE_VISIBILITY - value_type* - operator->() - { - _LIBCPP_ASSERT(this->__engaged_, "optional operator-> called for disengaged value"); - return _VSTD::addressof(this->__val_); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr - const value_type& - operator*() const - { - _LIBCPP_ASSERT(this->__engaged_, "optional operator* called for disengaged value"); - return this->__val_; - } - - _LIBCPP_INLINE_VISIBILITY - value_type& - operator*() - { - _LIBCPP_ASSERT(this->__engaged_, "optional operator* called for disengaged value"); - return this->__val_; - } - - _LIBCPP_INLINE_VISIBILITY - constexpr explicit operator bool() const noexcept {return this->__engaged_;} - - _LIBCPP_INLINE_VISIBILITY - constexpr value_type const& value() const - { - if (!this->__engaged_) - throw bad_optional_access(); - return this->__val_; - } - - _LIBCPP_INLINE_VISIBILITY - value_type& value() - { - if (!this->__engaged_) - throw bad_optional_access(); - return this->__val_; - } - - template - _LIBCPP_INLINE_VISIBILITY - constexpr value_type value_or(_Up&& __v) const& - { - static_assert(is_copy_constructible::value, - "optional::value_or: T must be copy constructible"); - static_assert(is_convertible<_Up, value_type>::value, - "optional::value_or: U must be convertible to T"); - return this->__engaged_ ? this->__val_ : - static_cast(_VSTD::forward<_Up>(__v)); - } - - template - _LIBCPP_INLINE_VISIBILITY - value_type value_or(_Up&& __v) && - { - static_assert(is_move_constructible::value, - "optional::value_or: T must be move constructible"); - static_assert(is_convertible<_Up, value_type>::value, - "optional::value_or: U must be convertible to T"); - return this->__engaged_ ? _VSTD::move(this->__val_) : - static_cast(_VSTD::forward<_Up>(__v)); - } - -private: - _LIBCPP_INLINE_VISIBILITY - value_type const* - __operator_arrow(true_type) const - { - return _VSTD::addressof(this->__val_); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr - value_type const* - __operator_arrow(false_type) const - { - return &this->__val_; - } -}; - -// Comparisons between optionals -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - if (static_cast(__x) != static_cast(__y)) - return false; - if (!static_cast(__x)) - return true; - return *__x == *__y; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - if (!static_cast(__y)) - return false; - if (!static_cast(__x)) - return true; - return *__x < *__y; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - return !(__x < __y); -} - - -// Comparisons with nullopt -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(const optional<_Tp>& __x, nullopt_t) noexcept -{ - return !static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return !static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(const optional<_Tp>& __x, nullopt_t) noexcept -{ - return static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(const optional<_Tp>&, nullopt_t) noexcept -{ - return false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(const optional<_Tp>& __x, nullopt_t) noexcept -{ - return !static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(const optional<_Tp>& __x, nullopt_t) noexcept -{ - return static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(const optional<_Tp>&, nullopt_t) noexcept -{ - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return !static_cast(__x); -} - -// Comparisons with T -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(const optional<_Tp>& __x, const _Tp& __v) -{ - return static_cast(__x) ? *__x == __v : false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(const _Tp& __v, const optional<_Tp>& __x) -{ - return static_cast(__x) ? *__x == __v : false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(const optional<_Tp>& __x, const _Tp& __v) -{ - return static_cast(__x) ? !(*__x == __v) : true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(const _Tp& __v, const optional<_Tp>& __x) -{ - return static_cast(__x) ? !(*__x == __v) : true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(const optional<_Tp>& __x, const _Tp& __v) -{ - return static_cast(__x) ? less<_Tp>{}(*__x, __v) : true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(const _Tp& __v, const optional<_Tp>& __x) -{ - return static_cast(__x) ? less<_Tp>{}(__v, *__x) : false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(const optional<_Tp>& __x, const _Tp& __v) -{ - return !(__x > __v); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(const _Tp& __v, const optional<_Tp>& __x) -{ - return !(__v > __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(const optional<_Tp>& __x, const _Tp& __v) -{ - return static_cast(__x) ? __v < __x : false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(const _Tp& __v, const optional<_Tp>& __x) -{ - return static_cast(__x) ? __x < __v : true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(const optional<_Tp>& __x, const _Tp& __v) -{ - return !(__x < __v); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(const _Tp& __v, const optional<_Tp>& __x) -{ - return !(__v < __x); -} - - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(optional<_Tp>& __x, optional<_Tp>& __y) noexcept(noexcept(__x.swap(__y))) -{ - __x.swap(__y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -optional::type> -make_optional(_Tp&& __v) -{ - return optional::type>(_VSTD::forward<_Tp>(__v)); -} - -_LIBCPP_END_NAMESPACE_LFTS - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -struct _LIBCPP_TYPE_VIS_ONLY hash > -{ - typedef std::experimental::optional<_Tp> argument_type; - typedef size_t result_type; - - _LIBCPP_INLINE_VISIBILITY - result_type operator()(const argument_type& __opt) const _NOEXCEPT - { - return static_cast(__opt) ? hash<_Tp>()(*__opt) : 0; - } -}; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_STD_VER > 11 - -#endif // _LIBCPP_OPTIONAL diff --git a/libcxx/include/experimental/ratio b/libcxx/include/experimental/ratio deleted file mode 100644 index a00a2530e..000000000 --- a/libcxx/include/experimental/ratio +++ /dev/null @@ -1,77 +0,0 @@ -// -*- C++ -*- -//===------------------------------ ratio ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_EXPERIMENTAL_RATIO -#define _LIBCPP_EXPERIMENTAL_RATIO - -/** - experimental/ratio synopsis - C++1y -#include - -namespace std { -namespace experimental { -inline namespace fundamentals_v1 { - - // See C++14 20.11.5, ratio comparison - template constexpr bool ratio_equal_v - = ratio_equal::value; - template constexpr bool ratio_not_equal_v - = ratio_not_equal::value; - template constexpr bool ratio_less_v - = ratio_less::value; - template constexpr bool ratio_less_equal_v - = ratio_less_equal::value; - template constexpr bool ratio_greater_v - = ratio_greater::value; - template constexpr bool ratio_greater_equal_v - = ratio_greater_equal::value; - -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - -*/ - -#include - -#if _LIBCPP_STD_VER > 11 - -#include - -_LIBCPP_BEGIN_NAMESPACE_LFTS - -#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES - -template _LIBCPP_CONSTEXPR bool ratio_equal_v - = ratio_equal<_R1, _R2>::value; - -template _LIBCPP_CONSTEXPR bool ratio_not_equal_v - = ratio_not_equal<_R1, _R2>::value; - -template _LIBCPP_CONSTEXPR bool ratio_less_v - = ratio_less<_R1, _R2>::value; - -template _LIBCPP_CONSTEXPR bool ratio_less_equal_v - = ratio_less_equal<_R1, _R2>::value; - -template _LIBCPP_CONSTEXPR bool ratio_greater_v - = ratio_greater<_R1, _R2>::value; - -template _LIBCPP_CONSTEXPR bool ratio_greater_equal_v - = ratio_greater_equal<_R1, _R2>::value; - -#endif /* _LIBCPP_HAS_NO_VARIABLE_TEMPLATES */ - -_LIBCPP_END_NAMESPACE_LFTS - -#endif /* _LIBCPP_STD_VER > 11 */ - -#endif _LIBCPP_EXPERIMENTAL_RATIO \ No newline at end of file diff --git a/libcxx/include/experimental/string_view b/libcxx/include/experimental/string_view deleted file mode 100644 index 2a20d7caa..000000000 --- a/libcxx/include/experimental/string_view +++ /dev/null @@ -1,812 +0,0 @@ -// -*- C++ -*- -//===------------------------ string_view ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_LFTS_STRING_VIEW -#define _LIBCPP_LFTS_STRING_VIEW - -/* -string_view synopsis - -namespace std { - namespace experimental { - inline namespace library_fundamentals_v1 { - - // 7.2, Class template basic_string_view - template> - class basic_string_view; - - // 7.9, basic_string_view non-member comparison functions - template - constexpr bool operator==(basic_string_view x, - basic_string_view y) noexcept; - template - constexpr bool operator!=(basic_string_view x, - basic_string_view y) noexcept; - template - constexpr bool operator< (basic_string_view x, - basic_string_view y) noexcept; - template - constexpr bool operator> (basic_string_view x, - basic_string_view y) noexcept; - template - constexpr bool operator<=(basic_string_view x, - basic_string_view y) noexcept; - template - constexpr bool operator>=(basic_string_view x, - basic_string_view y) noexcept; - // see below, sufficient additional overloads of comparison functions - - // 7.10, Inserters and extractors - template - basic_ostream& - operator<<(basic_ostream& os, - basic_string_view str); - - // basic_string_view typedef names - typedef basic_string_view string_view; - typedef basic_string_view u16string_view; - typedef basic_string_view u32string_view; - typedef basic_string_view wstring_view; - - template> - class basic_string_view { - public: - // types - typedef traits traits_type; - typedef charT value_type; - typedef charT* pointer; - typedef const charT* const_pointer; - typedef charT& reference; - typedef const charT& const_reference; - typedef implementation-defined const_iterator; - typedef const_iterator iterator; - typedef reverse_iterator const_reverse_iterator; - typedef const_reverse_iterator reverse_iterator; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - static constexpr size_type npos = size_type(-1); - - // 7.3, basic_string_view constructors and assignment operators - constexpr basic_string_view() noexcept; - constexpr basic_string_view(const basic_string_view&) noexcept = default; - basic_string_view& operator=(const basic_string_view&) noexcept = default; - template - basic_string_view(const basic_string& str) noexcept; - constexpr basic_string_view(const charT* str); - constexpr basic_string_view(const charT* str, size_type len); - - // 7.4, basic_string_view iterator support - constexpr const_iterator begin() const noexcept; - constexpr const_iterator end() const noexcept; - constexpr const_iterator cbegin() const noexcept; - constexpr const_iterator cend() const noexcept; - const_reverse_iterator rbegin() const noexcept; - const_reverse_iterator rend() const noexcept; - const_reverse_iterator crbegin() const noexcept; - const_reverse_iterator crend() const noexcept; - - // 7.5, basic_string_view capacity - constexpr size_type size() const noexcept; - constexpr size_type length() const noexcept; - constexpr size_type max_size() const noexcept; - constexpr bool empty() const noexcept; - - // 7.6, basic_string_view element access - constexpr const_reference operator[](size_type pos) const; - constexpr const_reference at(size_type pos) const; - constexpr const_reference front() const; - constexpr const_reference back() const; - constexpr const_pointer data() const noexcept; - - // 7.7, basic_string_view modifiers - constexpr void clear() noexcept; - constexpr void remove_prefix(size_type n); - constexpr void remove_suffix(size_type n); - constexpr void swap(basic_string_view& s) noexcept; - - // 7.8, basic_string_view string operations - template - explicit operator basic_string() const; - template> - basic_string to_string( - const Allocator& a = Allocator()) const; - - size_type copy(charT* s, size_type n, size_type pos = 0) const; - - constexpr basic_string_view substr(size_type pos = 0, size_type n = npos) const; - constexpr int compare(basic_string_view s) const noexcept; - constexpr int compare(size_type pos1, size_type n1, basic_string_view s) const; - constexpr int compare(size_type pos1, size_type n1, - basic_string_view s, size_type pos2, size_type n2) const; - constexpr int compare(const charT* s) const; - constexpr int compare(size_type pos1, size_type n1, const charT* s) const; - constexpr int compare(size_type pos1, size_type n1, - const charT* s, size_type n2) const; - constexpr size_type find(basic_string_view s, size_type pos = 0) const noexcept; - constexpr size_type find(charT c, size_type pos = 0) const noexcept; - constexpr size_type find(const charT* s, size_type pos, size_type n) const; - constexpr size_type find(const charT* s, size_type pos = 0) const; - constexpr size_type rfind(basic_string_view s, size_type pos = npos) const noexcept; - constexpr size_type rfind(charT c, size_type pos = npos) const noexcept; - constexpr size_type rfind(const charT* s, size_type pos, size_type n) const; - constexpr size_type rfind(const charT* s, size_type pos = npos) const; - constexpr size_type find_first_of(basic_string_view s, size_type pos = 0) const noexcept; - constexpr size_type find_first_of(charT c, size_type pos = 0) const noexcept; - constexpr size_type find_first_of(const charT* s, size_type pos, size_type n) const; - constexpr size_type find_first_of(const charT* s, size_type pos = 0) const; - constexpr size_type find_last_of(basic_string_view s, size_type pos = npos) const noexcept; - constexpr size_type find_last_of(charT c, size_type pos = npos) const noexcept; - constexpr size_type find_last_of(const charT* s, size_type pos, size_type n) const; - constexpr size_type find_last_of(const charT* s, size_type pos = npos) const; - constexpr size_type find_first_not_of(basic_string_view s, size_type pos = 0) const noexcept; - constexpr size_type find_first_not_of(charT c, size_type pos = 0) const noexcept; - constexpr size_type find_first_not_of(const charT* s, size_type pos, size_type n) const; - constexpr size_type find_first_not_of(const charT* s, size_type pos = 0) const; - constexpr size_type find_last_not_of(basic_string_view s, size_type pos = npos) const noexcept; - constexpr size_type find_last_not_of(charT c, size_type pos = npos) const noexcept; - constexpr size_type find_last_not_of(const charT* s, size_type pos, size_type n) const; - constexpr size_type find_last_not_of(const charT* s, size_type pos = npos) const; - - private: - const_pointer data_; // exposition only - size_type size_; // exposition only - }; - - } // namespace fundamentals_v1 - } // namespace experimental - - // 7.11, Hash support - template struct hash; - template <> struct hash; - template <> struct hash; - template <> struct hash; - template <> struct hash; - -} // namespace std - - -*/ - -#include - -#include -#include -#include -#include -#include - -#include <__debug> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_LFTS - - template > - class _LIBCPP_TYPE_VIS_ONLY basic_string_view { - public: - // types - typedef _Traits traits_type; - typedef _CharT value_type; - typedef const _CharT* pointer; - typedef const _CharT* const_pointer; - typedef const _CharT& reference; - typedef const _CharT& const_reference; - typedef const_pointer const_iterator; // See [string.view.iterators] - typedef const_iterator iterator; - typedef _VSTD::reverse_iterator const_reverse_iterator; - typedef const_reverse_iterator reverse_iterator; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - static _LIBCPP_CONSTEXPR const size_type npos = -1; // size_type(-1); - - // [string.view.cons], construct/copy - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - basic_string_view() _NOEXCEPT : __data (nullptr), __size(0) {} - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - basic_string_view(const basic_string_view&) _NOEXCEPT = default; - - _LIBCPP_INLINE_VISIBILITY - basic_string_view& operator=(const basic_string_view&) _NOEXCEPT = default; - - template - _LIBCPP_INLINE_VISIBILITY - basic_string_view(const basic_string<_CharT, _Traits, _Allocator>& __str) _NOEXCEPT - : __data (__str.data()), __size(__str.size()) {} - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - basic_string_view(const _CharT* __s, size_type __len) - : __data(__s), __size(__len) - { -// _LIBCPP_ASSERT(__len == 0 || __s != nullptr, "string_view::string_view(_CharT *, size_t): recieved nullptr"); - } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - basic_string_view(const _CharT* __s) - : __data(__s), __size(_Traits::length(__s)) {} - - // [string.view.iterators], iterators - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT { return cbegin(); } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT { return cend(); } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - const_iterator cbegin() const _NOEXCEPT { return __data; } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - const_iterator cend() const _NOEXCEPT { return __data + __size; } - - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rbegin() const _NOEXCEPT { return const_reverse_iterator(cend()); } - - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rend() const _NOEXCEPT { return const_reverse_iterator(cbegin()); } - - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crbegin() const _NOEXCEPT { return const_reverse_iterator(cend()); } - - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crend() const _NOEXCEPT { return const_reverse_iterator(cbegin()); } - - // [string.view.capacity], capacity - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - size_type size() const _NOEXCEPT { return __size; } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - size_type length() const _NOEXCEPT { return __size; } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - size_type max_size() const _NOEXCEPT { return _VSTD::numeric_limits::max(); } - - _LIBCPP_CONSTEXPR bool _LIBCPP_INLINE_VISIBILITY - empty() const _NOEXCEPT { return __size == 0; } - - // [string.view.access], element access - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - const_reference operator[](size_type __pos) const { return __data[__pos]; } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - const_reference at(size_type __pos) const - { - return __pos >= size() - ? (throw out_of_range("string_view::at"), __data[0]) - : __data[__pos]; - } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - const_reference front() const - { - return _LIBCPP_ASSERT(!empty(), "string_view::front(): string is empty"), __data[0]; - } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - const_reference back() const - { - return _LIBCPP_ASSERT(!empty(), "string_view::back(): string is empty"), __data[__size-1]; - } - - _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY - const_pointer data() const _NOEXCEPT { return __data; } - - // [string.view.modifiers], modifiers: - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - void clear() _NOEXCEPT - { - __data = nullptr; - __size = 0; - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - void remove_prefix(size_type __n) _NOEXCEPT - { - _LIBCPP_ASSERT(__n <= size(), "remove_prefix() can't remove more than size()"); - __data += __n; - __size -= __n; - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - void remove_suffix(size_type __n) _NOEXCEPT - { - _LIBCPP_ASSERT(__n <= size(), "remove_suffix() can't remove more than size()"); - __size -= __n; - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - void swap(basic_string_view& __other) _NOEXCEPT - { - const value_type *__p = __data; - __data = __other.__data; - __other.__data = __p; - - size_type __sz = __size; - __size = __other.__size; - __other.__size = __sz; -// _VSTD::swap( __data, __other.__data ); -// _VSTD::swap( __size, __other.__size ); - } - - // [string.view.ops], string operations: - template - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_EXPLICIT operator basic_string<_CharT, _Traits, _Allocator>() const - { return basic_string<_CharT, _Traits, _Allocator>( begin(), end()); } - - template > - _LIBCPP_INLINE_VISIBILITY - basic_string<_CharT, _Traits, _Allocator> - to_string( const _Allocator& __a = _Allocator()) const - { return basic_string<_CharT, _Traits, _Allocator> ( begin(), end(), __a ); } - - size_type copy(_CharT* __s, size_type __n, size_type __pos = 0) const - { - if ( __pos > size()) - throw out_of_range("string_view::copy"); - size_type __rlen = _VSTD::min( __n, size() - __pos ); - _VSTD::copy_n(begin() + __pos, __rlen, __s ); - return __rlen; - } - - _LIBCPP_CONSTEXPR - basic_string_view substr(size_type __pos = 0, size_type __n = npos) const - { -// if (__pos > size()) -// throw out_of_range("string_view::substr"); -// size_type __rlen = _VSTD::min( __n, size() - __pos ); -// return basic_string_view(data() + __pos, __rlen); - return __pos > size() - ? throw out_of_range("string_view::substr") - : basic_string_view(data() + __pos, _VSTD::min(__n, size() - __pos)); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 int compare(basic_string_view __sv) const _NOEXCEPT - { - size_type __rlen = _VSTD::min( size(), __sv.size()); - int __retval = _Traits::compare(data(), __sv.data(), __rlen); - if ( __retval == 0 ) // first __rlen chars matched - __retval = size() == __sv.size() ? 0 : ( size() < __sv.size() ? -1 : 1 ); - return __retval; - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - int compare(size_type __pos1, size_type __n1, basic_string_view __sv) const - { - return substr(__pos1, __n1).compare(__sv); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - int compare( size_type __pos1, size_type __n1, - basic_string_view _sv, size_type __pos2, size_type __n2) const - { - return substr(__pos1, __n1).compare(_sv.substr(__pos2, __n2)); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - int compare(const _CharT* __s) const - { - return compare(basic_string_view(__s)); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - int compare(size_type __pos1, size_type __n1, const _CharT* __s) const - { - return substr(__pos1, __n1).compare(basic_string_view(__s)); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - int compare(size_type __pos1, size_type __n1, const _CharT* __s, size_type __n2) const - { - return substr(__pos1, __n1).compare(basic_string_view(__s, __n2)); - } - - // find - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find(basic_string_view __s, size_type __pos = 0) const _NOEXCEPT - { - _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find(): recieved nullptr"); - return _VSTD::__str_find - (data(), size(), __s.data(), __pos, __s.size()); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find(_CharT __c, size_type __pos = 0) const _NOEXCEPT - { - return _VSTD::__str_find - (data(), size(), __c, __pos); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find(const _CharT* __s, size_type __pos, size_type __n) const - { - _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find(): recieved nullptr"); - return _VSTD::__str_find - (data(), size(), __s, __pos, __n); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find(const _CharT* __s, size_type __pos = 0) const - { - _LIBCPP_ASSERT(__s != nullptr, "string_view::find(): recieved nullptr"); - return _VSTD::__str_find - (data(), size(), __s, __pos, traits_type::length(__s)); - } - - // rfind - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type rfind(basic_string_view __s, size_type __pos = npos) const _NOEXCEPT - { - _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find(): recieved nullptr"); - return _VSTD::__str_rfind - (data(), size(), __s.data(), __pos, __s.size()); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type rfind(_CharT __c, size_type __pos = npos) const _NOEXCEPT - { - return _VSTD::__str_rfind - (data(), size(), __c, __pos); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type rfind(const _CharT* __s, size_type __pos, size_type __n) const - { - _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::rfind(): recieved nullptr"); - return _VSTD::__str_rfind - (data(), size(), __s, __pos, __n); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type rfind(const _CharT* __s, size_type __pos=npos) const - { - _LIBCPP_ASSERT(__s != nullptr, "string_view::rfind(): recieved nullptr"); - return _VSTD::__str_rfind - (data(), size(), __s, __pos, traits_type::length(__s)); - } - - // find_first_of - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_first_of(basic_string_view __s, size_type __pos = 0) const _NOEXCEPT - { - _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find_first_of(): recieved nullptr"); - return _VSTD::__str_find_first_of - (data(), size(), __s.data(), __pos, __s.size()); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_first_of(_CharT __c, size_type __pos = 0) const _NOEXCEPT - { return find(__c, __pos); } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_first_of(const _CharT* __s, size_type __pos, size_type __n) const - { - _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find_first_of(): recieved nullptr"); - return _VSTD::__str_find_first_of - (data(), size(), __s, __pos, __n); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_first_of(const _CharT* __s, size_type __pos=0) const - { - _LIBCPP_ASSERT(__s != nullptr, "string_view::find_first_of(): recieved nullptr"); - return _VSTD::__str_find_first_of - (data(), size(), __s, __pos, traits_type::length(__s)); - } - - // find_last_of - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_last_of(basic_string_view __s, size_type __pos=npos) const _NOEXCEPT - { - _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find_last_of(): recieved nullptr"); - return _VSTD::__str_find_last_of - (data(), size(), __s.data(), __pos, __s.size()); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_last_of(_CharT __c, size_type __pos = npos) const _NOEXCEPT - { return rfind(__c, __pos); } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_last_of(const _CharT* __s, size_type __pos, size_type __n) const - { - _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find_last_of(): recieved nullptr"); - return _VSTD::__str_find_last_of - (data(), size(), __s, __pos, __n); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_last_of(const _CharT* __s, size_type __pos=npos) const - { - _LIBCPP_ASSERT(__s != nullptr, "string_view::find_last_of(): recieved nullptr"); - return _VSTD::__str_find_last_of - (data(), size(), __s, __pos, traits_type::length(__s)); - } - - // find_first_not_of - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_first_not_of(basic_string_view __s, size_type __pos=0) const _NOEXCEPT - { - _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find_first_not_of(): recieved nullptr"); - return _VSTD::__str_find_first_not_of - (data(), size(), __s.data(), __pos, __s.size()); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_first_not_of(_CharT __c, size_type __pos=0) const _NOEXCEPT - { - return _VSTD::__str_find_first_not_of - (data(), size(), __c, __pos); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const - { - _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find_first_not_of(): recieved nullptr"); - return _VSTD::__str_find_first_not_of - (data(), size(), __s, __pos, __n); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_first_not_of(const _CharT* __s, size_type __pos=0) const - { - _LIBCPP_ASSERT(__s != nullptr, "string_view::find_first_not_of(): recieved nullptr"); - return _VSTD::__str_find_first_not_of - (data(), size(), __s, __pos, traits_type::length(__s)); - } - - // find_last_not_of - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_last_not_of(basic_string_view __s, size_type __pos=npos) const _NOEXCEPT - { - _LIBCPP_ASSERT(__s.size() == 0 || __s.data() != nullptr, "string_view::find_last_not_of(): recieved nullptr"); - return _VSTD::__str_find_last_not_of - (data(), size(), __s.data(), __pos, __s.size()); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_last_not_of(_CharT __c, size_type __pos=npos) const _NOEXCEPT - { - return _VSTD::__str_find_last_not_of - (data(), size(), __c, __pos); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const - { - _LIBCPP_ASSERT(__n == 0 || __s != nullptr, "string_view::find_last_not_of(): recieved nullptr"); - return _VSTD::__str_find_last_not_of - (data(), size(), __s, __pos, __n); - } - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - size_type find_last_not_of(const _CharT* __s, size_type __pos=npos) const - { - _LIBCPP_ASSERT(__s != nullptr, "string_view::find_last_not_of(): recieved nullptr"); - return _VSTD::__str_find_last_not_of - (data(), size(), __s, __pos, traits_type::length(__s)); - } - - private: - const value_type* __data; - size_type __size; - }; - - - // [string.view.comparison] - // operator == - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator==(basic_string_view<_CharT, _Traits> __lhs, - basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - if ( __lhs.size() != __rhs.size()) return false; - return __lhs.compare(__rhs) == 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator==(basic_string_view<_CharT, _Traits> __lhs, - typename _VSTD::common_type >::type __rhs) _NOEXCEPT - { - if ( __lhs.size() != __rhs.size()) return false; - return __lhs.compare(__rhs) == 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator==(typename _VSTD::common_type >::type __lhs, - basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - if ( __lhs.size() != __rhs.size()) return false; - return __lhs.compare(__rhs) == 0; - } - - - // operator != - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator!=(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - if ( __lhs.size() != __rhs.size()) - return true; - return __lhs.compare(__rhs) != 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator!=(basic_string_view<_CharT, _Traits> __lhs, - typename _VSTD::common_type >::type __rhs) _NOEXCEPT - { - if ( __lhs.size() != __rhs.size()) - return true; - return __lhs.compare(__rhs) != 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator!=(typename _VSTD::common_type >::type __lhs, - basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - if ( __lhs.size() != __rhs.size()) - return true; - return __lhs.compare(__rhs) != 0; - } - - - // operator < - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator<(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) < 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator<(basic_string_view<_CharT, _Traits> __lhs, - typename _VSTD::common_type >::type __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) < 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator<(typename _VSTD::common_type >::type __lhs, - basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) < 0; - } - - - // operator > - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator> (basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) > 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator>(basic_string_view<_CharT, _Traits> __lhs, - typename _VSTD::common_type >::type __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) > 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator>(typename _VSTD::common_type >::type __lhs, - basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) > 0; - } - - - // operator <= - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator<=(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) <= 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator<=(basic_string_view<_CharT, _Traits> __lhs, - typename _VSTD::common_type >::type __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) <= 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator<=(typename _VSTD::common_type >::type __lhs, - basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) <= 0; - } - - - // operator >= - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator>=(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) >= 0; - } - - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator>=(basic_string_view<_CharT, _Traits> __lhs, - typename _VSTD::common_type >::type __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) >= 0; - } - - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator>=(typename _VSTD::common_type >::type __lhs, - basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT - { - return __lhs.compare(__rhs) >= 0; - } - - - // [string.view.io] - template - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, basic_string_view<_CharT, _Traits> __sv) - { - return _VSTD::__put_character_sequence(__os, __sv.data(), __sv.size()); - } - - typedef basic_string_view string_view; - typedef basic_string_view u16string_view; - typedef basic_string_view u32string_view; - typedef basic_string_view wstring_view; - -_LIBCPP_END_NAMESPACE_LFTS -_LIBCPP_BEGIN_NAMESPACE_STD - -// [string.view.hash] -// Shamelessly stolen from -template -struct _LIBCPP_TYPE_VIS_ONLY hash > - : public unary_function, size_t> -{ - size_t operator()(const std::experimental::basic_string_view<_CharT, _Traits>& __val) const _NOEXCEPT; -}; - -template -size_t -hash >::operator()( - const std::experimental::basic_string_view<_CharT, _Traits>& __val) const _NOEXCEPT -{ - return __do_string_hash(__val.data(), __val.data() + __val.size()); -} - -#if _LIBCPP_STD_VER > 11 -template -__quoted_output_proxy<_CharT, const _CharT *, _Traits> -quoted ( std::experimental::basic_string_view <_CharT, _Traits> __sv, - _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\')) -{ - return __quoted_output_proxy<_CharT, const _CharT *, _Traits> - ( __sv.data(), __sv.data() + __sv.size(), __delim, __escape ); -} -#endif - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_LFTS_STRING_VIEW diff --git a/libcxx/include/experimental/system_error b/libcxx/include/experimental/system_error deleted file mode 100644 index 2ec238544..000000000 --- a/libcxx/include/experimental/system_error +++ /dev/null @@ -1,63 +0,0 @@ -// -*- C++ -*- -//===-------------------------- system_error ------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_EXPERIMENTAL_SYSTEM_ERROR -#define _LIBCPP_EXPERIMENTAL_SYSTEM_ERROR - -/** - experimental/system_error synopsis - -// C++1y - -#include - -namespace std { -namespace experimental { -inline namespace fundamentals_v1 { - - // See C++14 19.5, System error support - template constexpr bool is_error_code_enum_v - = is_error_code_enum::value; - template constexpr bool is_error_condition_enum_v - = is_error_condition_enum::value; - -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - -*/ - -#include - -#if _LIBCPP_STD_VER > 11 - -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_LFTS - -#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES - -template _LIBCPP_CONSTEXPR bool is_error_code_enum_v - = is_error_code_enum<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_error_condition_enum_v - = is_error_condition_enum<_Tp>::value; - -#endif /* _LIBCPP_HAS_NO_VARIABLE_TEMPLATES */ - -_LIBCPP_END_NAMESPACE_LFTS - -#endif /* _LIBCPP_STD_VER > 11 */ - -#endif /* _LIBCPP_EXPERIMENTAL_SYSTEM_ERROR */ diff --git a/libcxx/include/experimental/tuple b/libcxx/include/experimental/tuple deleted file mode 100644 index 34133b2d1..000000000 --- a/libcxx/include/experimental/tuple +++ /dev/null @@ -1,81 +0,0 @@ -// -*- C++ -*- -//===----------------------------- tuple ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_EXPERIMENTAL_TUPLE -#define _LIBCPP_EXPERIMENTAL_TUPLE - -/* - experimental/tuple synopsis - -// C++1y - -#include - -namespace std { -namespace experimental { -inline namespace fundamentals_v1 { - - // See C++14 20.4.2.5, tuple helper classes - template constexpr size_t tuple_size_v - = tuple_size::value; - - // 3.2.2, Calling a function with a tuple of arguments - template - constexpr decltype(auto) apply(F&& f, Tuple&& t); - -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - - */ - -# include - -#if _LIBCPP_STD_VER > 11 - -# include -# include -# include <__functional_base> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_LFTS - -#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES -template -_LIBCPP_CONSTEXPR size_t tuple_size_v = tuple_size<_Tp>::value; -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -decltype(auto) __apply_tuple_impl(_Fn && __f, _Tuple && __t, - integer_sequence) { - return _VSTD::__invoke( - _VSTD::forward<_Fn>(__f), - _VSTD::get<_Id>(_VSTD::forward<_Tuple>(__t))... - ); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -decltype(auto) apply(_Fn && __f, _Tuple && __t) { - return _VSTD_LFTS::__apply_tuple_impl( - _VSTD::forward<_Fn>(__f), _VSTD::forward<_Tuple>(__t), - make_index_sequence::type>::value>() - ); -} - -_LIBCPP_END_NAMESPACE_LFTS - -#endif /* _LIBCPP_STD_VER > 11 */ - -#endif /* _LIBCPP_EXPERIMENTAL_TUPLE */ diff --git a/libcxx/include/experimental/type_traits b/libcxx/include/experimental/type_traits deleted file mode 100644 index ae49fc176..000000000 --- a/libcxx/include/experimental/type_traits +++ /dev/null @@ -1,427 +0,0 @@ -// -*- C++ -*- -//===-------------------------- type_traits -------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_EXPERIMENTAL_TYPE_TRAITS -#define _LIBCPP_EXPERIMENTAL_TYPE_TRAITS - -/** - experimental/type_traits synopsis - -// C++1y -#include - -namespace std { -namespace experimental { -inline namespace fundamentals_v1 { - - // See C++14 20.10.4.1, primary type categories - template constexpr bool is_void_v - = is_void::value; - template constexpr bool is_null_pointer_v - = is_null_pointer::value; - template constexpr bool is_integral_v - = is_integral::value; - template constexpr bool is_floating_point_v - = is_floating_point::value; - template constexpr bool is_array_v - = is_array::value; - template constexpr bool is_pointer_v - = is_pointer::value; - template constexpr bool is_lvalue_reference_v - = is_lvalue_reference::value; - template constexpr bool is_rvalue_reference_v - = is_rvalue_reference::value; - template constexpr bool is_member_object_pointer_v - = is_member_object_pointer::value; - template constexpr bool is_member_function_pointer_v - = is_member_function_pointer::value; - template constexpr bool is_enum_v - = is_enum::value; - template constexpr bool is_union_v - = is_union::value; - template constexpr bool is_class_v - = is_class::value; - template constexpr bool is_function_v - = is_function::value; - - // See C++14 20.10.4.2, composite type categories - template constexpr bool is_reference_v - = is_reference::value; - template constexpr bool is_arithmetic_v - = is_arithmetic::value; - template constexpr bool is_fundamental_v - = is_fundamental::value; - template constexpr bool is_object_v - = is_object::value; - template constexpr bool is_scalar_v - = is_scalar::value; - template constexpr bool is_compound_v - = is_compound::value; - template constexpr bool is_member_pointer_v - = is_member_pointer::value; - - // See C++14 20.10.4.3, type properties - template constexpr bool is_const_v - = is_const::value; - template constexpr bool is_volatile_v - = is_volatile::value; - template constexpr bool is_trivial_v - = is_trivial::value; - template constexpr bool is_trivially_copyable_v - = is_trivially_copyable::value; - template constexpr bool is_standard_layout_v - = is_standard_layout::value; - template constexpr bool is_pod_v - = is_pod::value; - template constexpr bool is_literal_type_v - = is_literal_type::value; - template constexpr bool is_empty_v - = is_empty::value; - template constexpr bool is_polymorphic_v - = is_polymorphic::value; - template constexpr bool is_abstract_v - = is_abstract::value; - template constexpr bool is_final_v - = is_final::value; - template constexpr bool is_signed_v - = is_signed::value; - template constexpr bool is_unsigned_v - = is_unsigned::value; - template constexpr bool is_constructible_v - = is_constructible::value; - template constexpr bool is_default_constructible_v - = is_default_constructible::value; - template constexpr bool is_copy_constructible_v - = is_copy_constructible::value; - template constexpr bool is_move_constructible_v - = is_move_constructible::value; - template constexpr bool is_assignable_v - = is_assignable::value; - template constexpr bool is_copy_assignable_v - = is_copy_assignable::value; - template constexpr bool is_move_assignable_v - = is_move_assignable::value; - template constexpr bool is_destructible_v - = is_destructible::value; - template constexpr bool is_trivially_constructible_v - = is_trivially_constructible::value; - template constexpr bool is_trivially_default_constructible_v - = is_trivially_default_constructible::value; - template constexpr bool is_trivially_copy_constructible_v - = is_trivially_copy_constructible::value; - template constexpr bool is_trivially_move_constructible_v - = is_trivially_move_constructible::value; - template constexpr bool is_trivially_assignable_v - = is_trivially_assignable::value; - template constexpr bool is_trivially_copy_assignable_v - = is_trivially_copy_assignable::value; - template constexpr bool is_trivially_move_assignable_v - = is_trivially_move_assignable::value; - template constexpr bool is_trivially_destructible_v - = is_trivially_destructible::value; - template constexpr bool is_nothrow_constructible_v - = is_nothrow_constructible::value; - template constexpr bool is_nothrow_default_constructible_v - = is_nothrow_default_constructible::value; - template constexpr bool is_nothrow_copy_constructible_v - = is_nothrow_copy_constructible::value; - template constexpr bool is_nothrow_move_constructible_v - = is_nothrow_move_constructible::value; - template constexpr bool is_nothrow_assignable_v - = is_nothrow_assignable::value; - template constexpr bool is_nothrow_copy_assignable_v - = is_nothrow_copy_assignable::value; - template constexpr bool is_nothrow_move_assignable_v - = is_nothrow_move_assignable::value; - template constexpr bool is_nothrow_destructible_v - = is_nothrow_destructible::value; - template constexpr bool has_virtual_destructor_v - = has_virtual_destructor::value; - - // See C++14 20.10.5, type property queries - template constexpr size_t alignment_of_v - = alignment_of::value; - template constexpr size_t rank_v - = rank::value; - template constexpr size_t extent_v - = extent::value; - - // See C++14 20.10.6, type relations - template constexpr bool is_same_v - = is_same::value; - template constexpr bool is_base_of_v - = is_base_of::value; - template constexpr bool is_convertible_v - = is_convertible::value; - - // 3.3.2, Other type transformations - template class invocation_type; // not defined - template class invocation_type; - template class raw_invocation_type; // not defined - template class raw_invocation_type; - - template - using invocation_type_t = typename invocation_type::type; - template - using raw_invocation_type_t = typename raw_invocation_type::type; - -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - - */ - -#include - -#if _LIBCPP_STD_VER > 11 - -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_LFTS - -#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES - -// C++14 20.10.4.1, primary type categories - -template _LIBCPP_CONSTEXPR bool is_void_v - = is_void<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_null_pointer_v - = is_null_pointer<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_integral_v - = is_integral<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_floating_point_v - = is_floating_point<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_array_v - = is_array<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_pointer_v - = is_pointer<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_lvalue_reference_v - = is_lvalue_reference<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_rvalue_reference_v - = is_rvalue_reference<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_member_object_pointer_v - = is_member_object_pointer<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_member_function_pointer_v - = is_member_function_pointer<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_enum_v - = is_enum<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_union_v - = is_union<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_class_v - = is_class<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_function_v - = is_function<_Tp>::value; - -// C++14 20.10.4.2, composite type categories - -template _LIBCPP_CONSTEXPR bool is_reference_v - = is_reference<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_arithmetic_v - = is_arithmetic<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_fundamental_v - = is_fundamental<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_object_v - = is_object<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_scalar_v - = is_scalar<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_compound_v - = is_compound<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_member_pointer_v - = is_member_pointer<_Tp>::value; - -// C++14 20.10.4.3, type properties - -template _LIBCPP_CONSTEXPR bool is_const_v - = is_const<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_volatile_v - = is_volatile<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_trivial_v - = is_trivial<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_trivially_copyable_v - = is_trivially_copyable<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_standard_layout_v - = is_standard_layout<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_pod_v - = is_pod<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_literal_type_v - = is_literal_type<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_empty_v - = is_empty<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_polymorphic_v - = is_polymorphic<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_abstract_v - = is_abstract<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_final_v - = is_final<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_signed_v - = is_signed<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_unsigned_v - = is_unsigned<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_constructible_v - = is_constructible<_Tp, _Ts...>::value; - -template _LIBCPP_CONSTEXPR bool is_default_constructible_v - = is_default_constructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_copy_constructible_v - = is_copy_constructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_move_constructible_v - = is_move_constructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_assignable_v - = is_assignable<_Tp, _Up>::value; - -template _LIBCPP_CONSTEXPR bool is_copy_assignable_v - = is_copy_assignable<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_move_assignable_v - = is_move_assignable<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_destructible_v - = is_destructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_trivially_constructible_v - = is_trivially_constructible<_Tp, _Ts...>::value; - -template _LIBCPP_CONSTEXPR bool is_trivially_default_constructible_v - = is_trivially_default_constructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_trivially_copy_constructible_v - = is_trivially_copy_constructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_trivially_move_constructible_v - = is_trivially_move_constructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_trivially_assignable_v - = is_trivially_assignable<_Tp, _Up>::value; - -template _LIBCPP_CONSTEXPR bool is_trivially_copy_assignable_v - = is_trivially_copy_assignable<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_trivially_move_assignable_v - = is_trivially_move_assignable<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_trivially_destructible_v - = is_trivially_destructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_nothrow_constructible_v - = is_nothrow_constructible<_Tp, _Ts...>::value; - -template _LIBCPP_CONSTEXPR bool is_nothrow_default_constructible_v - = is_nothrow_default_constructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_nothrow_copy_constructible_v - = is_nothrow_copy_constructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_nothrow_move_constructible_v - = is_nothrow_move_constructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_nothrow_assignable_v - = is_nothrow_assignable<_Tp, _Up>::value; - -template _LIBCPP_CONSTEXPR bool is_nothrow_copy_assignable_v - = is_nothrow_copy_assignable<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_nothrow_move_assignable_v - = is_nothrow_move_assignable<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool is_nothrow_destructible_v - = is_nothrow_destructible<_Tp>::value; - -template _LIBCPP_CONSTEXPR bool has_virtual_destructor_v - = has_virtual_destructor<_Tp>::value; - -// C++14 20.10.5, type properties queries - -template _LIBCPP_CONSTEXPR size_t alignment_of_v - = alignment_of<_Tp>::value; - -template _LIBCPP_CONSTEXPR size_t rank_v - = rank<_Tp>::value; - -template _LIBCPP_CONSTEXPR size_t extent_v - = extent<_Tp, _Id>::value; - -// C++14 20.10.6, type relations - -template _LIBCPP_CONSTEXPR bool is_same_v - = is_same<_Tp, _Up>::value; - -template _LIBCPP_CONSTEXPR bool is_base_of_v - = is_base_of<_Tp, _Up>::value; - -template _LIBCPP_CONSTEXPR bool is_convertible_v - = is_convertible<_Tp, _Up>::value; - -#endif /* _LIBCPP_HAS_NO_VARIABLE_TEMPLATES */ - -// 3.3.2, Other type transformations -/* -template -class _LIBCPP_TYPE_VIS_ONLY raw_invocation_type; - -template -class _LIBCPP_TYPE_VIS_ONLY raw_invocation_type<_Fn(_Args...)>; - -template -class _LIBCPP_TYPE_VIS_ONLY invokation_type; - -template -class _LIBCPP_TYPE_VIS_ONLY invokation_type<_Fn(_Args...)>; - -template -using invokation_type_t = typename invokation_type<_Tp>::type; - -template -using raw_invocation_type_t = typename raw_invocation_type<_Tp>::type; -*/ - -_LIBCPP_END_NAMESPACE_LFTS - -#endif /* _LIBCPP_STD_VER > 11 */ - -#endif /* _LIBCPP_EXPERIMENTAL_TYPE_TRAITS */ diff --git a/libcxx/include/experimental/utility b/libcxx/include/experimental/utility deleted file mode 100644 index b5fca6c77..000000000 --- a/libcxx/include/experimental/utility +++ /dev/null @@ -1,47 +0,0 @@ -// -*- C++ -*- -//===-------------------------- utility ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_EXPERIMENTAL_UTILITY -#define _LIBCPP_EXPERIMENTAL_UTILITY - -/* - experimental/utility synopsis - -// C++1y - -#include - -namespace std { -namespace experimental { -inline namespace fundamentals_v1 { - - 3.1.2, erased-type placeholder - struct erased_type { }; - -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - - */ - -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_LFTS - - struct _LIBCPP_TYPE_VIS_ONLY erased_type { }; - -_LIBCPP_END_NAMESPACE_LFTS - -#endif /* _LIBCPP_EXPERIMENTAL_UTILITY */ diff --git a/libcxx/include/ext/__hash b/libcxx/include/ext/__hash deleted file mode 100644 index 5675d5405..000000000 --- a/libcxx/include/ext/__hash +++ /dev/null @@ -1,135 +0,0 @@ -// -*- C++ -*- -//===------------------------- hash_set ------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_EXT_HASH -#define _LIBCPP_EXT_HASH - -#pragma GCC system_header - -#include -#include - -namespace __gnu_cxx { -using namespace std; - -template struct _LIBCPP_TYPE_VIS_ONLY hash { }; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(const char *__c) const _NOEXCEPT - { - return __do_string_hash(__c, __c + strlen(__c)); - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(char *__c) const _NOEXCEPT - { - return __do_string_hash(__c, __c + strlen(__c)); - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(char __c) const _NOEXCEPT - { - return __c; - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(signed char __c) const _NOEXCEPT - { - return __c; - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned char __c) const _NOEXCEPT - { - return __c; - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(short __c) const _NOEXCEPT - { - return __c; - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned short __c) const _NOEXCEPT - { - return __c; - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(int __c) const _NOEXCEPT - { - return __c; - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned int __c) const _NOEXCEPT - { - return __c; - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(long __c) const _NOEXCEPT - { - return __c; - } -}; - -template <> struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned long __c) const _NOEXCEPT - { - return __c; - } -}; -} - -#endif // _LIBCPP_EXT_HASH diff --git a/libcxx/include/ext/hash_map b/libcxx/include/ext/hash_map deleted file mode 100644 index d8fc1e6c0..000000000 --- a/libcxx/include/ext/hash_map +++ /dev/null @@ -1,995 +0,0 @@ -// -*- C++ -*- -//===-------------------------- hash_map ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_HASH_MAP -#define _LIBCPP_HASH_MAP - -/* - - hash_map synopsis - -namespace __gnu_cxx -{ - -template , class Pred = equal_to, - class Alloc = allocator>> -class hash_map -{ -public: - // types - typedef Key key_type; - typedef T mapped_type; - typedef Hash hasher; - typedef Pred key_equal; - typedef Alloc allocator_type; - typedef pair value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename allocator_traits::pointer pointer; - typedef typename allocator_traits::const_pointer const_pointer; - typedef typename allocator_traits::size_type size_type; - typedef typename allocator_traits::difference_type difference_type; - - typedef /unspecified/ iterator; - typedef /unspecified/ const_iterator; - - explicit hash_map(size_type n = 193, const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()); - template - hash_map(InputIterator f, InputIterator l, - size_type n = 193, const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()); - hash_map(const hash_map&); - ~hash_map(); - hash_map& operator=(const hash_map&); - - allocator_type get_allocator() const; - - bool empty() const; - size_type size() const; - size_type max_size() const; - - iterator begin(); - iterator end(); - const_iterator begin() const; - const_iterator end() const; - - pair insert(const value_type& obj); - template - void insert(InputIterator first, InputIterator last); - - void erase(const_iterator position); - size_type erase(const key_type& k); - void erase(const_iterator first, const_iterator last); - void clear(); - - void swap(hash_map&); - - hasher hash_funct() const; - key_equal key_eq() const; - - iterator find(const key_type& k); - const_iterator find(const key_type& k) const; - size_type count(const key_type& k) const; - pair equal_range(const key_type& k); - pair equal_range(const key_type& k) const; - - mapped_type& operator[](const key_type& k); - - size_type bucket_count() const; - size_type max_bucket_count() const; - - size_type elems_in_bucket(size_type n) const; - - void resize(size_type n); -}; - -template - void swap(hash_map& x, - hash_map& y); - -template - bool - operator==(const hash_map& x, - const hash_map& y); - -template - bool - operator!=(const hash_map& x, - const hash_map& y); - -template , class Pred = equal_to, - class Alloc = allocator>> -class hash_multimap -{ -public: - // types - typedef Key key_type; - typedef T mapped_type; - typedef Hash hasher; - typedef Pred key_equal; - typedef Alloc allocator_type; - typedef pair value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename allocator_traits::pointer pointer; - typedef typename allocator_traits::const_pointer const_pointer; - typedef typename allocator_traits::size_type size_type; - typedef typename allocator_traits::difference_type difference_type; - - typedef /unspecified/ iterator; - typedef /unspecified/ const_iterator; - - explicit hash_multimap(size_type n = 193, const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()); - template - hash_multimap(InputIterator f, InputIterator l, - size_type n = 193, const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()); - explicit hash_multimap(const allocator_type&); - hash_multimap(const hash_multimap&); - ~hash_multimap(); - hash_multimap& operator=(const hash_multimap&); - - allocator_type get_allocator() const; - - bool empty() const; - size_type size() const; - size_type max_size() const; - - iterator begin(); - iterator end(); - const_iterator begin() const; - const_iterator end() const; - - iterator insert(const value_type& obj); - template - void insert(InputIterator first, InputIterator last); - - void erase(const_iterator position); - size_type erase(const key_type& k); - void erase(const_iterator first, const_iterator last); - void clear(); - - void swap(hash_multimap&); - - hasher hash_funct() const; - key_equal key_eq() const; - - iterator find(const key_type& k); - const_iterator find(const key_type& k) const; - size_type count(const key_type& k) const; - pair equal_range(const key_type& k); - pair equal_range(const key_type& k) const; - - size_type bucket_count() const; - size_type max_bucket_count() const; - - size_type elems_in_bucket(size_type n) const; - - void resize(size_type n); -}; - -template - void swap(hash_multimap& x, - hash_multimap& y); - -template - bool - operator==(const hash_multimap& x, - const hash_multimap& y); - -template - bool - operator!=(const hash_multimap& x, - const hash_multimap& y); - -} // __gnu_cxx - -*/ - -#include <__config> -#include <__hash_table> -#include -#include -#include - -#if __DEPRECATED -#if defined(_MSC_VER) && ! defined(__clang__) - _LIBCPP_WARNING("Use of the header is deprecated. Migrate to ") -#else -# warning Use of the header is deprecated. Migrate to -#endif -#endif - -#pragma GCC system_header - -namespace __gnu_cxx { - -using namespace std; - -template ::value -#if __has_feature(is_final) - && !__is_final(_Hash) -#endif - > -class __hash_map_hasher - : private _Hash -{ -public: - _LIBCPP_INLINE_VISIBILITY __hash_map_hasher() : _Hash() {} - _LIBCPP_INLINE_VISIBILITY __hash_map_hasher(const _Hash& __h) : _Hash(__h) {} - _LIBCPP_INLINE_VISIBILITY const _Hash& hash_function() const {return *this;} - _LIBCPP_INLINE_VISIBILITY - size_t operator()(const _Tp& __x) const - {return static_cast(*this)(__x.first);} - _LIBCPP_INLINE_VISIBILITY - size_t operator()(const typename _Tp::first_type& __x) const - {return static_cast(*this)(__x);} -}; - -template -class __hash_map_hasher<_Tp, _Hash, false> -{ - _Hash __hash_; -public: - _LIBCPP_INLINE_VISIBILITY __hash_map_hasher() : __hash_() {} - _LIBCPP_INLINE_VISIBILITY __hash_map_hasher(const _Hash& __h) : __hash_(__h) {} - _LIBCPP_INLINE_VISIBILITY const _Hash& hash_function() const {return __hash_;} - _LIBCPP_INLINE_VISIBILITY - size_t operator()(const _Tp& __x) const - {return __hash_(__x.first);} - _LIBCPP_INLINE_VISIBILITY - size_t operator()(const typename _Tp::first_type& __x) const - {return __hash_(__x);} -}; - -template ::value -#if __has_feature(is_final) - && !__is_final(_Pred) -#endif - > -class __hash_map_equal - : private _Pred -{ -public: - _LIBCPP_INLINE_VISIBILITY __hash_map_equal() : _Pred() {} - _LIBCPP_INLINE_VISIBILITY __hash_map_equal(const _Pred& __p) : _Pred(__p) {} - _LIBCPP_INLINE_VISIBILITY const _Pred& key_eq() const {return *this;} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return static_cast(*this)(__x.first, __y.first);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const typename _Tp::first_type& __x, const _Tp& __y) const - {return static_cast(*this)(__x, __y.first);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const typename _Tp::first_type& __y) const - {return static_cast(*this)(__x.first, __y);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const typename _Tp::first_type& __x, - const typename _Tp::first_type& __y) const - {return static_cast(*this)(__x, __y);} -}; - -template -class __hash_map_equal<_Tp, _Pred, false> -{ - _Pred __pred_; -public: - _LIBCPP_INLINE_VISIBILITY __hash_map_equal() : __pred_() {} - _LIBCPP_INLINE_VISIBILITY __hash_map_equal(const _Pred& __p) : __pred_(__p) {} - _LIBCPP_INLINE_VISIBILITY const _Pred& key_eq() const {return __pred_;} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __pred_(__x.first, __y.first);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const typename _Tp::first_type& __x, const _Tp& __y) const - {return __pred_(__x, __y.first);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const typename _Tp::first_type& __y) const - {return __pred_(__x.first, __y);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const typename _Tp::first_type& __x, - const typename _Tp::first_type& __y) const - {return __pred_(__x, __y);} -}; - -template -class __hash_map_node_destructor -{ - typedef _Alloc allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename __alloc_traits::value_type::value_type value_type; -public: - typedef typename __alloc_traits::pointer pointer; -private: - typedef typename value_type::first_type first_type; - typedef typename value_type::second_type second_type; - - allocator_type& __na_; - - __hash_map_node_destructor& operator=(const __hash_map_node_destructor&); - -public: - bool __first_constructed; - bool __second_constructed; - - _LIBCPP_INLINE_VISIBILITY - explicit __hash_map_node_destructor(allocator_type& __na) - : __na_(__na), - __first_constructed(false), - __second_constructed(false) - {} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - __hash_map_node_destructor(__hash_node_destructor&& __x) - : __na_(__x.__na_), - __first_constructed(__x.__value_constructed), - __second_constructed(__x.__value_constructed) - { - __x.__value_constructed = false; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - __hash_map_node_destructor(const __hash_node_destructor& __x) - : __na_(__x.__na_), - __first_constructed(__x.__value_constructed), - __second_constructed(__x.__value_constructed) - { - const_cast(__x.__value_constructed) = false; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - _LIBCPP_INLINE_VISIBILITY - void operator()(pointer __p) - { - if (__second_constructed) - __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_.second)); - if (__first_constructed) - __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_.first)); - if (__p) - __alloc_traits::deallocate(__na_, __p, 1); - } -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator -{ - _HashIterator __i_; - - typedef pointer_traits __pointer_traits; - typedef const typename _HashIterator::value_type::first_type key_type; - typedef typename _HashIterator::value_type::second_type mapped_type; -public: - typedef forward_iterator_tag iterator_category; - typedef pair value_type; - typedef typename _HashIterator::difference_type difference_type; - typedef value_type& reference; - typedef typename __pointer_traits::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY __hash_map_iterator() {} - - _LIBCPP_INLINE_VISIBILITY __hash_map_iterator(_HashIterator __i) : __i_(__i) {} - - _LIBCPP_INLINE_VISIBILITY reference operator*() const {return *operator->();} - _LIBCPP_INLINE_VISIBILITY pointer operator->() const {return (pointer)__i_.operator->();} - - _LIBCPP_INLINE_VISIBILITY __hash_map_iterator& operator++() {++__i_; return *this;} - _LIBCPP_INLINE_VISIBILITY - __hash_map_iterator operator++(int) - { - __hash_map_iterator __t(*this); - ++(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_map_iterator& __x, const __hash_map_iterator& __y) - {return __x.__i_ == __y.__i_;} - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_map_iterator& __x, const __hash_map_iterator& __y) - {return __x.__i_ != __y.__i_;} - - template friend class _LIBCPP_TYPE_VIS_ONLY hash_map; - template friend class _LIBCPP_TYPE_VIS_ONLY hash_multimap; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator -{ - _HashIterator __i_; - - typedef pointer_traits __pointer_traits; - typedef const typename _HashIterator::value_type::first_type key_type; - typedef typename _HashIterator::value_type::second_type mapped_type; -public: - typedef forward_iterator_tag iterator_category; - typedef pair value_type; - typedef typename _HashIterator::difference_type difference_type; - typedef const value_type& reference; - typedef typename __pointer_traits::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY __hash_map_const_iterator() {} - - _LIBCPP_INLINE_VISIBILITY - __hash_map_const_iterator(_HashIterator __i) : __i_(__i) {} - _LIBCPP_INLINE_VISIBILITY - __hash_map_const_iterator( - __hash_map_iterator __i) - : __i_(__i.__i_) {} - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const {return *operator->();} - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const {return (pointer)__i_.operator->();} - - _LIBCPP_INLINE_VISIBILITY - __hash_map_const_iterator& operator++() {++__i_; return *this;} - _LIBCPP_INLINE_VISIBILITY - __hash_map_const_iterator operator++(int) - { - __hash_map_const_iterator __t(*this); - ++(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __hash_map_const_iterator& __x, const __hash_map_const_iterator& __y) - {return __x.__i_ == __y.__i_;} - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __hash_map_const_iterator& __x, const __hash_map_const_iterator& __y) - {return __x.__i_ != __y.__i_;} - - template friend class _LIBCPP_TYPE_VIS_ONLY hash_map; - template friend class _LIBCPP_TYPE_VIS_ONLY hash_multimap; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator; - template friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator; -}; - -template , class _Pred = equal_to<_Key>, - class _Alloc = allocator > > -class _LIBCPP_TYPE_VIS_ONLY hash_map -{ -public: - // types - typedef _Key key_type; - typedef _Tp mapped_type; - typedef _Tp data_type; - typedef _Hash hasher; - typedef _Pred key_equal; - typedef _Alloc allocator_type; - typedef pair value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - -private: - typedef pair __value_type; - typedef __hash_map_hasher<__value_type, hasher> __hasher; - typedef __hash_map_equal<__value_type, key_equal> __key_equal; - typedef typename __rebind_alloc_helper, __value_type>::type __allocator_type; - - typedef __hash_table<__value_type, __hasher, - __key_equal, __allocator_type> __table; - - __table __table_; - - typedef typename __table::__node_pointer __node_pointer; - typedef typename __table::__node_const_pointer __node_const_pointer; - typedef typename __table::__node_traits __node_traits; - typedef typename __table::__node_allocator __node_allocator; - typedef typename __table::__node __node; - typedef __hash_map_node_destructor<__node_allocator> _Dp; - typedef unique_ptr<__node, _Dp> __node_holder; - typedef allocator_traits __alloc_traits; -public: - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; - typedef typename __alloc_traits::size_type size_type; - typedef typename __alloc_traits::difference_type difference_type; - - typedef __hash_map_iterator iterator; - typedef __hash_map_const_iterator const_iterator; - - _LIBCPP_INLINE_VISIBILITY hash_map() {__table_.rehash(193);} - explicit hash_map(size_type __n, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal()); - hash_map(size_type __n, const hasher& __hf, - const key_equal& __eql, - const allocator_type& __a); - template - hash_map(_InputIterator __first, _InputIterator __last); - template - hash_map(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal()); - template - hash_map(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const key_equal& __eql, - const allocator_type& __a); - hash_map(const hash_map& __u); - - _LIBCPP_INLINE_VISIBILITY - allocator_type get_allocator() const - {return allocator_type(__table_.__node_alloc());} - - _LIBCPP_INLINE_VISIBILITY - bool empty() const {return __table_.size() == 0;} - _LIBCPP_INLINE_VISIBILITY - size_type size() const {return __table_.size();} - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const {return __table_.max_size();} - - _LIBCPP_INLINE_VISIBILITY - iterator begin() {return __table_.begin();} - _LIBCPP_INLINE_VISIBILITY - iterator end() {return __table_.end();} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const {return __table_.begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const {return __table_.end();} - - _LIBCPP_INLINE_VISIBILITY - pair insert(const value_type& __x) - {return __table_.__insert_unique(__x);} - _LIBCPP_INLINE_VISIBILITY - iterator insert(const_iterator, const value_type& __x) {return insert(__x).first;} - template - void insert(_InputIterator __first, _InputIterator __last); - - _LIBCPP_INLINE_VISIBILITY - void erase(const_iterator __p) {__table_.erase(__p.__i_);} - _LIBCPP_INLINE_VISIBILITY - size_type erase(const key_type& __k) {return __table_.__erase_unique(__k);} - _LIBCPP_INLINE_VISIBILITY - void erase(const_iterator __first, const_iterator __last) - {__table_.erase(__first.__i_, __last.__i_);} - _LIBCPP_INLINE_VISIBILITY - void clear() {__table_.clear();} - - _LIBCPP_INLINE_VISIBILITY - void swap(hash_map& __u) {__table_.swap(__u.__table_);} - - _LIBCPP_INLINE_VISIBILITY - hasher hash_funct() const - {return __table_.hash_function().hash_function();} - _LIBCPP_INLINE_VISIBILITY - key_equal key_eq() const - {return __table_.key_eq().key_eq();} - - _LIBCPP_INLINE_VISIBILITY - iterator find(const key_type& __k) {return __table_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator find(const key_type& __k) const {return __table_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - size_type count(const key_type& __k) const {return __table_.__count_unique(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) - {return __table_.__equal_range_unique(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) const - {return __table_.__equal_range_unique(__k);} - - mapped_type& operator[](const key_type& __k); - - _LIBCPP_INLINE_VISIBILITY - size_type bucket_count() const {return __table_.bucket_count();} - _LIBCPP_INLINE_VISIBILITY - size_type max_bucket_count() const {return __table_.max_bucket_count();} - - _LIBCPP_INLINE_VISIBILITY - size_type elems_in_bucket(size_type __n) const - {return __table_.bucket_size(__n);} - - _LIBCPP_INLINE_VISIBILITY - void resize(size_type __n) {__table_.rehash(__n);} - -private: - __node_holder __construct_node(const key_type& __k); -}; - -template -hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_map( - size_type __n, const hasher& __hf, const key_equal& __eql) - : __table_(__hf, __eql) -{ - __table_.rehash(__n); -} - -template -hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_map( - size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a) - : __table_(__hf, __eql, __a) -{ - __table_.rehash(__n); -} - -template -template -hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_map( - _InputIterator __first, _InputIterator __last) -{ - __table_.rehash(193); - insert(__first, __last); -} - -template -template -hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_map( - _InputIterator __first, _InputIterator __last, size_type __n, - const hasher& __hf, const key_equal& __eql) - : __table_(__hf, __eql) -{ - __table_.rehash(__n); - insert(__first, __last); -} - -template -template -hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_map( - _InputIterator __first, _InputIterator __last, size_type __n, - const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) -{ - __table_.rehash(__n); - insert(__first, __last); -} - -template -hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_map( - const hash_map& __u) - : __table_(__u.__table_) -{ - __table_.rehash(__u.bucket_count()); - insert(__u.begin(), __u.end()); -} - -template -typename hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder -hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node(const key_type& __k) -{ - __node_allocator& __na = __table_.__node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.first), __k); - __h.get_deleter().__first_constructed = true; - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.second)); - __h.get_deleter().__second_constructed = true; - return _VSTD::move(__h); // explicitly moved for C++03 -} - -template -template -inline _LIBCPP_INLINE_VISIBILITY -void -hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterator __first, - _InputIterator __last) -{ - for (; __first != __last; ++__first) - __table_.__insert_unique(*__first); -} - -template -_Tp& -hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator[](const key_type& __k) -{ - iterator __i = find(__k); - if (__i != end()) - return __i->second; - __node_holder __h = __construct_node(__k); - pair __r = __table_.__node_insert_unique(__h.get()); - __h.release(); - return __r.first->second; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) -{ - __x.swap(__y); -} - -template -bool -operator==(const hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) -{ - if (__x.size() != __y.size()) - return false; - typedef typename hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator - const_iterator; - for (const_iterator __i = __x.begin(), __ex = __x.end(), __ey = __y.end(); - __i != __ex; ++__i) - { - const_iterator __j = __y.find(__i->first); - if (__j == __ey || !(*__i == *__j)) - return false; - } - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) -{ - return !(__x == __y); -} - -template , class _Pred = equal_to<_Key>, - class _Alloc = allocator > > -class _LIBCPP_TYPE_VIS_ONLY hash_multimap -{ -public: - // types - typedef _Key key_type; - typedef _Tp mapped_type; - typedef _Tp data_type; - typedef _Hash hasher; - typedef _Pred key_equal; - typedef _Alloc allocator_type; - typedef pair value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - -private: - typedef pair __value_type; - typedef __hash_map_hasher<__value_type, hasher> __hasher; - typedef __hash_map_equal<__value_type, key_equal> __key_equal; - typedef typename __rebind_alloc_helper, __value_type>::type __allocator_type; - - typedef __hash_table<__value_type, __hasher, - __key_equal, __allocator_type> __table; - - __table __table_; - - typedef typename __table::__node_traits __node_traits; - typedef typename __table::__node_allocator __node_allocator; - typedef typename __table::__node __node; - typedef __hash_map_node_destructor<__node_allocator> _Dp; - typedef unique_ptr<__node, _Dp> __node_holder; - typedef allocator_traits __alloc_traits; -public: - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; - typedef typename __alloc_traits::size_type size_type; - typedef typename __alloc_traits::difference_type difference_type; - - typedef __hash_map_iterator iterator; - typedef __hash_map_const_iterator const_iterator; - - _LIBCPP_INLINE_VISIBILITY - hash_multimap() {__table_.rehash(193);} - explicit hash_multimap(size_type __n, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal()); - hash_multimap(size_type __n, const hasher& __hf, - const key_equal& __eql, - const allocator_type& __a); - template - hash_multimap(_InputIterator __first, _InputIterator __last); - template - hash_multimap(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal()); - template - hash_multimap(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const key_equal& __eql, - const allocator_type& __a); - hash_multimap(const hash_multimap& __u); - - _LIBCPP_INLINE_VISIBILITY - allocator_type get_allocator() const - {return allocator_type(__table_.__node_alloc());} - - _LIBCPP_INLINE_VISIBILITY - bool empty() const {return __table_.size() == 0;} - _LIBCPP_INLINE_VISIBILITY - size_type size() const {return __table_.size();} - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const {return __table_.max_size();} - - _LIBCPP_INLINE_VISIBILITY - iterator begin() {return __table_.begin();} - _LIBCPP_INLINE_VISIBILITY - iterator end() {return __table_.end();} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const {return __table_.begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const {return __table_.end();} - - _LIBCPP_INLINE_VISIBILITY - iterator insert(const value_type& __x) {return __table_.__insert_multi(__x);} - _LIBCPP_INLINE_VISIBILITY - iterator insert(const_iterator, const value_type& __x) {return insert(__x);} - template - void insert(_InputIterator __first, _InputIterator __last); - - _LIBCPP_INLINE_VISIBILITY - void erase(const_iterator __p) {__table_.erase(__p.__i_);} - _LIBCPP_INLINE_VISIBILITY - size_type erase(const key_type& __k) {return __table_.__erase_multi(__k);} - _LIBCPP_INLINE_VISIBILITY - void erase(const_iterator __first, const_iterator __last) - {__table_.erase(__first.__i_, __last.__i_);} - _LIBCPP_INLINE_VISIBILITY - void clear() {__table_.clear();} - - _LIBCPP_INLINE_VISIBILITY - void swap(hash_multimap& __u) {__table_.swap(__u.__table_);} - - _LIBCPP_INLINE_VISIBILITY - hasher hash_funct() const - {return __table_.hash_function().hash_function();} - _LIBCPP_INLINE_VISIBILITY - key_equal key_eq() const - {return __table_.key_eq().key_eq();} - - _LIBCPP_INLINE_VISIBILITY - iterator find(const key_type& __k) {return __table_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator find(const key_type& __k) const {return __table_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - size_type count(const key_type& __k) const {return __table_.__count_multi(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) - {return __table_.__equal_range_multi(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) const - {return __table_.__equal_range_multi(__k);} - - _LIBCPP_INLINE_VISIBILITY - size_type bucket_count() const {return __table_.bucket_count();} - _LIBCPP_INLINE_VISIBILITY - size_type max_bucket_count() const {return __table_.max_bucket_count();} - - _LIBCPP_INLINE_VISIBILITY - size_type elems_in_bucket(size_type __n) const - {return __table_.bucket_size(__n);} - - _LIBCPP_INLINE_VISIBILITY - void resize(size_type __n) {__table_.rehash(__n);} -}; - -template -hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_multimap( - size_type __n, const hasher& __hf, const key_equal& __eql) - : __table_(__hf, __eql) -{ - __table_.rehash(__n); -} - -template -hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_multimap( - size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a) - : __table_(__hf, __eql, __a) -{ - __table_.rehash(__n); -} - -template -template -hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_multimap( - _InputIterator __first, _InputIterator __last) -{ - __table_.rehash(193); - insert(__first, __last); -} - -template -template -hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_multimap( - _InputIterator __first, _InputIterator __last, size_type __n, - const hasher& __hf, const key_equal& __eql) - : __table_(__hf, __eql) -{ - __table_.rehash(__n); - insert(__first, __last); -} - -template -template -hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_multimap( - _InputIterator __first, _InputIterator __last, size_type __n, - const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) -{ - __table_.rehash(__n); - insert(__first, __last); -} - -template -hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::hash_multimap( - const hash_multimap& __u) - : __table_(__u.__table_) -{ - __table_.rehash(__u.bucket_count()); - insert(__u.begin(), __u.end()); -} - -template -template -inline _LIBCPP_INLINE_VISIBILITY -void -hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterator __first, - _InputIterator __last) -{ - for (; __first != __last; ++__first) - __table_.__insert_multi(*__first); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) -{ - __x.swap(__y); -} - -template -bool -operator==(const hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) -{ - if (__x.size() != __y.size()) - return false; - typedef typename hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator - const_iterator; - typedef pair _EqRng; - for (const_iterator __i = __x.begin(), __ex = __x.end(); __i != __ex;) - { - _EqRng __xeq = __x.equal_range(__i->first); - _EqRng __yeq = __y.equal_range(__i->first); - if (_VSTD::distance(__xeq.first, __xeq.second) != - _VSTD::distance(__yeq.first, __yeq.second) || - !_VSTD::is_permutation(__xeq.first, __xeq.second, __yeq.first)) - return false; - __i = __xeq.second; - } - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const hash_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) -{ - return !(__x == __y); -} - -} // __gnu_cxx - -#endif // _LIBCPP_HASH_MAP diff --git a/libcxx/include/ext/hash_set b/libcxx/include/ext/hash_set deleted file mode 100644 index c4bb89843..000000000 --- a/libcxx/include/ext/hash_set +++ /dev/null @@ -1,661 +0,0 @@ -// -*- C++ -*- -//===------------------------- hash_set ------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_HASH_SET -#define _LIBCPP_HASH_SET - -/* - - hash_set synopsis - -namespace __gnu_cxx -{ - -template , class Pred = equal_to, - class Alloc = allocator> -class hash_set -{ -public: - // types - typedef Value key_type; - typedef key_type value_type; - typedef Hash hasher; - typedef Pred key_equal; - typedef Alloc allocator_type; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename allocator_traits::pointer pointer; - typedef typename allocator_traits::const_pointer const_pointer; - typedef typename allocator_traits::size_type size_type; - typedef typename allocator_traits::difference_type difference_type; - - typedef /unspecified/ iterator; - typedef /unspecified/ const_iterator; - - explicit hash_set(size_type n = 193, const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()); - template - hash_set(InputIterator f, InputIterator l, - size_type n = 193, const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()); - hash_set(const hash_set&); - ~hash_set(); - hash_set& operator=(const hash_set&); - - allocator_type get_allocator() const; - - bool empty() const; - size_type size() const; - size_type max_size() const; - - iterator begin(); - iterator end(); - const_iterator begin() const; - const_iterator end() const; - - pair insert(const value_type& obj); - template - void insert(InputIterator first, InputIterator last); - - void erase(const_iterator position); - size_type erase(const key_type& k); - void erase(const_iterator first, const_iterator last); - void clear(); - - void swap(hash_set&); - - hasher hash_funct() const; - key_equal key_eq() const; - - iterator find(const key_type& k); - const_iterator find(const key_type& k) const; - size_type count(const key_type& k) const; - pair equal_range(const key_type& k); - pair equal_range(const key_type& k) const; - - size_type bucket_count() const; - size_type max_bucket_count() const; - - size_type elems_in_bucket(size_type n) const; - - void resize(size_type n); -}; - -template - void swap(hash_set& x, - hash_set& y); - -template - bool - operator==(const hash_set& x, - const hash_set& y); - -template - bool - operator!=(const hash_set& x, - const hash_set& y); - -template , class Pred = equal_to, - class Alloc = allocator> -class hash_multiset -{ -public: - // types - typedef Value key_type; - typedef key_type value_type; - typedef Hash hasher; - typedef Pred key_equal; - typedef Alloc allocator_type; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename allocator_traits::pointer pointer; - typedef typename allocator_traits::const_pointer const_pointer; - typedef typename allocator_traits::size_type size_type; - typedef typename allocator_traits::difference_type difference_type; - - typedef /unspecified/ iterator; - typedef /unspecified/ const_iterator; - - explicit hash_multiset(size_type n = 193, const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()); - template - hash_multiset(InputIterator f, InputIterator l, - size_type n = 193, const hasher& hf = hasher(), - const key_equal& eql = key_equal(), - const allocator_type& a = allocator_type()); - hash_multiset(const hash_multiset&); - ~hash_multiset(); - hash_multiset& operator=(const hash_multiset&); - - allocator_type get_allocator() const; - - bool empty() const; - size_type size() const; - size_type max_size() const; - - iterator begin(); - iterator end(); - const_iterator begin() const; - const_iterator end() const; - - iterator insert(const value_type& obj); - template - void insert(InputIterator first, InputIterator last); - - void erase(const_iterator position); - size_type erase(const key_type& k); - void erase(const_iterator first, const_iterator last); - void clear(); - - void swap(hash_multiset&); - - hasher hash_funct() const; - key_equal key_eq() const; - - iterator find(const key_type& k); - const_iterator find(const key_type& k) const; - size_type count(const key_type& k) const; - pair equal_range(const key_type& k); - pair equal_range(const key_type& k) const; - - size_type bucket_count() const; - size_type max_bucket_count() const; - - size_type elems_in_bucket(size_type n) const; - - void resize(size_type n); -}; - -template - void swap(hash_multiset& x, - hash_multiset& y); - -template - bool - operator==(const hash_multiset& x, - const hash_multiset& y); - -template - bool - operator!=(const hash_multiset& x, - const hash_multiset& y); -} // __gnu_cxx - -*/ - -#include <__config> -#include <__hash_table> -#include -#include - -#if __DEPRECATED -#if defined(_MSC_VER) && ! defined(__clang__) - _LIBCPP_WARNING("Use of the header is deprecated. Migrate to ") -#else -# warning Use of the header is deprecated. Migrate to -#endif -#endif - -namespace __gnu_cxx { - -using namespace std; - -template , class _Pred = equal_to<_Value>, - class _Alloc = allocator<_Value> > -class _LIBCPP_TYPE_VIS_ONLY hash_set -{ -public: - // types - typedef _Value key_type; - typedef key_type value_type; - typedef _Hash hasher; - typedef _Pred key_equal; - typedef _Alloc allocator_type; - typedef value_type& reference; - typedef const value_type& const_reference; - -private: - typedef __hash_table __table; - - __table __table_; - -public: - typedef typename __table::pointer pointer; - typedef typename __table::const_pointer const_pointer; - typedef typename __table::size_type size_type; - typedef typename __table::difference_type difference_type; - - typedef typename __table::const_iterator iterator; - typedef typename __table::const_iterator const_iterator; - - _LIBCPP_INLINE_VISIBILITY - hash_set() {__table_.rehash(193);} - explicit hash_set(size_type __n, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal()); - hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a); - template - hash_set(_InputIterator __first, _InputIterator __last); - template - hash_set(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal()); - template - hash_set(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a); - hash_set(const hash_set& __u); - - _LIBCPP_INLINE_VISIBILITY - allocator_type get_allocator() const - {return allocator_type(__table_.__node_alloc());} - - _LIBCPP_INLINE_VISIBILITY - bool empty() const {return __table_.size() == 0;} - _LIBCPP_INLINE_VISIBILITY - size_type size() const {return __table_.size();} - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const {return __table_.max_size();} - - _LIBCPP_INLINE_VISIBILITY - iterator begin() {return __table_.begin();} - _LIBCPP_INLINE_VISIBILITY - iterator end() {return __table_.end();} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const {return __table_.begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const {return __table_.end();} - - _LIBCPP_INLINE_VISIBILITY - pair insert(const value_type& __x) - {return __table_.__insert_unique(__x);} - _LIBCPP_INLINE_VISIBILITY - iterator insert(const_iterator, const value_type& __x) {return insert(__x).first;} - template - void insert(_InputIterator __first, _InputIterator __last); - - _LIBCPP_INLINE_VISIBILITY - void erase(const_iterator __p) {__table_.erase(__p);} - _LIBCPP_INLINE_VISIBILITY - size_type erase(const key_type& __k) {return __table_.__erase_unique(__k);} - _LIBCPP_INLINE_VISIBILITY - void erase(const_iterator __first, const_iterator __last) - {__table_.erase(__first, __last);} - _LIBCPP_INLINE_VISIBILITY - void clear() {__table_.clear();} - - _LIBCPP_INLINE_VISIBILITY - void swap(hash_set& __u) {__table_.swap(__u.__table_);} - - _LIBCPP_INLINE_VISIBILITY - hasher hash_funct() const {return __table_.hash_function();} - _LIBCPP_INLINE_VISIBILITY - key_equal key_eq() const {return __table_.key_eq();} - - _LIBCPP_INLINE_VISIBILITY - iterator find(const key_type& __k) {return __table_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator find(const key_type& __k) const {return __table_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - size_type count(const key_type& __k) const {return __table_.__count_unique(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) - {return __table_.__equal_range_unique(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) const - {return __table_.__equal_range_unique(__k);} - - _LIBCPP_INLINE_VISIBILITY - size_type bucket_count() const {return __table_.bucket_count();} - _LIBCPP_INLINE_VISIBILITY - size_type max_bucket_count() const {return __table_.max_bucket_count();} - - _LIBCPP_INLINE_VISIBILITY - size_type elems_in_bucket(size_type __n) const {return __table_.bucket_size(__n);} - - _LIBCPP_INLINE_VISIBILITY - void resize(size_type __n) {__table_.rehash(__n);} -}; - -template -hash_set<_Value, _Hash, _Pred, _Alloc>::hash_set(size_type __n, - const hasher& __hf, const key_equal& __eql) - : __table_(__hf, __eql) -{ - __table_.rehash(__n); -} - -template -hash_set<_Value, _Hash, _Pred, _Alloc>::hash_set(size_type __n, - const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) -{ - __table_.rehash(__n); -} - -template -template -hash_set<_Value, _Hash, _Pred, _Alloc>::hash_set( - _InputIterator __first, _InputIterator __last) -{ - __table_.rehash(193); - insert(__first, __last); -} - -template -template -hash_set<_Value, _Hash, _Pred, _Alloc>::hash_set( - _InputIterator __first, _InputIterator __last, size_type __n, - const hasher& __hf, const key_equal& __eql) - : __table_(__hf, __eql) -{ - __table_.rehash(__n); - insert(__first, __last); -} - -template -template -hash_set<_Value, _Hash, _Pred, _Alloc>::hash_set( - _InputIterator __first, _InputIterator __last, size_type __n, - const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) -{ - __table_.rehash(__n); - insert(__first, __last); -} - -template -hash_set<_Value, _Hash, _Pred, _Alloc>::hash_set( - const hash_set& __u) - : __table_(__u.__table_) -{ - __table_.rehash(__u.bucket_count()); - insert(__u.begin(), __u.end()); -} - -template -template -inline _LIBCPP_INLINE_VISIBILITY -void -hash_set<_Value, _Hash, _Pred, _Alloc>::insert(_InputIterator __first, - _InputIterator __last) -{ - for (; __first != __last; ++__first) - __table_.__insert_unique(*__first); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(hash_set<_Value, _Hash, _Pred, _Alloc>& __x, - hash_set<_Value, _Hash, _Pred, _Alloc>& __y) -{ - __x.swap(__y); -} - -template -bool -operator==(const hash_set<_Value, _Hash, _Pred, _Alloc>& __x, - const hash_set<_Value, _Hash, _Pred, _Alloc>& __y) -{ - if (__x.size() != __y.size()) - return false; - typedef typename hash_set<_Value, _Hash, _Pred, _Alloc>::const_iterator - const_iterator; - for (const_iterator __i = __x.begin(), __ex = __x.end(), __ey = __y.end(); - __i != __ex; ++__i) - { - const_iterator __j = __y.find(*__i); - if (__j == __ey || !(*__i == *__j)) - return false; - } - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const hash_set<_Value, _Hash, _Pred, _Alloc>& __x, - const hash_set<_Value, _Hash, _Pred, _Alloc>& __y) -{ - return !(__x == __y); -} - -template , class _Pred = equal_to<_Value>, - class _Alloc = allocator<_Value> > -class _LIBCPP_TYPE_VIS_ONLY hash_multiset -{ -public: - // types - typedef _Value key_type; - typedef key_type value_type; - typedef _Hash hasher; - typedef _Pred key_equal; - typedef _Alloc allocator_type; - typedef value_type& reference; - typedef const value_type& const_reference; - -private: - typedef __hash_table __table; - - __table __table_; - -public: - typedef typename __table::pointer pointer; - typedef typename __table::const_pointer const_pointer; - typedef typename __table::size_type size_type; - typedef typename __table::difference_type difference_type; - - typedef typename __table::const_iterator iterator; - typedef typename __table::const_iterator const_iterator; - - _LIBCPP_INLINE_VISIBILITY - hash_multiset() {__table_.rehash(193);} - explicit hash_multiset(size_type __n, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal()); - hash_multiset(size_type __n, const hasher& __hf, - const key_equal& __eql, const allocator_type& __a); - template - hash_multiset(_InputIterator __first, _InputIterator __last); - template - hash_multiset(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal()); - template - hash_multiset(_InputIterator __first, _InputIterator __last, - size_type __n , const hasher& __hf, - const key_equal& __eql, const allocator_type& __a); - hash_multiset(const hash_multiset& __u); - - _LIBCPP_INLINE_VISIBILITY - allocator_type get_allocator() const - {return allocator_type(__table_.__node_alloc());} - - _LIBCPP_INLINE_VISIBILITY - bool empty() const {return __table_.size() == 0;} - _LIBCPP_INLINE_VISIBILITY - size_type size() const {return __table_.size();} - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const {return __table_.max_size();} - - _LIBCPP_INLINE_VISIBILITY - iterator begin() {return __table_.begin();} - _LIBCPP_INLINE_VISIBILITY - iterator end() {return __table_.end();} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const {return __table_.begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const {return __table_.end();} - - _LIBCPP_INLINE_VISIBILITY - iterator insert(const value_type& __x) {return __table_.__insert_multi(__x);} - _LIBCPP_INLINE_VISIBILITY - iterator insert(const_iterator, const value_type& __x) {return insert(__x);} - template - void insert(_InputIterator __first, _InputIterator __last); - - _LIBCPP_INLINE_VISIBILITY - void erase(const_iterator __p) {__table_.erase(__p);} - _LIBCPP_INLINE_VISIBILITY - size_type erase(const key_type& __k) {return __table_.__erase_multi(__k);} - _LIBCPP_INLINE_VISIBILITY - void erase(const_iterator __first, const_iterator __last) - {__table_.erase(__first, __last);} - _LIBCPP_INLINE_VISIBILITY - void clear() {__table_.clear();} - - _LIBCPP_INLINE_VISIBILITY - void swap(hash_multiset& __u) {__table_.swap(__u.__table_);} - - _LIBCPP_INLINE_VISIBILITY - hasher hash_funct() const {return __table_.hash_function();} - _LIBCPP_INLINE_VISIBILITY - key_equal key_eq() const {return __table_.key_eq();} - - _LIBCPP_INLINE_VISIBILITY - iterator find(const key_type& __k) {return __table_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator find(const key_type& __k) const {return __table_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - size_type count(const key_type& __k) const {return __table_.__count_multi(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) - {return __table_.__equal_range_multi(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) const - {return __table_.__equal_range_multi(__k);} - - _LIBCPP_INLINE_VISIBILITY - size_type bucket_count() const {return __table_.bucket_count();} - _LIBCPP_INLINE_VISIBILITY - size_type max_bucket_count() const {return __table_.max_bucket_count();} - - _LIBCPP_INLINE_VISIBILITY - size_type elems_in_bucket(size_type __n) const {return __table_.bucket_size(__n);} - - _LIBCPP_INLINE_VISIBILITY - void resize(size_type __n) {__table_.rehash(__n);} -}; - -template -hash_multiset<_Value, _Hash, _Pred, _Alloc>::hash_multiset( - size_type __n, const hasher& __hf, const key_equal& __eql) - : __table_(__hf, __eql) -{ - __table_.rehash(__n); -} - -template -hash_multiset<_Value, _Hash, _Pred, _Alloc>::hash_multiset( - size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a) - : __table_(__hf, __eql, __a) -{ - __table_.rehash(__n); -} - -template -template -hash_multiset<_Value, _Hash, _Pred, _Alloc>::hash_multiset( - _InputIterator __first, _InputIterator __last) -{ - __table_.rehash(193); - insert(__first, __last); -} - -template -template -hash_multiset<_Value, _Hash, _Pred, _Alloc>::hash_multiset( - _InputIterator __first, _InputIterator __last, size_type __n, - const hasher& __hf, const key_equal& __eql) - : __table_(__hf, __eql) -{ - __table_.rehash(__n); - insert(__first, __last); -} - -template -template -hash_multiset<_Value, _Hash, _Pred, _Alloc>::hash_multiset( - _InputIterator __first, _InputIterator __last, size_type __n, - const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) -{ - __table_.rehash(__n); - insert(__first, __last); -} - -template -hash_multiset<_Value, _Hash, _Pred, _Alloc>::hash_multiset( - const hash_multiset& __u) - : __table_(__u.__table_) -{ - __table_.rehash(__u.bucket_count()); - insert(__u.begin(), __u.end()); -} - -template -template -inline _LIBCPP_INLINE_VISIBILITY -void -hash_multiset<_Value, _Hash, _Pred, _Alloc>::insert(_InputIterator __first, - _InputIterator __last) -{ - for (; __first != __last; ++__first) - __table_.__insert_multi(*__first); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(hash_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - hash_multiset<_Value, _Hash, _Pred, _Alloc>& __y) -{ - __x.swap(__y); -} - -template -bool -operator==(const hash_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - const hash_multiset<_Value, _Hash, _Pred, _Alloc>& __y) -{ - if (__x.size() != __y.size()) - return false; - typedef typename hash_multiset<_Value, _Hash, _Pred, _Alloc>::const_iterator - const_iterator; - typedef pair _EqRng; - for (const_iterator __i = __x.begin(), __ex = __x.end(); __i != __ex;) - { - _EqRng __xeq = __x.equal_range(*__i); - _EqRng __yeq = __y.equal_range(*__i); - if (_VSTD::distance(__xeq.first, __xeq.second) != - _VSTD::distance(__yeq.first, __yeq.second) || - !_VSTD::is_permutation(__xeq.first, __xeq.second, __yeq.first)) - return false; - __i = __xeq.second; - } - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const hash_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - const hash_multiset<_Value, _Hash, _Pred, _Alloc>& __y) -{ - return !(__x == __y); -} - -} // __gnu_cxx - -#endif // _LIBCPP_HASH_SET diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list deleted file mode 100644 index fbb850c3b..000000000 --- a/libcxx/include/forward_list +++ /dev/null @@ -1,1657 +0,0 @@ -// -*- C++ -*- -//===----------------------- forward_list ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_FORWARD_LIST -#define _LIBCPP_FORWARD_LIST - -/* - forward_list synopsis - -namespace std -{ - -template > -class forward_list -{ -public: - typedef T value_type; - typedef Allocator allocator_type; - - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename allocator_traits::pointer pointer; - typedef typename allocator_traits::const_pointer const_pointer; - typedef typename allocator_traits::size_type size_type; - typedef typename allocator_traits::difference_type difference_type; - - typedef
iterator; - typedef
const_iterator; - - forward_list() - noexcept(is_nothrow_default_constructible::value); - explicit forward_list(const allocator_type& a); - explicit forward_list(size_type n); - explicit forward_list(size_type n, const allocator_type& a); // C++14 - forward_list(size_type n, const value_type& v); - forward_list(size_type n, const value_type& v, const allocator_type& a); - template - forward_list(InputIterator first, InputIterator last); - template - forward_list(InputIterator first, InputIterator last, const allocator_type& a); - forward_list(const forward_list& x); - forward_list(const forward_list& x, const allocator_type& a); - forward_list(forward_list&& x) - noexcept(is_nothrow_move_constructible::value); - forward_list(forward_list&& x, const allocator_type& a); - forward_list(initializer_list il); - forward_list(initializer_list il, const allocator_type& a); - - ~forward_list(); - - forward_list& operator=(const forward_list& x); - forward_list& operator=(forward_list&& x) - noexcept( - allocator_type::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value); - forward_list& operator=(initializer_list il); - - template - void assign(InputIterator first, InputIterator last); - void assign(size_type n, const value_type& v); - void assign(initializer_list il); - - allocator_type get_allocator() const noexcept; - - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - const_iterator cbegin() const noexcept; - const_iterator cend() const noexcept; - - iterator before_begin() noexcept; - const_iterator before_begin() const noexcept; - const_iterator cbefore_begin() const noexcept; - - bool empty() const noexcept; - size_type max_size() const noexcept; - - reference front(); - const_reference front() const; - - template void emplace_front(Args&&... args); - void push_front(const value_type& v); - void push_front(value_type&& v); - - void pop_front(); - - template - iterator emplace_after(const_iterator p, Args&&... args); - iterator insert_after(const_iterator p, const value_type& v); - iterator insert_after(const_iterator p, value_type&& v); - iterator insert_after(const_iterator p, size_type n, const value_type& v); - template - iterator insert_after(const_iterator p, - InputIterator first, InputIterator last); - iterator insert_after(const_iterator p, initializer_list il); - - iterator erase_after(const_iterator p); - iterator erase_after(const_iterator first, const_iterator last); - - void swap(forward_list& x) - noexcept(!allocator_type::propagate_on_container_swap::value || - __is_nothrow_swappable::value); - - void resize(size_type n); - void resize(size_type n, const value_type& v); - void clear() noexcept; - - void splice_after(const_iterator p, forward_list& x); - void splice_after(const_iterator p, forward_list&& x); - void splice_after(const_iterator p, forward_list& x, const_iterator i); - void splice_after(const_iterator p, forward_list&& x, const_iterator i); - void splice_after(const_iterator p, forward_list& x, - const_iterator first, const_iterator last); - void splice_after(const_iterator p, forward_list&& x, - const_iterator first, const_iterator last); - void remove(const value_type& v); - template void remove_if(Predicate pred); - void unique(); - template void unique(BinaryPredicate binary_pred); - void merge(forward_list& x); - void merge(forward_list&& x); - template void merge(forward_list& x, Compare comp); - template void merge(forward_list&& x, Compare comp); - void sort(); - template void sort(Compare comp); - void reverse() noexcept; -}; - -template - bool operator==(const forward_list& x, - const forward_list& y); - -template - bool operator< (const forward_list& x, - const forward_list& y); - -template - bool operator!=(const forward_list& x, - const forward_list& y); - -template - bool operator> (const forward_list& x, - const forward_list& y); - -template - bool operator>=(const forward_list& x, - const forward_list& y); - -template - bool operator<=(const forward_list& x, - const forward_list& y); - -template - void swap(forward_list& x, forward_list& y) - noexcept(noexcept(x.swap(y))); - -} // std - -*/ - -#include <__config> - -#include -#include -#include -#include -#include - -#include <__undef_min_max> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template struct __forward_list_node; - -template -struct __forward_begin_node -{ - typedef _NodePtr pointer; - - pointer __next_; - - _LIBCPP_INLINE_VISIBILITY __forward_begin_node() : __next_(nullptr) {} -}; - -template -struct _LIBCPP_HIDDEN __begin_node_of -{ - typedef __forward_begin_node - < - typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__forward_list_node<_Tp, _VoidPtr> > -#else - rebind<__forward_list_node<_Tp, _VoidPtr> >::other -#endif - > type; -}; - -template -struct __forward_list_node - : public __begin_node_of<_Tp, _VoidPtr>::type -{ - typedef _Tp value_type; - - value_type __value_; -}; - -template > class _LIBCPP_TYPE_VIS_ONLY forward_list; -template class _LIBCPP_TYPE_VIS_ONLY __forward_list_const_iterator; - -template -class _LIBCPP_TYPE_VIS_ONLY __forward_list_iterator -{ - typedef _NodePtr __node_pointer; - - __node_pointer __ptr_; - - _LIBCPP_INLINE_VISIBILITY - explicit __forward_list_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {} - - template friend class _LIBCPP_TYPE_VIS_ONLY forward_list; - template friend class _LIBCPP_TYPE_VIS_ONLY __forward_list_const_iterator; - -public: - typedef forward_iterator_tag iterator_category; - typedef typename pointer_traits<__node_pointer>::element_type::value_type - value_type; - typedef value_type& reference; - typedef typename pointer_traits<__node_pointer>::difference_type - difference_type; - typedef typename pointer_traits<__node_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY - __forward_list_iterator() _NOEXCEPT : __ptr_(nullptr) {} - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const {return __ptr_->__value_;} - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const {return pointer_traits::pointer_to(__ptr_->__value_);} - - _LIBCPP_INLINE_VISIBILITY - __forward_list_iterator& operator++() - { - __ptr_ = __ptr_->__next_; - return *this; - } - _LIBCPP_INLINE_VISIBILITY - __forward_list_iterator operator++(int) - { - __forward_list_iterator __t(*this); - ++(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __forward_list_iterator& __x, - const __forward_list_iterator& __y) - {return __x.__ptr_ == __y.__ptr_;} - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __forward_list_iterator& __x, - const __forward_list_iterator& __y) - {return !(__x == __y);} -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __forward_list_const_iterator -{ - typedef _NodeConstPtr __node_const_pointer; - - __node_const_pointer __ptr_; - - _LIBCPP_INLINE_VISIBILITY - explicit __forward_list_const_iterator(__node_const_pointer __p) _NOEXCEPT - : __ptr_(__p) {} - - typedef typename remove_const - < - typename pointer_traits<__node_const_pointer>::element_type - >::type __node; - typedef typename pointer_traits<__node_const_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__node> -#else - rebind<__node>::other -#endif - __node_pointer; - - template friend class forward_list; - -public: - typedef forward_iterator_tag iterator_category; - typedef typename __node::value_type value_type; - typedef const value_type& reference; - typedef typename pointer_traits<__node_const_pointer>::difference_type - difference_type; - typedef typename pointer_traits<__node_const_pointer>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY - __forward_list_const_iterator() _NOEXCEPT : __ptr_(nullptr) {} - _LIBCPP_INLINE_VISIBILITY - __forward_list_const_iterator(__forward_list_iterator<__node_pointer> __p) _NOEXCEPT - : __ptr_(__p.__ptr_) {} - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const {return __ptr_->__value_;} - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const {return pointer_traits::pointer_to(__ptr_->__value_);} - - _LIBCPP_INLINE_VISIBILITY - __forward_list_const_iterator& operator++() - { - __ptr_ = __ptr_->__next_; - return *this; - } - _LIBCPP_INLINE_VISIBILITY - __forward_list_const_iterator operator++(int) - { - __forward_list_const_iterator __t(*this); - ++(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __forward_list_const_iterator& __x, - const __forward_list_const_iterator& __y) - {return __x.__ptr_ == __y.__ptr_;} - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __forward_list_const_iterator& __x, - const __forward_list_const_iterator& __y) - {return !(__x == __y);} -}; - -template -class __forward_list_base -{ -protected: - typedef _Tp value_type; - typedef _Alloc allocator_type; - - typedef typename allocator_traits::void_pointer void_pointer; - typedef __forward_list_node __node; - typedef typename __begin_node_of::type __begin_node; - typedef typename __rebind_alloc_helper, __node>::type __node_allocator; - typedef allocator_traits<__node_allocator> __node_traits; - typedef typename __node_traits::pointer __node_pointer; - typedef typename __node_traits::pointer __node_const_pointer; - - typedef typename __rebind_alloc_helper, __begin_node>::type __begin_node_allocator; - typedef typename allocator_traits<__begin_node_allocator>::pointer __begin_node_pointer; - - __compressed_pair<__begin_node, __node_allocator> __before_begin_; - - _LIBCPP_INLINE_VISIBILITY - __node_pointer __before_begin() _NOEXCEPT - {return static_cast<__node_pointer>(pointer_traits<__begin_node_pointer>:: - pointer_to(__before_begin_.first()));} - _LIBCPP_INLINE_VISIBILITY - __node_const_pointer __before_begin() const _NOEXCEPT - {return static_cast<__node_const_pointer>(pointer_traits<__begin_node_pointer>:: - pointer_to(const_cast<__begin_node&>(__before_begin_.first())));} - - _LIBCPP_INLINE_VISIBILITY - __node_allocator& __alloc() _NOEXCEPT - {return __before_begin_.second();} - _LIBCPP_INLINE_VISIBILITY - const __node_allocator& __alloc() const _NOEXCEPT - {return __before_begin_.second();} - - typedef __forward_list_iterator<__node_pointer> iterator; - typedef __forward_list_const_iterator<__node_pointer> const_iterator; - - _LIBCPP_INLINE_VISIBILITY - __forward_list_base() - _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value) - : __before_begin_(__begin_node()) {} - _LIBCPP_INLINE_VISIBILITY - __forward_list_base(const allocator_type& __a) - : __before_begin_(__begin_node(), __node_allocator(__a)) {} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -public: - __forward_list_base(__forward_list_base&& __x) - _NOEXCEPT_(is_nothrow_move_constructible<__node_allocator>::value); - __forward_list_base(__forward_list_base&& __x, const allocator_type& __a); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -private: - __forward_list_base(const __forward_list_base&); - __forward_list_base& operator=(const __forward_list_base&); - -public: - ~__forward_list_base(); - -protected: - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __forward_list_base& __x) - {__copy_assign_alloc(__x, integral_constant());} - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__forward_list_base& __x) - _NOEXCEPT_(!__node_traits::propagate_on_container_move_assignment::value || - is_nothrow_move_assignable<__node_allocator>::value) - {__move_assign_alloc(__x, integral_constant());} - -public: - void swap(__forward_list_base& __x) - _NOEXCEPT_(!__node_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value); -protected: - void clear() _NOEXCEPT; - -private: - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __forward_list_base&, false_type) {} - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __forward_list_base& __x, true_type) - { - if (__alloc() != __x.__alloc()) - clear(); - __alloc() = __x.__alloc(); - } - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__forward_list_base& __x, false_type) _NOEXCEPT - {} - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__forward_list_base& __x, true_type) - _NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value) - {__alloc() = _VSTD::move(__x.__alloc());} - - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__node_allocator& __x, __node_allocator& __y) - _NOEXCEPT_(!__node_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value) - {__swap_alloc(__x, __y, integral_constant());} - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__node_allocator& __x, __node_allocator& __y, - false_type) - _NOEXCEPT - {} - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__node_allocator& __x, __node_allocator& __y, - true_type) - _NOEXCEPT_(__is_nothrow_swappable<__node_allocator>::value) - { - using _VSTD::swap; - swap(__x, __y); - } -}; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -__forward_list_base<_Tp, _Alloc>::__forward_list_base(__forward_list_base&& __x) - _NOEXCEPT_(is_nothrow_move_constructible<__node_allocator>::value) - : __before_begin_(_VSTD::move(__x.__before_begin_)) -{ - __x.__before_begin()->__next_ = nullptr; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__forward_list_base<_Tp, _Alloc>::__forward_list_base(__forward_list_base&& __x, - const allocator_type& __a) - : __before_begin_(__begin_node(), __node_allocator(__a)) -{ - if (__alloc() == __x.__alloc()) - { - __before_begin()->__next_ = __x.__before_begin()->__next_; - __x.__before_begin()->__next_ = nullptr; - } -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -__forward_list_base<_Tp, _Alloc>::~__forward_list_base() -{ - clear(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -__forward_list_base<_Tp, _Alloc>::swap(__forward_list_base& __x) - _NOEXCEPT_(!__node_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value) -{ - __swap_alloc(__alloc(), __x.__alloc()); - using _VSTD::swap; - swap(__before_begin()->__next_, __x.__before_begin()->__next_); -} - -template -void -__forward_list_base<_Tp, _Alloc>::clear() _NOEXCEPT -{ - __node_allocator& __a = __alloc(); - for (__node_pointer __p = __before_begin()->__next_; __p != nullptr;) - { - __node_pointer __next = __p->__next_; - __node_traits::destroy(__a, _VSTD::addressof(__p->__value_)); - __node_traits::deallocate(__a, __p, 1); - __p = __next; - } - __before_begin()->__next_ = nullptr; -} - -template */> -class _LIBCPP_TYPE_VIS_ONLY forward_list - : private __forward_list_base<_Tp, _Alloc> -{ - typedef __forward_list_base<_Tp, _Alloc> base; - typedef typename base::__node_allocator __node_allocator; - typedef typename base::__node __node; - typedef typename base::__node_traits __node_traits; - typedef typename base::__node_pointer __node_pointer; - -public: - typedef _Tp value_type; - typedef _Alloc allocator_type; - - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename allocator_traits::pointer pointer; - typedef typename allocator_traits::const_pointer const_pointer; - typedef typename allocator_traits::size_type size_type; - typedef typename allocator_traits::difference_type difference_type; - - typedef typename base::iterator iterator; - typedef typename base::const_iterator const_iterator; - - _LIBCPP_INLINE_VISIBILITY - forward_list() - _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value) - {} // = default; - explicit forward_list(const allocator_type& __a); - explicit forward_list(size_type __n); -#if _LIBCPP_STD_VER > 11 - explicit forward_list(size_type __n, const allocator_type& __a); -#endif - forward_list(size_type __n, const value_type& __v); - forward_list(size_type __n, const value_type& __v, const allocator_type& __a); - template - forward_list(_InputIterator __f, _InputIterator __l, - typename enable_if< - __is_input_iterator<_InputIterator>::value - >::type* = nullptr); - template - forward_list(_InputIterator __f, _InputIterator __l, - const allocator_type& __a, - typename enable_if< - __is_input_iterator<_InputIterator>::value - >::type* = nullptr); - forward_list(const forward_list& __x); - forward_list(const forward_list& __x, const allocator_type& __a); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - forward_list(forward_list&& __x) - _NOEXCEPT_(is_nothrow_move_constructible::value) - : base(_VSTD::move(__x)) {} - forward_list(forward_list&& __x, const allocator_type& __a); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - forward_list(initializer_list __il); - forward_list(initializer_list __il, const allocator_type& __a); -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - // ~forward_list() = default; - - forward_list& operator=(const forward_list& __x); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - forward_list& operator=(forward_list&& __x) - _NOEXCEPT_( - __node_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value); -#endif -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - forward_list& operator=(initializer_list __il); -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - template - typename enable_if - < - __is_input_iterator<_InputIterator>::value, - void - >::type - assign(_InputIterator __f, _InputIterator __l); - void assign(size_type __n, const value_type& __v); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - void assign(initializer_list __il); -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - allocator_type get_allocator() const _NOEXCEPT - {return allocator_type(base::__alloc());} - - _LIBCPP_INLINE_VISIBILITY - iterator begin() _NOEXCEPT - {return iterator(base::__before_begin()->__next_);} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT - {return const_iterator(base::__before_begin()->__next_);} - _LIBCPP_INLINE_VISIBILITY - iterator end() _NOEXCEPT - {return iterator(nullptr);} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT - {return const_iterator(nullptr);} - - _LIBCPP_INLINE_VISIBILITY - const_iterator cbegin() const _NOEXCEPT - {return const_iterator(base::__before_begin()->__next_);} - _LIBCPP_INLINE_VISIBILITY - const_iterator cend() const _NOEXCEPT - {return const_iterator(nullptr);} - - _LIBCPP_INLINE_VISIBILITY - iterator before_begin() _NOEXCEPT - {return iterator(base::__before_begin());} - _LIBCPP_INLINE_VISIBILITY - const_iterator before_begin() const _NOEXCEPT - {return const_iterator(base::__before_begin());} - _LIBCPP_INLINE_VISIBILITY - const_iterator cbefore_begin() const _NOEXCEPT - {return const_iterator(base::__before_begin());} - - _LIBCPP_INLINE_VISIBILITY - bool empty() const _NOEXCEPT - {return base::__before_begin()->__next_ == nullptr;} - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const _NOEXCEPT - {return numeric_limits::max();} - - _LIBCPP_INLINE_VISIBILITY - reference front() {return base::__before_begin()->__next_->__value_;} - _LIBCPP_INLINE_VISIBILITY - const_reference front() const {return base::__before_begin()->__next_->__value_;} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - template void emplace_front(_Args&&... __args); -#endif - void push_front(value_type&& __v); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - void push_front(const value_type& __v); - - void pop_front(); - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - template - iterator emplace_after(const_iterator __p, _Args&&... __args); -#endif // _LIBCPP_HAS_NO_VARIADICS - iterator insert_after(const_iterator __p, value_type&& __v); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - iterator insert_after(const_iterator __p, const value_type& __v); - iterator insert_after(const_iterator __p, size_type __n, const value_type& __v); - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if - < - __is_input_iterator<_InputIterator>::value, - iterator - >::type - insert_after(const_iterator __p, _InputIterator __f, _InputIterator __l); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - iterator insert_after(const_iterator __p, initializer_list __il) - {return insert_after(__p, __il.begin(), __il.end());} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - iterator erase_after(const_iterator __p); - iterator erase_after(const_iterator __f, const_iterator __l); - - _LIBCPP_INLINE_VISIBILITY - void swap(forward_list& __x) - _NOEXCEPT_(!__node_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value) - {base::swap(__x);} - - void resize(size_type __n); - void resize(size_type __n, const value_type& __v); - _LIBCPP_INLINE_VISIBILITY - void clear() _NOEXCEPT {base::clear();} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void splice_after(const_iterator __p, forward_list&& __x); - _LIBCPP_INLINE_VISIBILITY - void splice_after(const_iterator __p, forward_list&& __x, const_iterator __i); - _LIBCPP_INLINE_VISIBILITY - void splice_after(const_iterator __p, forward_list&& __x, - const_iterator __f, const_iterator __l); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - void splice_after(const_iterator __p, forward_list& __x); - void splice_after(const_iterator __p, forward_list& __x, const_iterator __i); - void splice_after(const_iterator __p, forward_list& __x, - const_iterator __f, const_iterator __l); - void remove(const value_type& __v); - template void remove_if(_Predicate __pred); - _LIBCPP_INLINE_VISIBILITY - void unique() {unique(__equal_to());} - template void unique(_BinaryPredicate __binary_pred); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void merge(forward_list&& __x) {merge(__x, __less());} - template - _LIBCPP_INLINE_VISIBILITY - void merge(forward_list&& __x, _Compare __comp) - {merge(__x, _VSTD::move(__comp));} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void merge(forward_list& __x) {merge(__x, __less());} - template void merge(forward_list& __x, _Compare __comp); - _LIBCPP_INLINE_VISIBILITY - void sort() {sort(__less());} - template void sort(_Compare __comp); - void reverse() _NOEXCEPT; - -private: - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - void __move_assign(forward_list& __x, true_type) - _NOEXCEPT_(is_nothrow_move_assignable::value); - void __move_assign(forward_list& __x, false_type); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - template - static - __node_pointer - __merge(__node_pointer __f1, __node_pointer __f2, _Compare& __comp); - - template - static - __node_pointer - __sort(__node_pointer __f, difference_type __sz, _Compare& __comp); -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -forward_list<_Tp, _Alloc>::forward_list(const allocator_type& __a) - : base(__a) -{ -} - -template -forward_list<_Tp, _Alloc>::forward_list(size_type __n) -{ - if (__n > 0) - { - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(nullptr, _Dp(__a, 1)); - for (__node_pointer __p = base::__before_begin(); __n > 0; --__n, - __p = __p->__next_) - { - __h.reset(__node_traits::allocate(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_)); - __h->__next_ = nullptr; - __p->__next_ = __h.release(); - } - } -} - -#if _LIBCPP_STD_VER > 11 -template -forward_list<_Tp, _Alloc>::forward_list(size_type __n, const allocator_type& __a) - : base ( __a ) -{ - if (__n > 0) - { - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(nullptr, _Dp(__a, 1)); - for (__node_pointer __p = base::__before_begin(); __n > 0; --__n, - __p = __p->__next_) - { - __h.reset(__node_traits::allocate(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_)); - __h->__next_ = nullptr; - __p->__next_ = __h.release(); - } - } -} -#endif - -template -forward_list<_Tp, _Alloc>::forward_list(size_type __n, const value_type& __v) -{ - insert_after(cbefore_begin(), __n, __v); -} - -template -forward_list<_Tp, _Alloc>::forward_list(size_type __n, const value_type& __v, - const allocator_type& __a) - : base(__a) -{ - insert_after(cbefore_begin(), __n, __v); -} - -template -template -forward_list<_Tp, _Alloc>::forward_list(_InputIterator __f, _InputIterator __l, - typename enable_if< - __is_input_iterator<_InputIterator>::value - >::type*) -{ - insert_after(cbefore_begin(), __f, __l); -} - -template -template -forward_list<_Tp, _Alloc>::forward_list(_InputIterator __f, _InputIterator __l, - const allocator_type& __a, - typename enable_if< - __is_input_iterator<_InputIterator>::value - >::type*) - : base(__a) -{ - insert_after(cbefore_begin(), __f, __l); -} - -template -forward_list<_Tp, _Alloc>::forward_list(const forward_list& __x) - : base(allocator_type( - __node_traits::select_on_container_copy_construction(__x.__alloc()) - ) - ) -{ - insert_after(cbefore_begin(), __x.begin(), __x.end()); -} - -template -forward_list<_Tp, _Alloc>::forward_list(const forward_list& __x, - const allocator_type& __a) - : base(__a) -{ - insert_after(cbefore_begin(), __x.begin(), __x.end()); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -forward_list<_Tp, _Alloc>::forward_list(forward_list&& __x, - const allocator_type& __a) - : base(_VSTD::move(__x), __a) -{ - if (base::__alloc() != __x.__alloc()) - { - typedef move_iterator _Ip; - insert_after(cbefore_begin(), _Ip(__x.begin()), _Ip(__x.end())); - } -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -forward_list<_Tp, _Alloc>::forward_list(initializer_list __il) -{ - insert_after(cbefore_begin(), __il.begin(), __il.end()); -} - -template -forward_list<_Tp, _Alloc>::forward_list(initializer_list __il, - const allocator_type& __a) - : base(__a) -{ - insert_after(cbefore_begin(), __il.begin(), __il.end()); -} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -forward_list<_Tp, _Alloc>& -forward_list<_Tp, _Alloc>::operator=(const forward_list& __x) -{ - if (this != &__x) - { - base::__copy_assign_alloc(__x); - assign(__x.begin(), __x.end()); - } - return *this; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -forward_list<_Tp, _Alloc>::__move_assign(forward_list& __x, true_type) - _NOEXCEPT_(is_nothrow_move_assignable::value) -{ - clear(); - base::__move_assign_alloc(__x); - base::__before_begin()->__next_ = __x.__before_begin()->__next_; - __x.__before_begin()->__next_ = nullptr; -} - -template -void -forward_list<_Tp, _Alloc>::__move_assign(forward_list& __x, false_type) -{ - if (base::__alloc() == __x.__alloc()) - __move_assign(__x, true_type()); - else - { - typedef move_iterator _Ip; - assign(_Ip(__x.begin()), _Ip(__x.end())); - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -forward_list<_Tp, _Alloc>& -forward_list<_Tp, _Alloc>::operator=(forward_list&& __x) - _NOEXCEPT_( - __node_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value) -{ - __move_assign(__x, integral_constant()); - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -inline _LIBCPP_INLINE_VISIBILITY -forward_list<_Tp, _Alloc>& -forward_list<_Tp, _Alloc>::operator=(initializer_list __il) -{ - assign(__il.begin(), __il.end()); - return *this; -} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -template -typename enable_if -< - __is_input_iterator<_InputIterator>::value, - void ->::type -forward_list<_Tp, _Alloc>::assign(_InputIterator __f, _InputIterator __l) -{ - iterator __i = before_begin(); - iterator __j = _VSTD::next(__i); - iterator __e = end(); - for (; __j != __e && __f != __l; ++__i, (void) ++__j, ++__f) - *__j = *__f; - if (__j == __e) - insert_after(__i, __f, __l); - else - erase_after(__i, __e); -} - -template -void -forward_list<_Tp, _Alloc>::assign(size_type __n, const value_type& __v) -{ - iterator __i = before_begin(); - iterator __j = _VSTD::next(__i); - iterator __e = end(); - for (; __j != __e && __n > 0; --__n, ++__i, ++__j) - *__j = __v; - if (__j == __e) - insert_after(__i, __n, __v); - else - erase_after(__i, __e); -} - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -inline _LIBCPP_INLINE_VISIBILITY -void -forward_list<_Tp, _Alloc>::assign(initializer_list __il) -{ - assign(__il.begin(), __il.end()); -} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -void -forward_list<_Tp, _Alloc>::emplace_front(_Args&&... __args) -{ - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(__node_traits::allocate(__a, 1), _Dp(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), - _VSTD::forward<_Args>(__args)...); - __h->__next_ = base::__before_begin()->__next_; - base::__before_begin()->__next_ = __h.release(); -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -template -void -forward_list<_Tp, _Alloc>::push_front(value_type&& __v) -{ - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(__node_traits::allocate(__a, 1), _Dp(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), _VSTD::move(__v)); - __h->__next_ = base::__before_begin()->__next_; - base::__before_begin()->__next_ = __h.release(); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -forward_list<_Tp, _Alloc>::push_front(const value_type& __v) -{ - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(__node_traits::allocate(__a, 1), _Dp(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), __v); - __h->__next_ = base::__before_begin()->__next_; - base::__before_begin()->__next_ = __h.release(); -} - -template -void -forward_list<_Tp, _Alloc>::pop_front() -{ - __node_allocator& __a = base::__alloc(); - __node_pointer __p = base::__before_begin()->__next_; - base::__before_begin()->__next_ = __p->__next_; - __node_traits::destroy(__a, _VSTD::addressof(__p->__value_)); - __node_traits::deallocate(__a, __p, 1); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -typename forward_list<_Tp, _Alloc>::iterator -forward_list<_Tp, _Alloc>::emplace_after(const_iterator __p, _Args&&... __args) -{ - __node_pointer const __r = __p.__ptr_; - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(__node_traits::allocate(__a, 1), _Dp(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), - _VSTD::forward<_Args>(__args)...); - __h->__next_ = __r->__next_; - __r->__next_ = __h.release(); - return iterator(__r->__next_); -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -template -typename forward_list<_Tp, _Alloc>::iterator -forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, value_type&& __v) -{ - __node_pointer const __r = __p.__ptr_; - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(__node_traits::allocate(__a, 1), _Dp(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), _VSTD::move(__v)); - __h->__next_ = __r->__next_; - __r->__next_ = __h.release(); - return iterator(__r->__next_); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -typename forward_list<_Tp, _Alloc>::iterator -forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, const value_type& __v) -{ - __node_pointer const __r = __p.__ptr_; - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(__node_traits::allocate(__a, 1), _Dp(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), __v); - __h->__next_ = __r->__next_; - __r->__next_ = __h.release(); - return iterator(__r->__next_); -} - -template -typename forward_list<_Tp, _Alloc>::iterator -forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, size_type __n, - const value_type& __v) -{ - __node_pointer __r = __p.__ptr_; - if (__n > 0) - { - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(__node_traits::allocate(__a, 1), _Dp(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), __v); - __node_pointer __first = __h.release(); - __node_pointer __last = __first; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (--__n; __n != 0; --__n, __last = __last->__next_) - { - __h.reset(__node_traits::allocate(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), __v); - __last->__next_ = __h.release(); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - while (__first != nullptr) - { - __node_pointer __next = __first->__next_; - __node_traits::destroy(__a, _VSTD::addressof(__first->__value_)); - __node_traits::deallocate(__a, __first, 1); - __first = __next; - } - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __last->__next_ = __r->__next_; - __r->__next_ = __first; - __r = __last; - } - return iterator(__r); -} - -template -template -typename enable_if -< - __is_input_iterator<_InputIterator>::value, - typename forward_list<_Tp, _Alloc>::iterator ->::type -forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, - _InputIterator __f, _InputIterator __l) -{ - __node_pointer __r = __p.__ptr_; - if (__f != __l) - { - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(__node_traits::allocate(__a, 1), _Dp(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), *__f); - __node_pointer __first = __h.release(); - __node_pointer __last = __first; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (++__f; __f != __l; ++__f, ((void)(__last = __last->__next_))) - { - __h.reset(__node_traits::allocate(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), *__f); - __last->__next_ = __h.release(); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - while (__first != nullptr) - { - __node_pointer __next = __first->__next_; - __node_traits::destroy(__a, _VSTD::addressof(__first->__value_)); - __node_traits::deallocate(__a, __first, 1); - __first = __next; - } - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __last->__next_ = __r->__next_; - __r->__next_ = __first; - __r = __last; - } - return iterator(__r); -} - -template -typename forward_list<_Tp, _Alloc>::iterator -forward_list<_Tp, _Alloc>::erase_after(const_iterator __f) -{ - __node_pointer __p = __f.__ptr_; - __node_pointer __n = __p->__next_; - __p->__next_ = __n->__next_; - __node_allocator& __a = base::__alloc(); - __node_traits::destroy(__a, _VSTD::addressof(__n->__value_)); - __node_traits::deallocate(__a, __n, 1); - return iterator(__p->__next_); -} - -template -typename forward_list<_Tp, _Alloc>::iterator -forward_list<_Tp, _Alloc>::erase_after(const_iterator __f, const_iterator __l) -{ - __node_pointer __e = __l.__ptr_; - if (__f != __l) - { - __node_pointer __p = __f.__ptr_; - __node_pointer __n = __p->__next_; - if (__n != __e) - { - __p->__next_ = __e; - __node_allocator& __a = base::__alloc(); - do - { - __p = __n->__next_; - __node_traits::destroy(__a, _VSTD::addressof(__n->__value_)); - __node_traits::deallocate(__a, __n, 1); - __n = __p; - } while (__n != __e); - } - } - return iterator(__e); -} - -template -void -forward_list<_Tp, _Alloc>::resize(size_type __n) -{ - size_type __sz = 0; - iterator __p = before_begin(); - iterator __i = begin(); - iterator __e = end(); - for (; __i != __e && __sz < __n; ++__p, ++__i, ++__sz) - ; - if (__i != __e) - erase_after(__p, __e); - else - { - __n -= __sz; - if (__n > 0) - { - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(nullptr, _Dp(__a, 1)); - for (__node_pointer __ptr = __p.__ptr_; __n > 0; --__n, - __ptr = __ptr->__next_) - { - __h.reset(__node_traits::allocate(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_)); - __h->__next_ = nullptr; - __ptr->__next_ = __h.release(); - } - } - } -} - -template -void -forward_list<_Tp, _Alloc>::resize(size_type __n, const value_type& __v) -{ - size_type __sz = 0; - iterator __p = before_begin(); - iterator __i = begin(); - iterator __e = end(); - for (; __i != __e && __sz < __n; ++__p, ++__i, ++__sz) - ; - if (__i != __e) - erase_after(__p, __e); - else - { - __n -= __sz; - if (__n > 0) - { - __node_allocator& __a = base::__alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __h(nullptr, _Dp(__a, 1)); - for (__node_pointer __ptr = __p.__ptr_; __n > 0; --__n, - __ptr = __ptr->__next_) - { - __h.reset(__node_traits::allocate(__a, 1)); - __node_traits::construct(__a, _VSTD::addressof(__h->__value_), __v); - __h->__next_ = nullptr; - __ptr->__next_ = __h.release(); - } - } - } -} - -template -void -forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, - forward_list& __x) -{ - if (!__x.empty()) - { - if (__p.__ptr_->__next_ != nullptr) - { - const_iterator __lm1 = __x.before_begin(); - while (__lm1.__ptr_->__next_ != nullptr) - ++__lm1; - __lm1.__ptr_->__next_ = __p.__ptr_->__next_; - } - __p.__ptr_->__next_ = __x.__before_begin()->__next_; - __x.__before_begin()->__next_ = nullptr; - } -} - -template -void -forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, - forward_list& __x, - const_iterator __i) -{ - const_iterator __lm1 = _VSTD::next(__i); - if (__p != __i && __p != __lm1) - { - __i.__ptr_->__next_ = __lm1.__ptr_->__next_; - __lm1.__ptr_->__next_ = __p.__ptr_->__next_; - __p.__ptr_->__next_ = __lm1.__ptr_; - } -} - -template -void -forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, - forward_list& __x, - const_iterator __f, const_iterator __l) -{ - if (__f != __l && __p != __f) - { - const_iterator __lm1 = __f; - while (__lm1.__ptr_->__next_ != __l.__ptr_) - ++__lm1; - if (__f != __lm1) - { - __lm1.__ptr_->__next_ = __p.__ptr_->__next_; - __p.__ptr_->__next_ = __f.__ptr_->__next_; - __f.__ptr_->__next_ = __l.__ptr_; - } - } -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -void -forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, - forward_list&& __x) -{ - splice_after(__p, __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, - forward_list&& __x, - const_iterator __i) -{ - splice_after(__p, __x, __i); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -forward_list<_Tp, _Alloc>::splice_after(const_iterator __p, - forward_list&& __x, - const_iterator __f, const_iterator __l) -{ - splice_after(__p, __x, __f, __l); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -forward_list<_Tp, _Alloc>::remove(const value_type& __v) -{ - forward_list<_Tp, _Alloc> __deleted_nodes; // collect the nodes we're removing - iterator __e = end(); - for (iterator __i = before_begin(); __i.__ptr_->__next_ != nullptr;) - { - if (__i.__ptr_->__next_->__value_ == __v) - { - iterator __j = _VSTD::next(__i, 2); - for (; __j != __e && *__j == __v; ++__j) - ; - __deleted_nodes.splice_after(__deleted_nodes.before_begin(), *this, __i, __j); - if (__j == __e) - break; - __i = __j; - } - else - ++__i; - } -} - -template -template -void -forward_list<_Tp, _Alloc>::remove_if(_Predicate __pred) -{ - iterator __e = end(); - for (iterator __i = before_begin(); __i.__ptr_->__next_ != nullptr;) - { - if (__pred(__i.__ptr_->__next_->__value_)) - { - iterator __j = _VSTD::next(__i, 2); - for (; __j != __e && __pred(*__j); ++__j) - ; - erase_after(__i, __j); - if (__j == __e) - break; - __i = __j; - } - else - ++__i; - } -} - -template -template -void -forward_list<_Tp, _Alloc>::unique(_BinaryPredicate __binary_pred) -{ - for (iterator __i = begin(), __e = end(); __i != __e;) - { - iterator __j = _VSTD::next(__i); - for (; __j != __e && __binary_pred(*__i, *__j); ++__j) - ; - if (__i.__ptr_->__next_ != __j.__ptr_) - erase_after(__i, __j); - __i = __j; - } -} - -template -template -void -forward_list<_Tp, _Alloc>::merge(forward_list& __x, _Compare __comp) -{ - if (this != &__x) - { - base::__before_begin()->__next_ = __merge(base::__before_begin()->__next_, - __x.__before_begin()->__next_, - __comp); - __x.__before_begin()->__next_ = nullptr; - } -} - -template -template -typename forward_list<_Tp, _Alloc>::__node_pointer -forward_list<_Tp, _Alloc>::__merge(__node_pointer __f1, __node_pointer __f2, - _Compare& __comp) -{ - if (__f1 == nullptr) - return __f2; - if (__f2 == nullptr) - return __f1; - __node_pointer __r; - if (__comp(__f2->__value_, __f1->__value_)) - { - __node_pointer __t = __f2; - while (__t->__next_ != nullptr && - __comp(__t->__next_->__value_, __f1->__value_)) - __t = __t->__next_; - __r = __f2; - __f2 = __t->__next_; - __t->__next_ = __f1; - } - else - __r = __f1; - __node_pointer __p = __f1; - __f1 = __f1->__next_; - while (__f1 != nullptr && __f2 != nullptr) - { - if (__comp(__f2->__value_, __f1->__value_)) - { - __node_pointer __t = __f2; - while (__t->__next_ != nullptr && - __comp(__t->__next_->__value_, __f1->__value_)) - __t = __t->__next_; - __p->__next_ = __f2; - __f2 = __t->__next_; - __t->__next_ = __f1; - } - __p = __f1; - __f1 = __f1->__next_; - } - if (__f2 != nullptr) - __p->__next_ = __f2; - return __r; -} - -template -template -inline _LIBCPP_INLINE_VISIBILITY -void -forward_list<_Tp, _Alloc>::sort(_Compare __comp) -{ - base::__before_begin()->__next_ = __sort(base::__before_begin()->__next_, - _VSTD::distance(begin(), end()), __comp); -} - -template -template -typename forward_list<_Tp, _Alloc>::__node_pointer -forward_list<_Tp, _Alloc>::__sort(__node_pointer __f1, difference_type __sz, - _Compare& __comp) -{ - switch (__sz) - { - case 0: - case 1: - return __f1; - case 2: - if (__comp(__f1->__next_->__value_, __f1->__value_)) - { - __node_pointer __t = __f1->__next_; - __t->__next_ = __f1; - __f1->__next_ = nullptr; - __f1 = __t; - } - return __f1; - } - difference_type __sz1 = __sz / 2; - difference_type __sz2 = __sz - __sz1; - __node_pointer __t = _VSTD::next(iterator(__f1), __sz1 - 1).__ptr_; - __node_pointer __f2 = __t->__next_; - __t->__next_ = nullptr; - return __merge(__sort(__f1, __sz1, __comp), - __sort(__f2, __sz2, __comp), __comp); -} - -template -void -forward_list<_Tp, _Alloc>::reverse() _NOEXCEPT -{ - __node_pointer __p = base::__before_begin()->__next_; - if (__p != nullptr) - { - __node_pointer __f = __p->__next_; - __p->__next_ = nullptr; - while (__f != nullptr) - { - __node_pointer __t = __f->__next_; - __f->__next_ = __p; - __p = __f; - __f = __t; - } - base::__before_begin()->__next_ = __p; - } -} - -template -bool operator==(const forward_list<_Tp, _Alloc>& __x, - const forward_list<_Tp, _Alloc>& __y) -{ - typedef forward_list<_Tp, _Alloc> _Cp; - typedef typename _Cp::const_iterator _Ip; - _Ip __ix = __x.begin(); - _Ip __ex = __x.end(); - _Ip __iy = __y.begin(); - _Ip __ey = __y.end(); - for (; __ix != __ex && __iy != __ey; ++__ix, ++__iy) - if (!(*__ix == *__iy)) - return false; - return (__ix == __ex) == (__iy == __ey); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool operator!=(const forward_list<_Tp, _Alloc>& __x, - const forward_list<_Tp, _Alloc>& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool operator< (const forward_list<_Tp, _Alloc>& __x, - const forward_list<_Tp, _Alloc>& __y) -{ - return _VSTD::lexicographical_compare(__x.begin(), __x.end(), - __y.begin(), __y.end()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool operator> (const forward_list<_Tp, _Alloc>& __x, - const forward_list<_Tp, _Alloc>& __y) -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool operator>=(const forward_list<_Tp, _Alloc>& __x, - const forward_list<_Tp, _Alloc>& __y) -{ - return !(__x < __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool operator<=(const forward_list<_Tp, _Alloc>& __x, - const forward_list<_Tp, _Alloc>& __y) -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(forward_list<_Tp, _Alloc>& __x, forward_list<_Tp, _Alloc>& __y) - _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) -{ - __x.swap(__y); -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_FORWARD_LIST diff --git a/libcxx/include/fstream b/libcxx/include/fstream deleted file mode 100644 index 1f289eddc..000000000 --- a/libcxx/include/fstream +++ /dev/null @@ -1,1457 +0,0 @@ -// -*- C++ -*- -//===------------------------- fstream ------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_FSTREAM -#define _LIBCPP_FSTREAM - -/* - fstream synopsis - -template > -class basic_filebuf - : public basic_streambuf -{ -public: - typedef charT char_type; - typedef traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - // 27.9.1.2 Constructors/destructor: - basic_filebuf(); - basic_filebuf(basic_filebuf&& rhs); - virtual ~basic_filebuf(); - - // 27.9.1.3 Assign/swap: - basic_filebuf& operator=(basic_filebuf&& rhs); - void swap(basic_filebuf& rhs); - - // 27.9.1.4 Members: - bool is_open() const; - basic_filebuf* open(const char* s, ios_base::openmode mode); - basic_filebuf* open(const string& s, ios_base::openmode mode); - basic_filebuf* close(); - -protected: - // 27.9.1.5 Overridden virtual functions: - virtual streamsize showmanyc(); - virtual int_type underflow(); - virtual int_type uflow(); - virtual int_type pbackfail(int_type c = traits_type::eof()); - virtual int_type overflow (int_type c = traits_type::eof()); - virtual basic_streambuf* setbuf(char_type* s, streamsize n); - virtual pos_type seekoff(off_type off, ios_base::seekdir way, - ios_base::openmode which = ios_base::in | ios_base::out); - virtual pos_type seekpos(pos_type sp, - ios_base::openmode which = ios_base::in | ios_base::out); - virtual int sync(); - virtual void imbue(const locale& loc); -}; - -template - void - swap(basic_filebuf& x, basic_filebuf& y); - -typedef basic_filebuf filebuf; -typedef basic_filebuf wfilebuf; - -template > -class basic_ifstream - : public basic_istream -{ -public: - typedef charT char_type; - typedef traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - basic_ifstream(); - explicit basic_ifstream(const char* s, ios_base::openmode mode = ios_base::in); - explicit basic_ifstream(const string& s, ios_base::openmode mode = ios_base::in); - basic_ifstream(basic_ifstream&& rhs); - - basic_ifstream& operator=(basic_ifstream&& rhs); - void swap(basic_ifstream& rhs); - - basic_filebuf* rdbuf() const; - bool is_open() const; - void open(const char* s, ios_base::openmode mode = ios_base::in); - void open(const string& s, ios_base::openmode mode = ios_base::in); - void close(); -}; - -template - void - swap(basic_ifstream& x, basic_ifstream& y); - -typedef basic_ifstream ifstream; -typedef basic_ifstream wifstream; - -template > -class basic_ofstream - : public basic_ostream -{ -public: - typedef charT char_type; - typedef traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - basic_ofstream(); - explicit basic_ofstream(const char* s, ios_base::openmode mode = ios_base::out); - explicit basic_ofstream(const string& s, ios_base::openmode mode = ios_base::out); - basic_ofstream(basic_ofstream&& rhs); - - basic_ofstream& operator=(basic_ofstream&& rhs); - void swap(basic_ofstream& rhs); - - basic_filebuf* rdbuf() const; - bool is_open() const; - void open(const char* s, ios_base::openmode mode = ios_base::out); - void open(const string& s, ios_base::openmode mode = ios_base::out); - void close(); -}; - -template - void - swap(basic_ofstream& x, basic_ofstream& y); - -typedef basic_ofstream ofstream; -typedef basic_ofstream wofstream; - -template > -class basic_fstream - : public basic_iostream -{ -public: - typedef charT char_type; - typedef traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - basic_fstream(); - explicit basic_fstream(const char* s, ios_base::openmode mode = ios_base::in|ios_base::out); - explicit basic_fstream(const string& s, ios_base::openmode mode = ios_base::in|ios_base::out); - basic_fstream(basic_fstream&& rhs); - - basic_fstream& operator=(basic_fstream&& rhs); - void swap(basic_fstream& rhs); - - basic_filebuf* rdbuf() const; - bool is_open() const; - void open(const char* s, ios_base::openmode mode = ios_base::in|ios_base::out); - void open(const string& s, ios_base::openmode mode = ios_base::in|ios_base::out); - void close(); -}; - -template - void swap(basic_fstream& x, basic_fstream& y); - -typedef basic_fstream fstream; -typedef basic_fstream wfstream; - -} // std - -*/ - -#include <__config> -#include -#include -#include <__locale> -#include - -#include <__undef_min_max> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -class _LIBCPP_TYPE_VIS_ONLY basic_filebuf - : public basic_streambuf<_CharT, _Traits> -{ -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - typedef typename traits_type::state_type state_type; - - // 27.9.1.2 Constructors/destructor: - basic_filebuf(); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - basic_filebuf(basic_filebuf&& __rhs); -#endif - virtual ~basic_filebuf(); - - // 27.9.1.3 Assign/swap: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - basic_filebuf& operator=(basic_filebuf&& __rhs); -#endif - void swap(basic_filebuf& __rhs); - - // 27.9.1.4 Members: - bool is_open() const; -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE - basic_filebuf* open(const char* __s, ios_base::openmode __mode); - basic_filebuf* open(const string& __s, ios_base::openmode __mode); -#endif - basic_filebuf* close(); - -protected: - // 27.9.1.5 Overridden virtual functions: - virtual int_type underflow(); - virtual int_type pbackfail(int_type __c = traits_type::eof()); - virtual int_type overflow (int_type __c = traits_type::eof()); - virtual basic_streambuf* setbuf(char_type* __s, streamsize __n); - virtual pos_type seekoff(off_type __off, ios_base::seekdir __way, - ios_base::openmode __wch = ios_base::in | ios_base::out); - virtual pos_type seekpos(pos_type __sp, - ios_base::openmode __wch = ios_base::in | ios_base::out); - virtual int sync(); - virtual void imbue(const locale& __loc); - -private: - char* __extbuf_; - const char* __extbufnext_; - const char* __extbufend_; - char __extbuf_min_[8]; - size_t __ebs_; - char_type* __intbuf_; - size_t __ibs_; - FILE* __file_; - const codecvt* __cv_; - state_type __st_; - state_type __st_last_; - ios_base::openmode __om_; - ios_base::openmode __cm_; - bool __owns_eb_; - bool __owns_ib_; - bool __always_noconv_; - - bool __read_mode(); - void __write_mode(); -}; - -template -basic_filebuf<_CharT, _Traits>::basic_filebuf() - : __extbuf_(0), - __extbufnext_(0), - __extbufend_(0), - __ebs_(0), - __intbuf_(0), - __ibs_(0), - __file_(0), - __cv_(nullptr), - __st_(), - __st_last_(), - __om_(0), - __cm_(0), - __owns_eb_(false), - __owns_ib_(false), - __always_noconv_(false) -{ - if (has_facet >(this->getloc())) - { - __cv_ = &use_facet >(this->getloc()); - __always_noconv_ = __cv_->always_noconv(); - } - setbuf(0, 4096); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -basic_filebuf<_CharT, _Traits>::basic_filebuf(basic_filebuf&& __rhs) - : basic_streambuf<_CharT, _Traits>(__rhs) -{ - if (__rhs.__extbuf_ == __rhs.__extbuf_min_) - { - __extbuf_ = __extbuf_min_; - __extbufnext_ = __extbuf_ + (__rhs.__extbufnext_ - __rhs.__extbuf_); - __extbufend_ = __extbuf_ + (__rhs.__extbufend_ - __rhs.__extbuf_); - } - else - { - __extbuf_ = __rhs.__extbuf_; - __extbufnext_ = __rhs.__extbufnext_; - __extbufend_ = __rhs.__extbufend_; - } - __ebs_ = __rhs.__ebs_; - __intbuf_ = __rhs.__intbuf_; - __ibs_ = __rhs.__ibs_; - __file_ = __rhs.__file_; - __cv_ = __rhs.__cv_; - __st_ = __rhs.__st_; - __st_last_ = __rhs.__st_last_; - __om_ = __rhs.__om_; - __cm_ = __rhs.__cm_; - __owns_eb_ = __rhs.__owns_eb_; - __owns_ib_ = __rhs.__owns_ib_; - __always_noconv_ = __rhs.__always_noconv_; - if (__rhs.pbase()) - { - if (__rhs.pbase() == __rhs.__intbuf_) - this->setp(__intbuf_, __intbuf_ + (__rhs. epptr() - __rhs.pbase())); - else - this->setp((char_type*)__extbuf_, - (char_type*)__extbuf_ + (__rhs. epptr() - __rhs.pbase())); - this->pbump(__rhs. pptr() - __rhs.pbase()); - } - else if (__rhs.eback()) - { - if (__rhs.eback() == __rhs.__intbuf_) - this->setg(__intbuf_, __intbuf_ + (__rhs.gptr() - __rhs.eback()), - __intbuf_ + (__rhs.egptr() - __rhs.eback())); - else - this->setg((char_type*)__extbuf_, - (char_type*)__extbuf_ + (__rhs.gptr() - __rhs.eback()), - (char_type*)__extbuf_ + (__rhs.egptr() - __rhs.eback())); - } - __rhs.__extbuf_ = 0; - __rhs.__extbufnext_ = 0; - __rhs.__extbufend_ = 0; - __rhs.__ebs_ = 0; - __rhs.__intbuf_ = 0; - __rhs.__ibs_ = 0; - __rhs.__file_ = 0; - __rhs.__st_ = state_type(); - __rhs.__st_last_ = state_type(); - __rhs.__om_ = 0; - __rhs.__cm_ = 0; - __rhs.__owns_eb_ = false; - __rhs.__owns_ib_ = false; - __rhs.setg(0, 0, 0); - __rhs.setp(0, 0); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_filebuf<_CharT, _Traits>& -basic_filebuf<_CharT, _Traits>::operator=(basic_filebuf&& __rhs) -{ - close(); - swap(__rhs); - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -basic_filebuf<_CharT, _Traits>::~basic_filebuf() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - close(); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - } -#endif // _LIBCPP_NO_EXCEPTIONS - if (__owns_eb_) - delete [] __extbuf_; - if (__owns_ib_) - delete [] __intbuf_; -} - -template -void -basic_filebuf<_CharT, _Traits>::swap(basic_filebuf& __rhs) -{ - basic_streambuf::swap(__rhs); - if (__extbuf_ != __extbuf_min_ && __rhs.__extbuf_ != __rhs.__extbuf_min_) - { - _VSTD::swap(__extbuf_, __rhs.__extbuf_); - _VSTD::swap(__extbufnext_, __rhs.__extbufnext_); - _VSTD::swap(__extbufend_, __rhs.__extbufend_); - } - else - { - ptrdiff_t __ln = __extbufnext_ - __extbuf_; - ptrdiff_t __le = __extbufend_ - __extbuf_; - ptrdiff_t __rn = __rhs.__extbufnext_ - __rhs.__extbuf_; - ptrdiff_t __re = __rhs.__extbufend_ - __rhs.__extbuf_; - if (__extbuf_ == __extbuf_min_ && __rhs.__extbuf_ != __rhs.__extbuf_min_) - { - __extbuf_ = __rhs.__extbuf_; - __rhs.__extbuf_ = __rhs.__extbuf_min_; - } - else if (__extbuf_ != __extbuf_min_ && __rhs.__extbuf_ == __rhs.__extbuf_min_) - { - __rhs.__extbuf_ = __extbuf_; - __extbuf_ = __extbuf_min_; - } - __extbufnext_ = __extbuf_ + __rn; - __extbufend_ = __extbuf_ + __re; - __rhs.__extbufnext_ = __rhs.__extbuf_ + __ln; - __rhs.__extbufend_ = __rhs.__extbuf_ + __le; - } - _VSTD::swap(__ebs_, __rhs.__ebs_); - _VSTD::swap(__intbuf_, __rhs.__intbuf_); - _VSTD::swap(__ibs_, __rhs.__ibs_); - _VSTD::swap(__file_, __rhs.__file_); - _VSTD::swap(__cv_, __rhs.__cv_); - _VSTD::swap(__st_, __rhs.__st_); - _VSTD::swap(__st_last_, __rhs.__st_last_); - _VSTD::swap(__om_, __rhs.__om_); - _VSTD::swap(__cm_, __rhs.__cm_); - _VSTD::swap(__owns_eb_, __rhs.__owns_eb_); - _VSTD::swap(__owns_ib_, __rhs.__owns_ib_); - _VSTD::swap(__always_noconv_, __rhs.__always_noconv_); - if (this->eback() == (char_type*)__rhs.__extbuf_min_) - { - ptrdiff_t __n = this->gptr() - this->eback(); - ptrdiff_t __e = this->egptr() - this->eback(); - this->setg((char_type*)__extbuf_min_, - (char_type*)__extbuf_min_ + __n, - (char_type*)__extbuf_min_ + __e); - } - else if (this->pbase() == (char_type*)__rhs.__extbuf_min_) - { - ptrdiff_t __n = this->pptr() - this->pbase(); - ptrdiff_t __e = this->epptr() - this->pbase(); - this->setp((char_type*)__extbuf_min_, - (char_type*)__extbuf_min_ + __e); - this->pbump(__n); - } - if (__rhs.eback() == (char_type*)__extbuf_min_) - { - ptrdiff_t __n = __rhs.gptr() - __rhs.eback(); - ptrdiff_t __e = __rhs.egptr() - __rhs.eback(); - __rhs.setg((char_type*)__rhs.__extbuf_min_, - (char_type*)__rhs.__extbuf_min_ + __n, - (char_type*)__rhs.__extbuf_min_ + __e); - } - else if (__rhs.pbase() == (char_type*)__extbuf_min_) - { - ptrdiff_t __n = __rhs.pptr() - __rhs.pbase(); - ptrdiff_t __e = __rhs.epptr() - __rhs.pbase(); - __rhs.setp((char_type*)__rhs.__extbuf_min_, - (char_type*)__rhs.__extbuf_min_ + __e); - __rhs.pbump(__n); - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(basic_filebuf<_CharT, _Traits>& __x, basic_filebuf<_CharT, _Traits>& __y) -{ - __x.swap(__y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -basic_filebuf<_CharT, _Traits>::is_open() const -{ - return __file_ != 0; -} - -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -template -basic_filebuf<_CharT, _Traits>* -basic_filebuf<_CharT, _Traits>::open(const char* __s, ios_base::openmode __mode) -{ - basic_filebuf<_CharT, _Traits>* __rt = 0; - if (__file_ == 0) - { - __rt = this; - const char* __mdstr; - switch (__mode & ~ios_base::ate) - { - case ios_base::out: - case ios_base::out | ios_base::trunc: - __mdstr = "w"; - break; - case ios_base::out | ios_base::app: - case ios_base::app: - __mdstr = "a"; - break; - case ios_base::in: - __mdstr = "r"; - break; - case ios_base::in | ios_base::out: - __mdstr = "r+"; - break; - case ios_base::in | ios_base::out | ios_base::trunc: - __mdstr = "w+"; - break; - case ios_base::in | ios_base::out | ios_base::app: - case ios_base::in | ios_base::app: - __mdstr = "a+"; - break; - case ios_base::out | ios_base::binary: - case ios_base::out | ios_base::trunc | ios_base::binary: - __mdstr = "wb"; - break; - case ios_base::out | ios_base::app | ios_base::binary: - case ios_base::app | ios_base::binary: - __mdstr = "ab"; - break; - case ios_base::in | ios_base::binary: - __mdstr = "rb"; - break; - case ios_base::in | ios_base::out | ios_base::binary: - __mdstr = "r+b"; - break; - case ios_base::in | ios_base::out | ios_base::trunc | ios_base::binary: - __mdstr = "w+b"; - break; - case ios_base::in | ios_base::out | ios_base::app | ios_base::binary: - case ios_base::in | ios_base::app | ios_base::binary: - __mdstr = "a+b"; - break; - default: - __rt = 0; - break; - } - if (__rt) - { - __file_ = fopen(__s, __mdstr); - if (__file_) - { - __om_ = __mode; - if (__mode & ios_base::ate) - { - if (fseek(__file_, 0, SEEK_END)) - { - fclose(__file_); - __file_ = 0; - __rt = 0; - } - } - } - else - __rt = 0; - } - } - return __rt; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_filebuf<_CharT, _Traits>* -basic_filebuf<_CharT, _Traits>::open(const string& __s, ios_base::openmode __mode) -{ - return open(__s.c_str(), __mode); -} -#endif - -template -basic_filebuf<_CharT, _Traits>* -basic_filebuf<_CharT, _Traits>::close() -{ - basic_filebuf<_CharT, _Traits>* __rt = 0; - if (__file_) - { - __rt = this; - unique_ptr __h(__file_, fclose); - if (sync()) - __rt = 0; - if (fclose(__h.release()) == 0) - __file_ = 0; - else - __rt = 0; - } - return __rt; -} - -template -typename basic_filebuf<_CharT, _Traits>::int_type -basic_filebuf<_CharT, _Traits>::underflow() -{ - if (__file_ == 0) - return traits_type::eof(); - bool __initial = __read_mode(); - char_type __1buf; - if (this->gptr() == 0) - this->setg(&__1buf, &__1buf+1, &__1buf+1); - const size_t __unget_sz = __initial ? 0 : min((this->egptr() - this->eback()) / 2, 4); - int_type __c = traits_type::eof(); - if (this->gptr() == this->egptr()) - { - memmove(this->eback(), this->egptr() - __unget_sz, __unget_sz * sizeof(char_type)); - if (__always_noconv_) - { - size_t __nmemb = static_cast(this->egptr() - this->eback() - __unget_sz); - __nmemb = fread(this->eback() + __unget_sz, 1, __nmemb, __file_); - if (__nmemb != 0) - { - this->setg(this->eback(), - this->eback() + __unget_sz, - this->eback() + __unget_sz + __nmemb); - __c = traits_type::to_int_type(*this->gptr()); - } - } - else - { - memmove(__extbuf_, __extbufnext_, __extbufend_ - __extbufnext_); - __extbufnext_ = __extbuf_ + (__extbufend_ - __extbufnext_); - __extbufend_ = __extbuf_ + (__extbuf_ == __extbuf_min_ ? sizeof(__extbuf_min_) : __ebs_); - size_t __nmemb = _VSTD::min(static_cast(__ibs_ - __unget_sz), - static_cast(__extbufend_ - __extbufnext_)); - codecvt_base::result __r; - __st_last_ = __st_; - size_t __nr = fread((void*)__extbufnext_, 1, __nmemb, __file_); - if (__nr != 0) - { -#ifndef _LIBCPP_NO_EXCEPTIONS - if (!__cv_) - throw bad_cast(); -#endif - __extbufend_ = __extbufnext_ + __nr; - char_type* __inext; - __r = __cv_->in(__st_, __extbuf_, __extbufend_, __extbufnext_, - this->eback() + __unget_sz, - this->eback() + __ibs_, __inext); - if (__r == codecvt_base::noconv) - { - this->setg((char_type*)__extbuf_, (char_type*)__extbuf_, (char_type*)__extbufend_); - __c = traits_type::to_int_type(*this->gptr()); - } - else if (__inext != this->eback() + __unget_sz) - { - this->setg(this->eback(), this->eback() + __unget_sz, __inext); - __c = traits_type::to_int_type(*this->gptr()); - } - } - } - } - else - __c = traits_type::to_int_type(*this->gptr()); - if (this->eback() == &__1buf) - this->setg(0, 0, 0); - return __c; -} - -template -typename basic_filebuf<_CharT, _Traits>::int_type -basic_filebuf<_CharT, _Traits>::pbackfail(int_type __c) -{ - if (__file_ && this->eback() < this->gptr()) - { - if (traits_type::eq_int_type(__c, traits_type::eof())) - { - this->gbump(-1); - return traits_type::not_eof(__c); - } - if ((__om_ & ios_base::out) || - traits_type::eq(traits_type::to_char_type(__c), this->gptr()[-1])) - { - this->gbump(-1); - *this->gptr() = traits_type::to_char_type(__c); - return __c; - } - } - return traits_type::eof(); -} - -template -typename basic_filebuf<_CharT, _Traits>::int_type -basic_filebuf<_CharT, _Traits>::overflow(int_type __c) -{ - if (__file_ == 0) - return traits_type::eof(); - __write_mode(); - char_type __1buf; - char_type* __pb_save = this->pbase(); - char_type* __epb_save = this->epptr(); - if (!traits_type::eq_int_type(__c, traits_type::eof())) - { - if (this->pptr() == 0) - this->setp(&__1buf, &__1buf+1); - *this->pptr() = traits_type::to_char_type(__c); - this->pbump(1); - } - if (this->pptr() != this->pbase()) - { - if (__always_noconv_) - { - size_t __nmemb = static_cast(this->pptr() - this->pbase()); - if (fwrite(this->pbase(), sizeof(char_type), __nmemb, __file_) != __nmemb) - return traits_type::eof(); - } - else - { - char* __extbe = __extbuf_; - codecvt_base::result __r; - do - { -#ifndef _LIBCPP_NO_EXCEPTIONS - if (!__cv_) - throw bad_cast(); -#endif - const char_type* __e; - __r = __cv_->out(__st_, this->pbase(), this->pptr(), __e, - __extbuf_, __extbuf_ + __ebs_, __extbe); - if (__e == this->pbase()) - return traits_type::eof(); - if (__r == codecvt_base::noconv) - { - size_t __nmemb = static_cast(this->pptr() - this->pbase()); - if (fwrite(this->pbase(), 1, __nmemb, __file_) != __nmemb) - return traits_type::eof(); - } - else if (__r == codecvt_base::ok || __r == codecvt_base::partial) - { - size_t __nmemb = static_cast(__extbe - __extbuf_); - if (fwrite(__extbuf_, 1, __nmemb, __file_) != __nmemb) - return traits_type::eof(); - if (__r == codecvt_base::partial) - { - this->setp((char_type*)__e, this->pptr()); - this->pbump(this->epptr() - this->pbase()); - } - } - else - return traits_type::eof(); - } while (__r == codecvt_base::partial); - } - this->setp(__pb_save, __epb_save); - } - return traits_type::not_eof(__c); -} - -template -basic_streambuf<_CharT, _Traits>* -basic_filebuf<_CharT, _Traits>::setbuf(char_type* __s, streamsize __n) -{ - this->setg(0, 0, 0); - this->setp(0, 0); - if (__owns_eb_) - delete [] __extbuf_; - if (__owns_ib_) - delete [] __intbuf_; - __ebs_ = __n; - if (__ebs_ > sizeof(__extbuf_min_)) - { - if (__always_noconv_ && __s) - { - __extbuf_ = (char*)__s; - __owns_eb_ = false; - } - else - { - __extbuf_ = new char[__ebs_]; - __owns_eb_ = true; - } - } - else - { - __extbuf_ = __extbuf_min_; - __ebs_ = sizeof(__extbuf_min_); - __owns_eb_ = false; - } - if (!__always_noconv_) - { - __ibs_ = max(__n, sizeof(__extbuf_min_)); - if (__s && __ibs_ >= sizeof(__extbuf_min_)) - { - __intbuf_ = __s; - __owns_ib_ = false; - } - else - { - __intbuf_ = new char_type[__ibs_]; - __owns_ib_ = true; - } - } - else - { - __ibs_ = 0; - __intbuf_ = 0; - __owns_ib_ = false; - } - return this; -} - -template -typename basic_filebuf<_CharT, _Traits>::pos_type -basic_filebuf<_CharT, _Traits>::seekoff(off_type __off, ios_base::seekdir __way, - ios_base::openmode) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (!__cv_) - throw bad_cast(); -#endif - int __width = __cv_->encoding(); - if (__file_ == 0 || (__width <= 0 && __off != 0) || sync()) - return pos_type(off_type(-1)); - // __width > 0 || __off == 0 - int __whence; - switch (__way) - { - case ios_base::beg: - __whence = SEEK_SET; - break; - case ios_base::cur: - __whence = SEEK_CUR; - break; - case ios_base::end: - __whence = SEEK_END; - break; - default: - return pos_type(off_type(-1)); - } -#if defined(_WIN32) || defined(_NEWLIB_VERSION) - if (fseek(__file_, __width > 0 ? __width * __off : 0, __whence)) - return pos_type(off_type(-1)); - pos_type __r = ftell(__file_); -#else - if (fseeko(__file_, __width > 0 ? __width * __off : 0, __whence)) - return pos_type(off_type(-1)); - pos_type __r = ftello(__file_); -#endif - __r.state(__st_); - return __r; -} - -template -typename basic_filebuf<_CharT, _Traits>::pos_type -basic_filebuf<_CharT, _Traits>::seekpos(pos_type __sp, ios_base::openmode) -{ - if (__file_ == 0 || sync()) - return pos_type(off_type(-1)); -#if defined(_WIN32) || defined(_NEWLIB_VERSION) - if (fseek(__file_, __sp, SEEK_SET)) - return pos_type(off_type(-1)); -#else - if (fseeko(__file_, __sp, SEEK_SET)) - return pos_type(off_type(-1)); -#endif - __st_ = __sp.state(); - return __sp; -} - -template -int -basic_filebuf<_CharT, _Traits>::sync() -{ - if (__file_ == 0) - return 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - if (!__cv_) - throw bad_cast(); -#endif - if (__cm_ & ios_base::out) - { - if (this->pptr() != this->pbase()) - if (overflow() == traits_type::eof()) - return -1; - codecvt_base::result __r; - do - { - char* __extbe; - __r = __cv_->unshift(__st_, __extbuf_, __extbuf_ + __ebs_, __extbe); - size_t __nmemb = static_cast(__extbe - __extbuf_); - if (fwrite(__extbuf_, 1, __nmemb, __file_) != __nmemb) - return -1; - } while (__r == codecvt_base::partial); - if (__r == codecvt_base::error) - return -1; - if (fflush(__file_)) - return -1; - } - else if (__cm_ & ios_base::in) - { - off_type __c; - state_type __state = __st_last_; - bool __update_st = false; - if (__always_noconv_) - __c = this->egptr() - this->gptr(); - else - { - int __width = __cv_->encoding(); - __c = __extbufend_ - __extbufnext_; - if (__width > 0) - __c += __width * (this->egptr() - this->gptr()); - else - { - if (this->gptr() != this->egptr()) - { - const int __off = __cv_->length(__state, __extbuf_, - __extbufnext_, - this->gptr() - this->eback()); - __c += __extbufnext_ - __extbuf_ - __off; - __update_st = true; - } - } - } -#if defined(_WIN32) || defined(_NEWLIB_VERSION) - if (fseek(__file_, -__c, SEEK_CUR)) - return -1; -#else - if (fseeko(__file_, -__c, SEEK_CUR)) - return -1; -#endif - if (__update_st) - __st_ = __state; - __extbufnext_ = __extbufend_ = __extbuf_; - this->setg(0, 0, 0); - __cm_ = 0; - } - return 0; -} - -template -void -basic_filebuf<_CharT, _Traits>::imbue(const locale& __loc) -{ - sync(); - __cv_ = &use_facet >(__loc); - bool __old_anc = __always_noconv_; - __always_noconv_ = __cv_->always_noconv(); - if (__old_anc != __always_noconv_) - { - this->setg(0, 0, 0); - this->setp(0, 0); - // invariant, char_type is char, else we couldn't get here - if (__always_noconv_) // need to dump __intbuf_ - { - if (__owns_eb_) - delete [] __extbuf_; - __owns_eb_ = __owns_ib_; - __ebs_ = __ibs_; - __extbuf_ = (char*)__intbuf_; - __ibs_ = 0; - __intbuf_ = 0; - __owns_ib_ = false; - } - else // need to obtain an __intbuf_. - { // If __extbuf_ is user-supplied, use it, else new __intbuf_ - if (!__owns_eb_ && __extbuf_ != __extbuf_min_) - { - __ibs_ = __ebs_; - __intbuf_ = (char_type*)__extbuf_; - __owns_ib_ = false; - __extbuf_ = new char[__ebs_]; - __owns_eb_ = true; - } - else - { - __ibs_ = __ebs_; - __intbuf_ = new char_type[__ibs_]; - __owns_ib_ = true; - } - } - } -} - -template -bool -basic_filebuf<_CharT, _Traits>::__read_mode() -{ - if (!(__cm_ & ios_base::in)) - { - this->setp(0, 0); - if (__always_noconv_) - this->setg((char_type*)__extbuf_, - (char_type*)__extbuf_ + __ebs_, - (char_type*)__extbuf_ + __ebs_); - else - this->setg(__intbuf_, __intbuf_ + __ibs_, __intbuf_ + __ibs_); - __cm_ = ios_base::in; - return true; - } - return false; -} - -template -void -basic_filebuf<_CharT, _Traits>::__write_mode() -{ - if (!(__cm_ & ios_base::out)) - { - this->setg(0, 0, 0); - if (__ebs_ > sizeof(__extbuf_min_)) - { - if (__always_noconv_) - this->setp((char_type*)__extbuf_, - (char_type*)__extbuf_ + (__ebs_ - 1)); - else - this->setp(__intbuf_, __intbuf_ + (__ibs_ - 1)); - } - else - this->setp(0, 0); - __cm_ = ios_base::out; - } -} - -// basic_ifstream - -template -class _LIBCPP_TYPE_VIS_ONLY basic_ifstream - : public basic_istream<_CharT, _Traits> -{ -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - basic_ifstream(); -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE - explicit basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in); - explicit basic_ifstream(const string& __s, ios_base::openmode __mode = ios_base::in); -#endif -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - basic_ifstream(basic_ifstream&& __rhs); -#endif - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - basic_ifstream& operator=(basic_ifstream&& __rhs); -#endif - void swap(basic_ifstream& __rhs); - - basic_filebuf* rdbuf() const; - bool is_open() const; -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE - void open(const char* __s, ios_base::openmode __mode = ios_base::in); - void open(const string& __s, ios_base::openmode __mode = ios_base::in); -#endif - void close(); - -private: - basic_filebuf __sb_; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ifstream<_CharT, _Traits>::basic_ifstream() - : basic_istream(&__sb_) -{ -} - -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ifstream<_CharT, _Traits>::basic_ifstream(const char* __s, ios_base::openmode __mode) - : basic_istream(&__sb_) -{ - if (__sb_.open(__s, __mode | ios_base::in) == 0) - this->setstate(ios_base::failbit); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ifstream<_CharT, _Traits>::basic_ifstream(const string& __s, ios_base::openmode __mode) - : basic_istream(&__sb_) -{ - if (__sb_.open(__s, __mode | ios_base::in) == 0) - this->setstate(ios_base::failbit); -} -#endif - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ifstream<_CharT, _Traits>::basic_ifstream(basic_ifstream&& __rhs) - : basic_istream(_VSTD::move(__rhs)), - __sb_(_VSTD::move(__rhs.__sb_)) -{ - this->set_rdbuf(&__sb_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ifstream<_CharT, _Traits>& -basic_ifstream<_CharT, _Traits>::operator=(basic_ifstream&& __rhs) -{ - basic_istream::operator=(_VSTD::move(__rhs)); - __sb_ = _VSTD::move(__rhs.__sb_); - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_ifstream<_CharT, _Traits>::swap(basic_ifstream& __rhs) -{ - basic_istream::swap(__rhs); - __sb_.swap(__rhs.__sb_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(basic_ifstream<_CharT, _Traits>& __x, basic_ifstream<_CharT, _Traits>& __y) -{ - __x.swap(__y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_filebuf<_CharT, _Traits>* -basic_ifstream<_CharT, _Traits>::rdbuf() const -{ - return const_cast*>(&__sb_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -basic_ifstream<_CharT, _Traits>::is_open() const -{ - return __sb_.is_open(); -} - -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -template -void -basic_ifstream<_CharT, _Traits>::open(const char* __s, ios_base::openmode __mode) -{ - if (__sb_.open(__s, __mode | ios_base::in)) - this->clear(); - else - this->setstate(ios_base::failbit); -} - -template -void -basic_ifstream<_CharT, _Traits>::open(const string& __s, ios_base::openmode __mode) -{ - if (__sb_.open(__s, __mode | ios_base::in)) - this->clear(); - else - this->setstate(ios_base::failbit); -} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_ifstream<_CharT, _Traits>::close() -{ - if (__sb_.close() == 0) - this->setstate(ios_base::failbit); -} - -// basic_ofstream - -template -class _LIBCPP_TYPE_VIS_ONLY basic_ofstream - : public basic_ostream<_CharT, _Traits> -{ -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - basic_ofstream(); - explicit basic_ofstream(const char* __s, ios_base::openmode __mode = ios_base::out); - explicit basic_ofstream(const string& __s, ios_base::openmode __mode = ios_base::out); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - basic_ofstream(basic_ofstream&& __rhs); -#endif - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - basic_ofstream& operator=(basic_ofstream&& __rhs); -#endif - void swap(basic_ofstream& __rhs); - - basic_filebuf* rdbuf() const; - bool is_open() const; -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE - void open(const char* __s, ios_base::openmode __mode = ios_base::out); - void open(const string& __s, ios_base::openmode __mode = ios_base::out); -#endif - void close(); - -private: - basic_filebuf __sb_; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ofstream<_CharT, _Traits>::basic_ofstream() - : basic_ostream(&__sb_) -{ -} - -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ofstream<_CharT, _Traits>::basic_ofstream(const char* __s, ios_base::openmode __mode) - : basic_ostream(&__sb_) -{ - if (__sb_.open(__s, __mode | ios_base::out) == 0) - this->setstate(ios_base::failbit); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ofstream<_CharT, _Traits>::basic_ofstream(const string& __s, ios_base::openmode __mode) - : basic_ostream(&__sb_) -{ - if (__sb_.open(__s, __mode | ios_base::out) == 0) - this->setstate(ios_base::failbit); -} -#endif - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ofstream<_CharT, _Traits>::basic_ofstream(basic_ofstream&& __rhs) - : basic_ostream(_VSTD::move(__rhs)), - __sb_(_VSTD::move(__rhs.__sb_)) -{ - this->set_rdbuf(&__sb_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ofstream<_CharT, _Traits>& -basic_ofstream<_CharT, _Traits>::operator=(basic_ofstream&& __rhs) -{ - basic_ostream::operator=(_VSTD::move(__rhs)); - __sb_ = _VSTD::move(__rhs.__sb_); - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_ofstream<_CharT, _Traits>::swap(basic_ofstream& __rhs) -{ - basic_ostream::swap(__rhs); - __sb_.swap(__rhs.__sb_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(basic_ofstream<_CharT, _Traits>& __x, basic_ofstream<_CharT, _Traits>& __y) -{ - __x.swap(__y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_filebuf<_CharT, _Traits>* -basic_ofstream<_CharT, _Traits>::rdbuf() const -{ - return const_cast*>(&__sb_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -basic_ofstream<_CharT, _Traits>::is_open() const -{ - return __sb_.is_open(); -} - -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -template -void -basic_ofstream<_CharT, _Traits>::open(const char* __s, ios_base::openmode __mode) -{ - if (__sb_.open(__s, __mode | ios_base::out)) - this->clear(); - else - this->setstate(ios_base::failbit); -} - -template -void -basic_ofstream<_CharT, _Traits>::open(const string& __s, ios_base::openmode __mode) -{ - if (__sb_.open(__s, __mode | ios_base::out)) - this->clear(); - else - this->setstate(ios_base::failbit); -} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_ofstream<_CharT, _Traits>::close() -{ - if (__sb_.close() == 0) - this->setstate(ios_base::failbit); -} - -// basic_fstream - -template -class _LIBCPP_TYPE_VIS_ONLY basic_fstream - : public basic_iostream<_CharT, _Traits> -{ -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - basic_fstream(); -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE - explicit basic_fstream(const char* __s, ios_base::openmode __mode = ios_base::in | ios_base::out); - explicit basic_fstream(const string& __s, ios_base::openmode __mode = ios_base::in | ios_base::out); -#endif -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - basic_fstream(basic_fstream&& __rhs); -#endif - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - basic_fstream& operator=(basic_fstream&& __rhs); -#endif - void swap(basic_fstream& __rhs); - - basic_filebuf* rdbuf() const; - bool is_open() const; -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE - void open(const char* __s, ios_base::openmode __mode = ios_base::in | ios_base::out); - void open(const string& __s, ios_base::openmode __mode = ios_base::in | ios_base::out); -#endif - void close(); - -private: - basic_filebuf __sb_; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_fstream<_CharT, _Traits>::basic_fstream() - : basic_iostream(&__sb_) -{ -} - -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -template -inline _LIBCPP_INLINE_VISIBILITY -basic_fstream<_CharT, _Traits>::basic_fstream(const char* __s, ios_base::openmode __mode) - : basic_iostream(&__sb_) -{ - if (__sb_.open(__s, __mode) == 0) - this->setstate(ios_base::failbit); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_fstream<_CharT, _Traits>::basic_fstream(const string& __s, ios_base::openmode __mode) - : basic_iostream(&__sb_) -{ - if (__sb_.open(__s, __mode) == 0) - this->setstate(ios_base::failbit); -} -#endif - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_fstream<_CharT, _Traits>::basic_fstream(basic_fstream&& __rhs) - : basic_iostream(_VSTD::move(__rhs)), - __sb_(_VSTD::move(__rhs.__sb_)) -{ - this->set_rdbuf(&__sb_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_fstream<_CharT, _Traits>& -basic_fstream<_CharT, _Traits>::operator=(basic_fstream&& __rhs) -{ - basic_iostream::operator=(_VSTD::move(__rhs)); - __sb_ = _VSTD::move(__rhs.__sb_); - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_fstream<_CharT, _Traits>::swap(basic_fstream& __rhs) -{ - basic_iostream::swap(__rhs); - __sb_.swap(__rhs.__sb_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(basic_fstream<_CharT, _Traits>& __x, basic_fstream<_CharT, _Traits>& __y) -{ - __x.swap(__y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_filebuf<_CharT, _Traits>* -basic_fstream<_CharT, _Traits>::rdbuf() const -{ - return const_cast*>(&__sb_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -basic_fstream<_CharT, _Traits>::is_open() const -{ - return __sb_.is_open(); -} - -#ifndef _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -template -void -basic_fstream<_CharT, _Traits>::open(const char* __s, ios_base::openmode __mode) -{ - if (__sb_.open(__s, __mode)) - this->clear(); - else - this->setstate(ios_base::failbit); -} - -template -void -basic_fstream<_CharT, _Traits>::open(const string& __s, ios_base::openmode __mode) -{ - if (__sb_.open(__s, __mode)) - this->clear(); - else - this->setstate(ios_base::failbit); -} -#endif - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_fstream<_CharT, _Traits>::close() -{ - if (__sb_.close() == 0) - this->setstate(ios_base::failbit); -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_FSTREAM diff --git a/libcxx/include/functional b/libcxx/include/functional deleted file mode 100644 index a5a212cc8..000000000 --- a/libcxx/include/functional +++ /dev/null @@ -1,2452 +0,0 @@ -// -*- C++ -*- -//===------------------------ functional ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_FUNCTIONAL -#define _LIBCPP_FUNCTIONAL - -/* - functional synopsis - -namespace std -{ - -template -struct unary_function -{ - typedef Arg argument_type; - typedef Result result_type; -}; - -template -struct binary_function -{ - typedef Arg1 first_argument_type; - typedef Arg2 second_argument_type; - typedef Result result_type; -}; - -template -class reference_wrapper - : public unary_function // if wrapping a unary functor - : public binary_function // if wraping a binary functor -{ -public: - // types - typedef T type; - typedef see below result_type; // Not always defined - - // construct/copy/destroy - reference_wrapper(T&) noexcept; - reference_wrapper(T&&) = delete; // do not bind to temps - reference_wrapper(const reference_wrapper& x) noexcept; - - // assignment - reference_wrapper& operator=(const reference_wrapper& x) noexcept; - - // access - operator T& () const noexcept; - T& get() const noexcept; - - // invoke - template - typename result_of::type - operator() (ArgTypes&&...) const; -}; - -template reference_wrapper ref(T& t) noexcept; -template void ref(const T&& t) = delete; -template reference_wrapper ref(reference_wrappert) noexcept; - -template reference_wrapper cref(const T& t) noexcept; -template void cref(const T&& t) = delete; -template reference_wrapper cref(reference_wrapper t) noexcept; - -template // in C++14 -struct plus : binary_function -{ - T operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct minus : binary_function -{ - T operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct multiplies : binary_function -{ - T operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct divides : binary_function -{ - T operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct modulus : binary_function -{ - T operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct negate : unary_function -{ - T operator()(const T& x) const; -}; - -template // in C++14 -struct equal_to : binary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct not_equal_to : binary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct greater : binary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct less : binary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct greater_equal : binary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct less_equal : binary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct logical_and : binary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct logical_or : binary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct logical_not : unary_function -{ - bool operator()(const T& x) const; -}; - -template // in C++14 -struct bit_and : unary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct bit_or : unary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // in C++14 -struct bit_xor : unary_function -{ - bool operator()(const T& x, const T& y) const; -}; - -template // C++14 -struct bit_xor : unary_function -{ - bool operator()(const T& x) const; -}; - -template -class unary_negate - : public unary_function -{ -public: - explicit unary_negate(const Predicate& pred); - bool operator()(const typename Predicate::argument_type& x) const; -}; - -template unary_negate not1(const Predicate& pred); - -template -class binary_negate - : public binary_function -{ -public: - explicit binary_negate(const Predicate& pred); - bool operator()(const typename Predicate::first_argument_type& x, - const typename Predicate::second_argument_type& y) const; -}; - -template binary_negate not2(const Predicate& pred); - -template struct is_bind_expression; -template struct is_placeholder; - -template - unspecified bind(Fn&&, BoundArgs&&...); -template - unspecified bind(Fn&&, BoundArgs&&...); - -namespace placeholders { - // M is the implementation-defined number of placeholders - extern unspecified _1; - extern unspecified _2; - . - . - . - extern unspecified _Mp; -} - -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); - typename Operation::result_type operator()( typename Operation::second_argument_type& x) const; - typename Operation::result_type operator()(const typename Operation::second_argument_type& x) const; -}; - -template -binder1st bind1st(const Operation& op, const T& x); - -template -class binder2nd - : public unary_function -{ -protected: - Operation op; - typename Operation::second_argument_type value; -public: - binder2nd(const Operation& x, const typename Operation::second_argument_type y); - typename Operation::result_type operator()( typename Operation::first_argument_type& x) const; - typename Operation::result_type operator()(const typename Operation::first_argument_type& x) const; -}; - -template -binder2nd bind2nd(const Operation& op, const T& x); - -template -class pointer_to_unary_function : public unary_function -{ -public: - explicit pointer_to_unary_function(Result (*f)(Arg)); - Result operator()(Arg x) const; -}; - -template -pointer_to_unary_function ptr_fun(Result (*f)(Arg)); - -template -class pointer_to_binary_function : public binary_function -{ -public: - explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2)); - Result operator()(Arg1 x, Arg2 y) const; -}; - -template -pointer_to_binary_function ptr_fun(Result (*f)(Arg1,Arg2)); - -template -class mem_fun_t : public unary_function -{ -public: - explicit mem_fun_t(S (T::*p)()); - S operator()(T* p) const; -}; - -template -class mem_fun1_t : public binary_function -{ -public: - explicit mem_fun1_t(S (T::*p)(A)); - S operator()(T* p, A x) const; -}; - -template mem_fun_t mem_fun(S (T::*f)()); -template mem_fun1_t mem_fun(S (T::*f)(A)); - -template -class mem_fun_ref_t : public unary_function -{ -public: - explicit mem_fun_ref_t(S (T::*p)()); - S operator()(T& p) const; -}; - -template -class mem_fun1_ref_t : public binary_function -{ -public: - explicit mem_fun1_ref_t(S (T::*p)(A)); - S operator()(T& p, A x) const; -}; - -template mem_fun_ref_t mem_fun_ref(S (T::*f)()); -template mem_fun1_ref_t mem_fun_ref(S (T::*f)(A)); - -template -class const_mem_fun_t : public unary_function -{ -public: - explicit const_mem_fun_t(S (T::*p)() const); - S operator()(const T* p) const; -}; - -template -class const_mem_fun1_t : public binary_function -{ -public: - explicit const_mem_fun1_t(S (T::*p)(A) const); - S operator()(const T* p, A x) const; -}; - -template const_mem_fun_t mem_fun(S (T::*f)() const); -template const_mem_fun1_t mem_fun(S (T::*f)(A) const); - -template -class const_mem_fun_ref_t : public unary_function -{ -public: - explicit const_mem_fun_ref_t(S (T::*p)() const); - S operator()(const T& p) const; -}; - -template -class const_mem_fun1_ref_t : public binary_function -{ -public: - explicit const_mem_fun1_ref_t(S (T::*p)(A) const); - S operator()(const T& p, A x) const; -}; - -template const_mem_fun_ref_t mem_fun_ref(S (T::*f)() const); -template const_mem_fun1_ref_t mem_fun_ref(S (T::*f)(A) const); - -template unspecified mem_fn(R T::*); - -class bad_function_call - : public exception -{ -}; - -template class function; // undefined - -template -class function - : public unary_function // iff sizeof...(ArgTypes) == 1 and - // ArgTypes contains T1 - : public binary_function // iff sizeof...(ArgTypes) == 2 and - // ArgTypes contains T1 and T2 -{ -public: - typedef R result_type; - - // construct/copy/destroy: - function() noexcept; - function(nullptr_t) noexcept; - function(const function&); - function(function&&) noexcept; - template - function(F); - template - function(allocator_arg_t, const Alloc&) noexcept; - template - function(allocator_arg_t, const Alloc&, nullptr_t) noexcept; - template - function(allocator_arg_t, const Alloc&, const function&); - template - function(allocator_arg_t, const Alloc&, function&&); - template - function(allocator_arg_t, const Alloc&, F); - - function& operator=(const function&); - function& operator=(function&&) noexcept; - function& operator=(nullptr_t) noexcept; - template - function& operator=(F&&); - template - function& operator=(reference_wrapper) noexcept; - - ~function(); - - // function modifiers: - void swap(function&) noexcept; - template - void assign(F&&, const Alloc&); - - // function capacity: - explicit operator bool() const noexcept; - - // function invocation: - R operator()(ArgTypes...) const; - - // function target access: - const std::type_info& target_type() const noexcept; - template T* target() noexcept; - template const T* target() const noexcept; -}; - -// Null pointer comparisons: -template - bool operator==(const function&, nullptr_t) noexcept; - -template - bool operator==(nullptr_t, const function&) noexcept; - -template - bool operator!=(const function&, nullptr_t) noexcept; - -template - bool operator!=(nullptr_t, const function&) noexcept; - -// specialized algorithms: -template - void swap(function&, function&) noexcept; - -template struct hash; - -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; -template <> struct hash; - -template <> struct hash; -template <> struct hash; -template <> struct hash; - -template struct hash; - -} // std - -POLICY: For non-variadic implementations, the number of arguments is limited - to 3. It is hoped that the need for non-variadic implementations - will be minimal. - -*/ - -#include <__config> -#include -#include -#include -#include -#include - -#include <__functional_base> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY plus : binary_function<_Tp, _Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x + __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY plus -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY minus : binary_function<_Tp, _Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x - __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY minus -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY multiplies : binary_function<_Tp, _Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x * __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY multiplies -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY divides : binary_function<_Tp, _Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x / __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY divides -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY modulus : binary_function<_Tp, _Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x % __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY modulus -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY negate : unary_function<_Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x) const - {return -__x;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY negate -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_Tp&& __x) const - _NOEXCEPT_(noexcept(- _VSTD::forward<_Tp>(__x))) - -> decltype (- _VSTD::forward<_Tp>(__x)) - { return - _VSTD::forward<_Tp>(__x); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY equal_to : binary_function<_Tp, _Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x == __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY equal_to -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY not_equal_to : binary_function<_Tp, _Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x != __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY not_equal_to -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY greater : binary_function<_Tp, _Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x > __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY greater -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -// less in <__functional_base> - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY greater_equal : binary_function<_Tp, _Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x >= __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY greater_equal -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY less_equal : binary_function<_Tp, _Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x <= __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY less_equal -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY logical_and : binary_function<_Tp, _Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x && __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY logical_and -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY logical_or : binary_function<_Tp, _Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x || __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY logical_or -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY logical_not : unary_function<_Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x) const - {return !__x;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY logical_not -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_Tp&& __x) const - _NOEXCEPT_(noexcept(!_VSTD::forward<_Tp>(__x))) - -> decltype (!_VSTD::forward<_Tp>(__x)) - { return !_VSTD::forward<_Tp>(__x); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY bit_and : binary_function<_Tp, _Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x & __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY bit_and -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY bit_or : binary_function<_Tp, _Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x | __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY bit_or -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TYPE_VIS_ONLY bit_xor : binary_function<_Tp, _Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x, const _Tp& __y) const - {return __x ^ __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TYPE_VIS_ONLY bit_xor -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - - -#if _LIBCPP_STD_VER > 11 -template -struct _LIBCPP_TYPE_VIS_ONLY bit_not : unary_function<_Tp, _Tp> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - _Tp operator()(const _Tp& __x) const - {return ~__x;} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY bit_not -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_Tp&& __x) const - _NOEXCEPT_(noexcept(~_VSTD::forward<_Tp>(__x))) - -> decltype (~_VSTD::forward<_Tp>(__x)) - { return ~_VSTD::forward<_Tp>(__x); } - typedef void is_transparent; -}; -#endif - -template -class _LIBCPP_TYPE_VIS_ONLY unary_negate - : public unary_function -{ - _Predicate __pred_; -public: - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - explicit unary_negate(const _Predicate& __pred) - : __pred_(__pred) {} - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const typename _Predicate::argument_type& __x) const - {return !__pred_(__x);} -}; - -template -inline _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY -unary_negate<_Predicate> -not1(const _Predicate& __pred) {return unary_negate<_Predicate>(__pred);} - -template -class _LIBCPP_TYPE_VIS_ONLY binary_negate - : public binary_function -{ - _Predicate __pred_; -public: - _LIBCPP_INLINE_VISIBILITY explicit _LIBCPP_CONSTEXPR_AFTER_CXX11 - binary_negate(const _Predicate& __pred) : __pred_(__pred) {} - - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const typename _Predicate::first_argument_type& __x, - const typename _Predicate::second_argument_type& __y) const - {return !__pred_(__x, __y);} -}; - -template -inline _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY -binary_negate<_Predicate> -not2(const _Predicate& __pred) {return binary_negate<_Predicate>(__pred);} - -template -class _LIBCPP_TYPE_VIS_ONLY binder1st - : public unary_function -{ -protected: - __Operation op; - typename __Operation::first_argument_type value; -public: - _LIBCPP_INLINE_VISIBILITY binder1st(const __Operation& __x, - const typename __Operation::first_argument_type __y) - : op(__x), value(__y) {} - _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() - (typename __Operation::second_argument_type& __x) const - {return op(value, __x);} - _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() - (const typename __Operation::second_argument_type& __x) const - {return op(value, __x);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -binder1st<__Operation> -bind1st(const __Operation& __op, const _Tp& __x) - {return binder1st<__Operation>(__op, __x);} - -template -class _LIBCPP_TYPE_VIS_ONLY binder2nd - : public unary_function -{ -protected: - __Operation op; - typename __Operation::second_argument_type value; -public: - _LIBCPP_INLINE_VISIBILITY - binder2nd(const __Operation& __x, const typename __Operation::second_argument_type __y) - : op(__x), value(__y) {} - _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() - ( typename __Operation::first_argument_type& __x) const - {return op(__x, value);} - _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() - (const typename __Operation::first_argument_type& __x) const - {return op(__x, value);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -binder2nd<__Operation> -bind2nd(const __Operation& __op, const _Tp& __x) - {return binder2nd<__Operation>(__op, __x);} - -template -class _LIBCPP_TYPE_VIS_ONLY pointer_to_unary_function - : public unary_function<_Arg, _Result> -{ - _Result (*__f_)(_Arg); -public: - _LIBCPP_INLINE_VISIBILITY explicit pointer_to_unary_function(_Result (*__f)(_Arg)) - : __f_(__f) {} - _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg __x) const - {return __f_(__x);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -pointer_to_unary_function<_Arg,_Result> -ptr_fun(_Result (*__f)(_Arg)) - {return pointer_to_unary_function<_Arg,_Result>(__f);} - -template -class _LIBCPP_TYPE_VIS_ONLY pointer_to_binary_function - : public binary_function<_Arg1, _Arg2, _Result> -{ - _Result (*__f_)(_Arg1, _Arg2); -public: - _LIBCPP_INLINE_VISIBILITY explicit pointer_to_binary_function(_Result (*__f)(_Arg1, _Arg2)) - : __f_(__f) {} - _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg1 __x, _Arg2 __y) const - {return __f_(__x, __y);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -pointer_to_binary_function<_Arg1,_Arg2,_Result> -ptr_fun(_Result (*__f)(_Arg1,_Arg2)) - {return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f);} - -template -class _LIBCPP_TYPE_VIS_ONLY mem_fun_t : public unary_function<_Tp*, _Sp> -{ - _Sp (_Tp::*__p_)(); -public: - _LIBCPP_INLINE_VISIBILITY explicit mem_fun_t(_Sp (_Tp::*__p)()) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p) const - {return (__p->*__p_)();} -}; - -template -class _LIBCPP_TYPE_VIS_ONLY mem_fun1_t : public binary_function<_Tp*, _Ap, _Sp> -{ - _Sp (_Tp::*__p_)(_Ap); -public: - _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_t(_Sp (_Tp::*__p)(_Ap)) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p, _Ap __x) const - {return (__p->*__p_)(__x);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -mem_fun_t<_Sp,_Tp> -mem_fun(_Sp (_Tp::*__f)()) - {return mem_fun_t<_Sp,_Tp>(__f);} - -template -inline _LIBCPP_INLINE_VISIBILITY -mem_fun1_t<_Sp,_Tp,_Ap> -mem_fun(_Sp (_Tp::*__f)(_Ap)) - {return mem_fun1_t<_Sp,_Tp,_Ap>(__f);} - -template -class _LIBCPP_TYPE_VIS_ONLY mem_fun_ref_t : public unary_function<_Tp, _Sp> -{ - _Sp (_Tp::*__p_)(); -public: - _LIBCPP_INLINE_VISIBILITY explicit mem_fun_ref_t(_Sp (_Tp::*__p)()) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p) const - {return (__p.*__p_)();} -}; - -template -class _LIBCPP_TYPE_VIS_ONLY mem_fun1_ref_t : public binary_function<_Tp, _Ap, _Sp> -{ - _Sp (_Tp::*__p_)(_Ap); -public: - _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap)) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p, _Ap __x) const - {return (__p.*__p_)(__x);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -mem_fun_ref_t<_Sp,_Tp> -mem_fun_ref(_Sp (_Tp::*__f)()) - {return mem_fun_ref_t<_Sp,_Tp>(__f);} - -template -inline _LIBCPP_INLINE_VISIBILITY -mem_fun1_ref_t<_Sp,_Tp,_Ap> -mem_fun_ref(_Sp (_Tp::*__f)(_Ap)) - {return mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);} - -template -class _LIBCPP_TYPE_VIS_ONLY const_mem_fun_t : public unary_function -{ - _Sp (_Tp::*__p_)() const; -public: - _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_t(_Sp (_Tp::*__p)() const) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p) const - {return (__p->*__p_)();} -}; - -template -class _LIBCPP_TYPE_VIS_ONLY const_mem_fun1_t : public binary_function -{ - _Sp (_Tp::*__p_)(_Ap) const; -public: - _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_t(_Sp (_Tp::*__p)(_Ap) const) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p, _Ap __x) const - {return (__p->*__p_)(__x);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -const_mem_fun_t<_Sp,_Tp> -mem_fun(_Sp (_Tp::*__f)() const) - {return const_mem_fun_t<_Sp,_Tp>(__f);} - -template -inline _LIBCPP_INLINE_VISIBILITY -const_mem_fun1_t<_Sp,_Tp,_Ap> -mem_fun(_Sp (_Tp::*__f)(_Ap) const) - {return const_mem_fun1_t<_Sp,_Tp,_Ap>(__f);} - -template -class _LIBCPP_TYPE_VIS_ONLY const_mem_fun_ref_t : public unary_function<_Tp, _Sp> -{ - _Sp (_Tp::*__p_)() const; -public: - _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_ref_t(_Sp (_Tp::*__p)() const) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p) const - {return (__p.*__p_)();} -}; - -template -class _LIBCPP_TYPE_VIS_ONLY const_mem_fun1_ref_t - : public binary_function<_Tp, _Ap, _Sp> -{ - _Sp (_Tp::*__p_)(_Ap) const; -public: - _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap) const) - : __p_(__p) {} - _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p, _Ap __x) const - {return (__p.*__p_)(__x);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -const_mem_fun_ref_t<_Sp,_Tp> -mem_fun_ref(_Sp (_Tp::*__f)() const) - {return const_mem_fun_ref_t<_Sp,_Tp>(__f);} - -template -inline _LIBCPP_INLINE_VISIBILITY -const_mem_fun1_ref_t<_Sp,_Tp,_Ap> -mem_fun_ref(_Sp (_Tp::*__f)(_Ap) const) - {return const_mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);} - -#ifdef _LIBCPP_HAS_NO_VARIADICS - -#include <__functional_03> - -#else // _LIBCPP_HAS_NO_VARIADICS - -template -class __mem_fn - : public __weak_result_type<_Tp> -{ -public: - // types - typedef _Tp type; -private: - type __f_; - -public: - _LIBCPP_INLINE_VISIBILITY __mem_fn(type __f) : __f_(__f) {} - - // invoke - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return::type - operator() (_ArgTypes&&... __args) const - { - return __invoke(__f_, _VSTD::forward<_ArgTypes>(__args)...); - } -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -__mem_fn<_Rp _Tp::*> -mem_fn(_Rp _Tp::* __pm) -{ - return __mem_fn<_Rp _Tp::*>(__pm); -} - -// bad_function_call - -class _LIBCPP_EXCEPTION_ABI bad_function_call - : public exception -{ -}; - -template class _LIBCPP_TYPE_VIS_ONLY function; // undefined - -namespace __function -{ - -template -struct __maybe_derive_from_unary_function -{ -}; - -template -struct __maybe_derive_from_unary_function<_Rp(_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __maybe_derive_from_binary_function -{ -}; - -template -struct __maybe_derive_from_binary_function<_Rp(_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template class __base; - -template -class __base<_Rp(_ArgTypes...)> -{ - __base(const __base&); - __base& operator=(const __base&); -public: - _LIBCPP_INLINE_VISIBILITY __base() {} - _LIBCPP_INLINE_VISIBILITY virtual ~__base() {} - virtual __base* __clone() const = 0; - virtual void __clone(__base*) const = 0; - virtual void destroy() _NOEXCEPT = 0; - virtual void destroy_deallocate() _NOEXCEPT = 0; - virtual _Rp operator()(_ArgTypes&& ...) = 0; -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const _NOEXCEPT = 0; - virtual const std::type_info& target_type() const _NOEXCEPT = 0; -#endif // _LIBCPP_NO_RTTI -}; - -template class __func; - -template -class __func<_Fp, _Alloc, _Rp(_ArgTypes...)> - : public __base<_Rp(_ArgTypes...)> -{ - __compressed_pair<_Fp, _Alloc> __f_; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __func(_Fp&& __f) - : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)), - _VSTD::forward_as_tuple()) {} - _LIBCPP_INLINE_VISIBILITY - explicit __func(const _Fp& __f, const _Alloc& __a) - : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f), - _VSTD::forward_as_tuple(__a)) {} - - _LIBCPP_INLINE_VISIBILITY - explicit __func(const _Fp& __f, _Alloc&& __a) - : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f), - _VSTD::forward_as_tuple(_VSTD::move(__a))) {} - - _LIBCPP_INLINE_VISIBILITY - explicit __func(_Fp&& __f, _Alloc&& __a) - : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)), - _VSTD::forward_as_tuple(_VSTD::move(__a))) {} - virtual __base<_Rp(_ArgTypes...)>* __clone() const; - virtual void __clone(__base<_Rp(_ArgTypes...)>*) const; - virtual void destroy() _NOEXCEPT; - virtual void destroy_deallocate() _NOEXCEPT; - virtual _Rp operator()(_ArgTypes&& ... __arg); -#ifndef _LIBCPP_NO_RTTI - virtual const void* target(const type_info&) const _NOEXCEPT; - virtual const std::type_info& target_type() const _NOEXCEPT; -#endif // _LIBCPP_NO_RTTI -}; - -template -__base<_Rp(_ArgTypes...)>* -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone() const -{ - typedef allocator_traits<_Alloc> __alloc_traits; - typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; - _Ap __a(__f_.second()); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); - return __hold.release(); -} - -template -void -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone(__base<_Rp(_ArgTypes...)>* __p) const -{ - ::new (__p) __func(__f_.first(), __f_.second()); -} - -template -void -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy() _NOEXCEPT -{ - __f_.~__compressed_pair<_Fp, _Alloc>(); -} - -template -void -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy_deallocate() _NOEXCEPT -{ - typedef allocator_traits<_Alloc> __alloc_traits; - typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; - _Ap __a(__f_.second()); - __f_.~__compressed_pair<_Fp, _Alloc>(); - __a.deallocate(this, 1); -} - -template -_Rp -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::operator()(_ArgTypes&& ... __arg) -{ - typedef __invoke_void_return_wrapper<_Rp> _Invoker; - return _Invoker::__call(__f_.first(), _VSTD::forward<_ArgTypes>(__arg)...); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const void* -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target(const type_info& __ti) const _NOEXCEPT -{ - if (__ti == typeid(_Fp)) - return &__f_.first(); - return (const void*)0; -} - -template -const std::type_info& -__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target_type() const _NOEXCEPT -{ - return typeid(_Fp); -} - -#endif // _LIBCPP_NO_RTTI - -} // __function - -template -class _LIBCPP_TYPE_VIS_ONLY function<_Rp(_ArgTypes...)> - : public __function::__maybe_derive_from_unary_function<_Rp(_ArgTypes...)>, - public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)> -{ - typedef __function::__base<_Rp(_ArgTypes...)> __base; - typename aligned_storage<3*sizeof(void*)>::type __buf_; - __base* __f_; - - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const _Fp&) {return true;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (*__p)(_Ap...)) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_Ap...)) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_Ap...) const) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_Ap...) volatile) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(_R2 (_Cp::*__p)(_Ap...) const volatile) {return __p;} - template - _LIBCPP_INLINE_VISIBILITY - static bool __not_null(const function<_R2(_Ap...)>& __p) {return !!__p;} - - template ::value && - __invokable<_Fp&, _ArgTypes...>::value> - struct __callable; - template - struct __callable<_Fp, true> - { - static const bool value = is_same::value || - is_convertible::type, - _Rp>::value; - }; - template - struct __callable<_Fp, false> - { - static const bool value = false; - }; -public: - typedef _Rp result_type; - - // construct/copy/destroy: - _LIBCPP_INLINE_VISIBILITY - function() _NOEXCEPT : __f_(0) {} - _LIBCPP_INLINE_VISIBILITY - function(nullptr_t) _NOEXCEPT : __f_(0) {} - function(const function&); - function(function&&) _NOEXCEPT; - template - function(_Fp, typename enable_if - < - __callable<_Fp>::value && - !is_same<_Fp, function>::value - >::type* = 0); - - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&) _NOEXCEPT : __f_(0) {} - template - _LIBCPP_INLINE_VISIBILITY - function(allocator_arg_t, const _Alloc&, nullptr_t) _NOEXCEPT : __f_(0) {} - template - function(allocator_arg_t, const _Alloc&, const function&); - template - function(allocator_arg_t, const _Alloc&, function&&); - template - function(allocator_arg_t, const _Alloc& __a, _Fp __f, - typename enable_if<__callable<_Fp>::value>::type* = 0); - - function& operator=(const function&); - function& operator=(function&&) _NOEXCEPT; - function& operator=(nullptr_t) _NOEXCEPT; - template - typename enable_if - < - __callable::type>::value && - !is_same::type, function>::value, - function& - >::type - operator=(_Fp&&); - - ~function(); - - // function modifiers: - void swap(function&) _NOEXCEPT; - template - _LIBCPP_INLINE_VISIBILITY - void assign(_Fp&& __f, const _Alloc& __a) - {function(allocator_arg, __a, _VSTD::forward<_Fp>(__f)).swap(*this);} - - // function capacity: - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_EXPLICIT operator bool() const _NOEXCEPT {return __f_;} - - // deleted overloads close possible hole in the type system - template - bool operator==(const function<_R2(_ArgTypes2...)>&) const = delete; - template - bool operator!=(const function<_R2(_ArgTypes2...)>&) const = delete; -public: - // function invocation: - _Rp operator()(_ArgTypes...) const; - -#ifndef _LIBCPP_NO_RTTI - // function target access: - const std::type_info& target_type() const _NOEXCEPT; - template _Tp* target() _NOEXCEPT; - template const _Tp* target() const _NOEXCEPT; -#endif // _LIBCPP_NO_RTTI -}; - -template -function<_Rp(_ArgTypes...)>::function(const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -template -function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, - const function& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (const __base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - __f_ = __f.__f_->__clone(); -} - -template -function<_Rp(_ArgTypes...)>::function(function&& __f) _NOEXCEPT -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - { - __f_ = __f.__f_; - __f.__f_ = 0; - } -} - -template -template -function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, - function&& __f) -{ - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - { - __f_ = __f.__f_; - __f.__f_ = 0; - } -} - -template -template -function<_Rp(_ArgTypes...)>::function(_Fp __f, - typename enable_if - < - __callable<_Fp>::value && - !is_same<_Fp, function>::value - >::type*) - : __f_(0) -{ - if (__not_null(__f)) - { - typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_ArgTypes...)> _FF; - if (sizeof(_FF) <= sizeof(__buf_) && is_nothrow_copy_constructible<_Fp>::value) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(_VSTD::move(__f)); - } - else - { - typedef allocator<_FF> _Ap; - _Ap __a; - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(_VSTD::move(__f), allocator<_Fp>(__a)); - __f_ = __hold.release(); - } - } -} - -template -template -function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, - typename enable_if<__callable<_Fp>::value>::type*) - : __f_(0) -{ - typedef allocator_traits<_Alloc> __alloc_traits; - if (__not_null(__f)) - { - typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _FF; - typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; - _Ap __a(__a0); - if (sizeof(_FF) <= sizeof(__buf_) && - is_nothrow_copy_constructible<_Fp>::value && is_nothrow_copy_constructible<_Ap>::value) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(_VSTD::move(__f), _Alloc(__a)); - } - else - { - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(_VSTD::move(__f), _Alloc(__a)); - __f_ = __hold.release(); - } - } -} - -template -function<_Rp(_ArgTypes...)>& -function<_Rp(_ArgTypes...)>::operator=(const function& __f) -{ - function(__f).swap(*this); - return *this; -} - -template -function<_Rp(_ArgTypes...)>& -function<_Rp(_ArgTypes...)>::operator=(function&& __f) _NOEXCEPT -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); - __f_ = 0; - if (__f.__f_ == 0) - __f_ = 0; - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__clone(__f_); - } - else - { - __f_ = __f.__f_; - __f.__f_ = 0; - } - return *this; -} - -template -function<_Rp(_ArgTypes...)>& -function<_Rp(_ArgTypes...)>::operator=(nullptr_t) _NOEXCEPT -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); - __f_ = 0; - return *this; -} - -template -template -typename enable_if -< - function<_Rp(_ArgTypes...)>::template __callable::type>::value && - !is_same::type, function<_Rp(_ArgTypes...)>>::value, - function<_Rp(_ArgTypes...)>& ->::type -function<_Rp(_ArgTypes...)>::operator=(_Fp&& __f) -{ - function(_VSTD::forward<_Fp>(__f)).swap(*this); - return *this; -} - -template -function<_Rp(_ArgTypes...)>::~function() -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); -} - -template -void -function<_Rp(_ArgTypes...)>::swap(function& __f) _NOEXCEPT -{ - if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) - { - typename aligned_storage::type __tempbuf; - __base* __t = (__base*)&__tempbuf; - __f_->__clone(__t); - __f_->destroy(); - __f_ = 0; - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = 0; - __f_ = (__base*)&__buf_; - __t->__clone((__base*)&__f.__buf_); - __t->destroy(); - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f_ == (__base*)&__buf_) - { - __f_->__clone((__base*)&__f.__buf_); - __f_->destroy(); - __f_ = __f.__f_; - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f.__f_->__clone((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = __f_; - __f_ = (__base*)&__buf_; - } - else - _VSTD::swap(__f_, __f.__f_); -} - -template -_Rp -function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) const -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__f_ == 0) - throw bad_function_call(); -#endif // _LIBCPP_NO_EXCEPTIONS - return (*__f_)(_VSTD::forward<_ArgTypes>(__arg)...); -} - -#ifndef _LIBCPP_NO_RTTI - -template -const std::type_info& -function<_Rp(_ArgTypes...)>::target_type() const _NOEXCEPT -{ - if (__f_ == 0) - return typeid(void); - return __f_->target_type(); -} - -template -template -_Tp* -function<_Rp(_ArgTypes...)>::target() _NOEXCEPT -{ - if (__f_ == 0) - return (_Tp*)0; - return (_Tp*)__f_->target(typeid(_Tp)); -} - -template -template -const _Tp* -function<_Rp(_ArgTypes...)>::target() const _NOEXCEPT -{ - if (__f_ == 0) - return (const _Tp*)0; - return (const _Tp*)__f_->target(typeid(_Tp)); -} - -#endif // _LIBCPP_NO_RTTI - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return !__f;} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return !__f;} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return (bool)__f;} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return (bool)__f;} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(function<_Rp(_ArgTypes...)>& __x, function<_Rp(_ArgTypes...)>& __y) _NOEXCEPT -{return __x.swap(__y);} - -template struct __is_bind_expression : public false_type {}; -template struct _LIBCPP_TYPE_VIS_ONLY is_bind_expression - : public __is_bind_expression::type> {}; - -template struct __is_placeholder : public integral_constant {}; -template struct _LIBCPP_TYPE_VIS_ONLY is_placeholder - : public __is_placeholder::type> {}; - -namespace placeholders -{ - -template struct __ph {}; - -_LIBCPP_FUNC_VIS extern __ph<1> _1; -_LIBCPP_FUNC_VIS extern __ph<2> _2; -_LIBCPP_FUNC_VIS extern __ph<3> _3; -_LIBCPP_FUNC_VIS extern __ph<4> _4; -_LIBCPP_FUNC_VIS extern __ph<5> _5; -_LIBCPP_FUNC_VIS extern __ph<6> _6; -_LIBCPP_FUNC_VIS extern __ph<7> _7; -_LIBCPP_FUNC_VIS extern __ph<8> _8; -_LIBCPP_FUNC_VIS extern __ph<9> _9; -_LIBCPP_FUNC_VIS extern __ph<10> _10; - -} // placeholders - -template -struct __is_placeholder > - : public integral_constant {}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_Tp& -__mu(reference_wrapper<_Tp> __t, _Uj&) -{ - return __t.get(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __invoke_of<_Ti&, _Uj...>::type -__mu_expand(_Ti& __ti, tuple<_Uj...>& __uj, __tuple_indices<_Indx...>) -{ - return __ti(_VSTD::forward<_Uj>(_VSTD::get<_Indx>(__uj))...); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __lazy_enable_if -< - is_bind_expression<_Ti>::value, - __invoke_of<_Ti&, _Uj...> ->::type -__mu(_Ti& __ti, tuple<_Uj...>& __uj) -{ - typedef typename __make_tuple_indices::type __indices; - return __mu_expand(__ti, __uj, __indices()); -} - -template -struct __mu_return2 {}; - -template -struct __mu_return2 -{ - typedef typename tuple_element::value - 1, _Uj>::type type; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - 0 < is_placeholder<_Ti>::value, - typename __mu_return2<0 < is_placeholder<_Ti>::value, _Ti, _Uj>::type ->::type -__mu(_Ti&, _Uj& __uj) -{ - const size_t _Indx = is_placeholder<_Ti>::value - 1; - return _VSTD::forward::type>(_VSTD::get<_Indx>(__uj)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename enable_if -< - !is_bind_expression<_Ti>::value && - is_placeholder<_Ti>::value == 0 && - !__is_reference_wrapper<_Ti>::value, - _Ti& ->::type -__mu(_Ti& __ti, _Uj&) -{ - return __ti; -} - -template -struct ____mu_return; - -template -struct ____mu_return_invokable // false -{ - typedef __nat type; -}; - -template -struct ____mu_return_invokable -{ - typedef typename __invoke_of<_Ti&, _Uj...>::type type; -}; - -template -struct ____mu_return<_Ti, false, true, false, tuple<_Uj...> > - : public ____mu_return_invokable<__invokable<_Ti&, _Uj...>::value, _Ti, _Uj...> -{ -}; - -template -struct ____mu_return<_Ti, false, false, true, _TupleUj> -{ - typedef typename tuple_element::value - 1, - _TupleUj>::type&& type; -}; - -template -struct ____mu_return<_Ti, true, false, false, _TupleUj> -{ - typedef typename _Ti::type& type; -}; - -template -struct ____mu_return<_Ti, false, false, false, _TupleUj> -{ - typedef _Ti& type; -}; - -template -struct __mu_return - : public ____mu_return<_Ti, - __is_reference_wrapper<_Ti>::value, - is_bind_expression<_Ti>::value, - 0 < is_placeholder<_Ti>::value && - is_placeholder<_Ti>::value <= tuple_size<_TupleUj>::value, - _TupleUj> -{ -}; - -template -struct _is_valid_bind_return -{ - static const bool value = false; -}; - -template -struct _is_valid_bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj> -{ - static const bool value = __invokable<_Fp, - typename __mu_return<_BoundArgs, _TupleUj>::type...>::value; -}; - -template -struct _is_valid_bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj> -{ - static const bool value = __invokable<_Fp, - typename __mu_return::type...>::value; -}; - -template ::value> -struct __bind_return; - -template -struct __bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj, true> -{ - typedef typename __invoke_of - < - _Fp&, - typename __mu_return - < - _BoundArgs, - _TupleUj - >::type... - >::type type; -}; - -template -struct __bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj, true> -{ - typedef typename __invoke_of - < - _Fp&, - typename __mu_return - < - const _BoundArgs, - _TupleUj - >::type... - >::type type; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __bind_return<_Fp, _BoundArgs, _Args>::type -__apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>, - _Args&& __args) -{ - return __invoke(__f, __mu(_VSTD::get<_Indx>(__bound_args), __args)...); -} - -template -class __bind - : public __weak_result_type::type> -{ -protected: - typedef typename decay<_Fp>::type _Fd; - typedef tuple::type...> _Td; -private: - _Fd __f_; - _Td __bound_args_; - - typedef typename __make_tuple_indices::type __indices; -public: -#ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS - - _LIBCPP_INLINE_VISIBILITY - __bind(const __bind& __b) - : __f_(__b.__f_), - __bound_args_(__b.__bound_args_) {} - - _LIBCPP_INLINE_VISIBILITY - __bind& operator=(const __bind& __b) - { - __f_ = __b.__f_; - __bound_args_ = __b.__bound_args_; - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - __bind(__bind&& __b) - : __f_(_VSTD::move(__b.__f_)), - __bound_args_(_VSTD::move(__b.__bound_args_)) {} - - _LIBCPP_INLINE_VISIBILITY - __bind& operator=(__bind&& __b) - { - __f_ = _VSTD::move(__b.__f_); - __bound_args_ = _VSTD::move(__b.__bound_args_); - return *this; - } - -#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS - - template ::value && - !is_same::type, - __bind>::value - >::type> - _LIBCPP_INLINE_VISIBILITY - explicit __bind(_Gp&& __f, _BA&& ...__bound_args) - : __f_(_VSTD::forward<_Gp>(__f)), - __bound_args_(_VSTD::forward<_BA>(__bound_args)...) {} - - template - _LIBCPP_INLINE_VISIBILITY - typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type - operator()(_Args&& ...__args) - { - return __apply_functor(__f_, __bound_args_, __indices(), - tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...)); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __bind_return >::type - operator()(_Args&& ...__args) const - { - return __apply_functor(__f_, __bound_args_, __indices(), - tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...)); - } -}; - -template -struct __is_bind_expression<__bind<_Fp, _BoundArgs...> > : public true_type {}; - -template -class __bind_r - : public __bind<_Fp, _BoundArgs...> -{ - typedef __bind<_Fp, _BoundArgs...> base; - typedef typename base::_Fd _Fd; - typedef typename base::_Td _Td; -public: - typedef _Rp result_type; - -#ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS - - _LIBCPP_INLINE_VISIBILITY - __bind_r(const __bind_r& __b) - : base(_VSTD::forward(__b)) {} - - _LIBCPP_INLINE_VISIBILITY - __bind_r& operator=(const __bind_r& __b) - { - base::operator=(_VSTD::forward(__b)); - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - __bind_r(__bind_r&& __b) - : base(_VSTD::forward(__b)) {} - - _LIBCPP_INLINE_VISIBILITY - __bind_r& operator=(__bind_r&& __b) - { - base::operator=(_VSTD::forward(__b)); - return *this; - } - -#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS - - template ::value && - !is_same::type, - __bind_r>::value - >::type> - _LIBCPP_INLINE_VISIBILITY - explicit __bind_r(_Gp&& __f, _BA&& ...__bound_args) - : base(_VSTD::forward<_Gp>(__f), - _VSTD::forward<_BA>(__bound_args)...) {} - - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if - < - is_convertible >::type, - result_type>::value, - result_type - >::type - operator()(_Args&& ...__args) - { - return base::operator()(_VSTD::forward<_Args>(__args)...); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if - < - is_convertible >::type, - result_type>::value, - result_type - >::type - operator()(_Args&& ...__args) const - { - return base::operator()(_VSTD::forward<_Args>(__args)...); - } -}; - -template -struct __is_bind_expression<__bind_r<_Rp, _Fp, _BoundArgs...> > : public true_type {}; - -template -inline _LIBCPP_INLINE_VISIBILITY -__bind<_Fp, _BoundArgs...> -bind(_Fp&& __f, _BoundArgs&&... __bound_args) -{ - typedef __bind<_Fp, _BoundArgs...> type; - return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__bind_r<_Rp, _Fp, _BoundArgs...> -bind(_Fp&& __f, _BoundArgs&&... __bound_args) -{ - typedef __bind_r<_Rp, _Fp, _BoundArgs...> type; - return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...); -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(bool __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(char __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(signed char __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned char __v) const _NOEXCEPT {return static_cast(__v);} -}; - -#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(char16_t __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(char32_t __v) const _NOEXCEPT {return static_cast(__v);} -}; - -#endif // _LIBCPP_HAS_NO_UNICODE_CHARS - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(wchar_t __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(short __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned short __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(int __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned int __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(long __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(unsigned long __v) const _NOEXCEPT {return static_cast(__v);} -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public __scalar_hash -{ -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public __scalar_hash -{ -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public __scalar_hash -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(float __v) const _NOEXCEPT - { - // -0.0 and 0.0 should return same hash - if (__v == 0) - return 0; - return __scalar_hash::operator()(__v); - } -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public __scalar_hash -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(double __v) const _NOEXCEPT - { - // -0.0 and 0.0 should return same hash - if (__v == 0) - return 0; - return __scalar_hash::operator()(__v); - } -}; - -template <> -struct _LIBCPP_TYPE_VIS_ONLY hash - : public __scalar_hash -{ - _LIBCPP_INLINE_VISIBILITY - size_t operator()(long double __v) const _NOEXCEPT - { - // -0.0 and 0.0 should return same hash - if (__v == 0) - return 0; -#if defined(__i386__) - // Zero out padding bits - union - { - long double __t; - struct - { - size_t __a; - size_t __b; - size_t __c; - size_t __d; - }; - } __u; - __u.__a = 0; - __u.__b = 0; - __u.__c = 0; - __u.__d = 0; - __u.__t = __v; - return __u.__a ^ __u.__b ^ __u.__c ^ __u.__d; -#elif defined(__x86_64__) - // Zero out padding bits - union - { - long double __t; - struct - { - size_t __a; - size_t __b; - }; - } __u; - __u.__a = 0; - __u.__b = 0; - __u.__t = __v; - return __u.__a ^ __u.__b; -#else - return __scalar_hash::operator()(__v); -#endif - } -}; - -#if _LIBCPP_STD_VER > 11 -template -struct _LIBCPP_TYPE_VIS_ONLY hash - : public unary_function<_Tp, size_t> -{ - static_assert(is_enum<_Tp>::value, "This hash only works for enumeration types"); - - _LIBCPP_INLINE_VISIBILITY - size_t operator()(_Tp __v) const _NOEXCEPT - { - typedef typename underlying_type<_Tp>::type type; - return hash{}(static_cast(__v)); - } -}; -#endif - -// struct hash in - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_FUNCTIONAL diff --git a/libcxx/include/future b/libcxx/include/future deleted file mode 100644 index ad7af72b1..000000000 --- a/libcxx/include/future +++ /dev/null @@ -1,2629 +0,0 @@ -// -*- C++ -*- -//===--------------------------- future -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_FUTURE -#define _LIBCPP_FUTURE - -/* - future synopsis - -namespace std -{ - -enum class future_errc -{ - future_already_retrieved = 1, - promise_already_satisfied, - no_state, - broken_promise -}; - -enum class launch -{ - async = 1, - deferred = 2, - any = async | deferred -}; - -enum class future_status -{ - ready, - timeout, - deferred -}; - -template <> struct is_error_code_enum : public true_type { }; -error_code make_error_code(future_errc e) noexcept; -error_condition make_error_condition(future_errc e) noexcept; - -const error_category& future_category() noexcept; - -class future_error - : public logic_error -{ -public: - future_error(error_code ec); // exposition only - - const error_code& code() const noexcept; - const char* what() const noexcept; -}; - -template -class promise -{ -public: - promise(); - template - promise(allocator_arg_t, const Allocator& a); - promise(promise&& rhs) noexcept; - promise(const promise& rhs) = delete; - ~promise(); - - // assignment - promise& operator=(promise&& rhs) noexcept; - promise& operator=(const promise& rhs) = delete; - void swap(promise& other) noexcept; - - // retrieving the result - future get_future(); - - // setting the result - void set_value(const R& r); - void set_value(R&& r); - void set_exception(exception_ptr p); - - // setting the result with deferred notification - void set_value_at_thread_exit(const R& r); - void set_value_at_thread_exit(R&& r); - void set_exception_at_thread_exit(exception_ptr p); -}; - -template -class promise -{ -public: - promise(); - template - promise(allocator_arg_t, const Allocator& a); - promise(promise&& rhs) noexcept; - promise(const promise& rhs) = delete; - ~promise(); - - // assignment - promise& operator=(promise&& rhs) noexcept; - promise& operator=(const promise& rhs) = delete; - void swap(promise& other) noexcept; - - // retrieving the result - future get_future(); - - // setting the result - void set_value(R& r); - void set_exception(exception_ptr p); - - // setting the result with deferred notification - void set_value_at_thread_exit(R&); - void set_exception_at_thread_exit(exception_ptr p); -}; - -template <> -class promise -{ -public: - promise(); - template - promise(allocator_arg_t, const Allocator& a); - promise(promise&& rhs) noexcept; - promise(const promise& rhs) = delete; - ~promise(); - - // assignment - promise& operator=(promise&& rhs) noexcept; - promise& operator=(const promise& rhs) = delete; - void swap(promise& other) noexcept; - - // retrieving the result - future get_future(); - - // setting the result - void set_value(); - void set_exception(exception_ptr p); - - // setting the result with deferred notification - void set_value_at_thread_exit(); - void set_exception_at_thread_exit(exception_ptr p); -}; - -template void swap(promise& x, promise& y) noexcept; - -template - struct uses_allocator, Alloc> : public true_type {}; - -template -class future -{ -public: - future() noexcept; - future(future&&) noexcept; - future(const future& rhs) = delete; - ~future(); - future& operator=(const future& rhs) = delete; - future& operator=(future&&) noexcept; - shared_future share(); - - // retrieving the value - R get(); - - // functions to check state - bool valid() const noexcept; - - void wait() const; - template - future_status - wait_for(const chrono::duration& rel_time) const; - template - future_status - wait_until(const chrono::time_point& abs_time) const; -}; - -template -class future -{ -public: - future() noexcept; - future(future&&) noexcept; - future(const future& rhs) = delete; - ~future(); - future& operator=(const future& rhs) = delete; - future& operator=(future&&) noexcept; - shared_future share(); - - // retrieving the value - R& get(); - - // functions to check state - bool valid() const noexcept; - - void wait() const; - template - future_status - wait_for(const chrono::duration& rel_time) const; - template - future_status - wait_until(const chrono::time_point& abs_time) const; -}; - -template <> -class future -{ -public: - future() noexcept; - future(future&&) noexcept; - future(const future& rhs) = delete; - ~future(); - future& operator=(const future& rhs) = delete; - future& operator=(future&&) noexcept; - shared_future share(); - - // retrieving the value - void get(); - - // functions to check state - bool valid() const noexcept; - - void wait() const; - template - future_status - wait_for(const chrono::duration& rel_time) const; - template - future_status - wait_until(const chrono::time_point& abs_time) const; -}; - -template -class shared_future -{ -public: - shared_future() noexcept; - shared_future(const shared_future& rhs); - shared_future(future&&) noexcept; - shared_future(shared_future&& rhs) noexcept; - ~shared_future(); - shared_future& operator=(const shared_future& rhs); - shared_future& operator=(shared_future&& rhs) noexcept; - - // retrieving the value - const R& get() const; - - // functions to check state - bool valid() const noexcept; - - void wait() const; - template - future_status - wait_for(const chrono::duration& rel_time) const; - template - future_status - wait_until(const chrono::time_point& abs_time) const; -}; - -template -class shared_future -{ -public: - shared_future() noexcept; - shared_future(const shared_future& rhs); - shared_future(future&&) noexcept; - shared_future(shared_future&& rhs) noexcept; - ~shared_future(); - shared_future& operator=(const shared_future& rhs); - shared_future& operator=(shared_future&& rhs) noexcept; - - // retrieving the value - R& get() const; - - // functions to check state - bool valid() const noexcept; - - void wait() const; - template - future_status - wait_for(const chrono::duration& rel_time) const; - template - future_status - wait_until(const chrono::time_point& abs_time) const; -}; - -template <> -class shared_future -{ -public: - shared_future() noexcept; - shared_future(const shared_future& rhs); - shared_future(future&&) noexcept; - shared_future(shared_future&& rhs) noexcept; - ~shared_future(); - shared_future& operator=(const shared_future& rhs); - shared_future& operator=(shared_future&& rhs) noexcept; - - // retrieving the value - void get() const; - - // functions to check state - bool valid() const noexcept; - - void wait() const; - template - future_status - wait_for(const chrono::duration& rel_time) const; - template - future_status - wait_until(const chrono::time_point& abs_time) const; -}; - -template - future::type(typename decay::type...)>::type> - async(F&& f, Args&&... args); - -template - future::type(typename decay::type...)>::type> - async(launch policy, F&& f, Args&&... args); - -template class packaged_task; // undefined - -template -class packaged_task -{ -public: - typedef R result_type; - - // construction and destruction - packaged_task() noexcept; - template - explicit packaged_task(F&& f); - template - explicit packaged_task(allocator_arg_t, const Allocator& a, F&& f); - ~packaged_task(); - - // no copy - packaged_task(const packaged_task&) = delete; - packaged_task& operator=(const packaged_task&) = delete; - - // move support - packaged_task(packaged_task&& other) noexcept; - packaged_task& operator=(packaged_task&& other) noexcept; - void swap(packaged_task& other) noexcept; - - bool valid() const noexcept; - - // result retrieval - future get_future(); - - // execution - void operator()(ArgTypes... ); - void make_ready_at_thread_exit(ArgTypes...); - - void reset(); -}; - -template - void swap(packaged_task&) noexcept; - -template struct uses_allocator, Alloc>; - -} // std - -*/ - -#include <__config> -#include -#include -#include -#include -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#ifdef _LIBCPP_HAS_NO_THREADS -#error is not supported on this single threaded system -#else // !_LIBCPP_HAS_NO_THREADS - -_LIBCPP_BEGIN_NAMESPACE_STD - -//enum class future_errc -_LIBCPP_DECLARE_STRONG_ENUM(future_errc) -{ - future_already_retrieved = 1, - promise_already_satisfied, - no_state, - broken_promise -}; -_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(future_errc) - -template <> -struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum : public true_type {}; - -#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS -template <> -struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum : public true_type { }; -#endif - -//enum class launch -_LIBCPP_DECLARE_STRONG_ENUM(launch) -{ - async = 1, - deferred = 2, - any = async | deferred -}; -_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(launch) - -#ifndef _LIBCPP_HAS_NO_STRONG_ENUMS - -#ifdef _LIBCXX_UNDERLYING_TYPE -typedef underlying_type::type __launch_underlying_type; -#else -typedef int __launch_underlying_type; -#endif - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -launch -operator&(launch __x, launch __y) -{ - return static_cast(static_cast<__launch_underlying_type>(__x) & - static_cast<__launch_underlying_type>(__y)); -} - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -launch -operator|(launch __x, launch __y) -{ - return static_cast(static_cast<__launch_underlying_type>(__x) | - static_cast<__launch_underlying_type>(__y)); -} - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -launch -operator^(launch __x, launch __y) -{ - return static_cast(static_cast<__launch_underlying_type>(__x) ^ - static_cast<__launch_underlying_type>(__y)); -} - -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR -launch -operator~(launch __x) -{ - return static_cast(~static_cast<__launch_underlying_type>(__x) & 3); -} - -inline _LIBCPP_INLINE_VISIBILITY -launch& -operator&=(launch& __x, launch __y) -{ - __x = __x & __y; return __x; -} - -inline _LIBCPP_INLINE_VISIBILITY -launch& -operator|=(launch& __x, launch __y) -{ - __x = __x | __y; return __x; -} - -inline _LIBCPP_INLINE_VISIBILITY -launch& -operator^=(launch& __x, launch __y) -{ - __x = __x ^ __y; return __x; -} - -#endif // !_LIBCPP_HAS_NO_STRONG_ENUMS - -//enum class future_status -_LIBCPP_DECLARE_STRONG_ENUM(future_status) -{ - ready, - timeout, - deferred -}; -_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(future_status) - -_LIBCPP_FUNC_VIS -const error_category& future_category() _NOEXCEPT; - -inline _LIBCPP_INLINE_VISIBILITY -error_code -make_error_code(future_errc __e) _NOEXCEPT -{ - return error_code(static_cast(__e), future_category()); -} - -inline _LIBCPP_INLINE_VISIBILITY -error_condition -make_error_condition(future_errc __e) _NOEXCEPT -{ - return error_condition(static_cast(__e), future_category()); -} - -class _LIBCPP_EXCEPTION_ABI future_error - : public logic_error -{ - error_code __ec_; -public: - future_error(error_code __ec); - - _LIBCPP_INLINE_VISIBILITY - const error_code& code() const _NOEXCEPT {return __ec_;} - - virtual ~future_error() _NOEXCEPT; -}; - -class _LIBCPP_TYPE_VIS __assoc_sub_state - : public __shared_count -{ -protected: - exception_ptr __exception_; - mutable mutex __mut_; - mutable condition_variable __cv_; - unsigned __state_; - - virtual void __on_zero_shared() _NOEXCEPT; - void __sub_wait(unique_lock& __lk); -public: - enum - { - __constructed = 1, - __future_attached = 2, - ready = 4, - deferred = 8 - }; - - _LIBCPP_INLINE_VISIBILITY - __assoc_sub_state() : __state_(0) {} - - _LIBCPP_INLINE_VISIBILITY - bool __has_value() const - {return (__state_ & __constructed) || (__exception_ != nullptr);} - - _LIBCPP_INLINE_VISIBILITY - void __set_future_attached() - { - lock_guard __lk(__mut_); - __state_ |= __future_attached; - } - _LIBCPP_INLINE_VISIBILITY - bool __has_future_attached() const {return (__state_ & __future_attached) != 0;} - - _LIBCPP_INLINE_VISIBILITY - void __set_deferred() {__state_ |= deferred;} - - void __make_ready(); - _LIBCPP_INLINE_VISIBILITY - bool __is_ready() const {return (__state_ & ready) != 0;} - - void set_value(); - void set_value_at_thread_exit(); - - void set_exception(exception_ptr __p); - void set_exception_at_thread_exit(exception_ptr __p); - - void copy(); - - void wait(); - template - future_status - wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const; - template - future_status - wait_until(const chrono::time_point<_Clock, _Duration>& __abs_time) const; - - virtual void __execute(); -}; - -template -future_status -__assoc_sub_state::wait_until(const chrono::time_point<_Clock, _Duration>& __abs_time) const -{ - unique_lock __lk(__mut_); - if (__state_ & deferred) - return future_status::deferred; - while (!(__state_ & ready) && _Clock::now() < __abs_time) - __cv_.wait_until(__lk, __abs_time); - if (__state_ & ready) - return future_status::ready; - return future_status::timeout; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -future_status -__assoc_sub_state::wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const -{ - return wait_until(chrono::steady_clock::now() + __rel_time); -} - -template -class __assoc_state - : public __assoc_sub_state -{ - typedef __assoc_sub_state base; - typedef typename aligned_storage::value>::type _Up; -protected: - _Up __value_; - - virtual void __on_zero_shared() _NOEXCEPT; -public: - - template -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - void set_value(_Arg&& __arg); -#else - void set_value(_Arg& __arg); -#endif - - template -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - void set_value_at_thread_exit(_Arg&& __arg); -#else - void set_value_at_thread_exit(_Arg& __arg); -#endif - - _Rp move(); - typename add_lvalue_reference<_Rp>::type copy(); -}; - -template -void -__assoc_state<_Rp>::__on_zero_shared() _NOEXCEPT -{ - if (this->__state_ & base::__constructed) - reinterpret_cast<_Rp*>(&__value_)->~_Rp(); - delete this; -} - -template -template -void -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -__assoc_state<_Rp>::set_value(_Arg&& __arg) -#else -__assoc_state<_Rp>::set_value(_Arg& __arg) -#endif -{ - unique_lock __lk(this->__mut_); -#ifndef _LIBCPP_NO_EXCEPTIONS - if (this->__has_value()) - throw future_error(make_error_code(future_errc::promise_already_satisfied)); -#endif - ::new(&__value_) _Rp(_VSTD::forward<_Arg>(__arg)); - this->__state_ |= base::__constructed | base::ready; - __lk.unlock(); - __cv_.notify_all(); -} - -template -template -void -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -__assoc_state<_Rp>::set_value_at_thread_exit(_Arg&& __arg) -#else -__assoc_state<_Rp>::set_value_at_thread_exit(_Arg& __arg) -#endif -{ - unique_lock __lk(this->__mut_); -#ifndef _LIBCPP_NO_EXCEPTIONS - if (this->__has_value()) - throw future_error(make_error_code(future_errc::promise_already_satisfied)); -#endif - ::new(&__value_) _Rp(_VSTD::forward<_Arg>(__arg)); - this->__state_ |= base::__constructed; - __thread_local_data()->__make_ready_at_thread_exit(this); - __lk.unlock(); -} - -template -_Rp -__assoc_state<_Rp>::move() -{ - unique_lock __lk(this->__mut_); - this->__sub_wait(__lk); - if (this->__exception_ != nullptr) - rethrow_exception(this->__exception_); - return _VSTD::move(*reinterpret_cast<_Rp*>(&__value_)); -} - -template -typename add_lvalue_reference<_Rp>::type -__assoc_state<_Rp>::copy() -{ - unique_lock __lk(this->__mut_); - this->__sub_wait(__lk); - if (this->__exception_ != nullptr) - rethrow_exception(this->__exception_); - return *reinterpret_cast<_Rp*>(&__value_); -} - -template -class __assoc_state<_Rp&> - : public __assoc_sub_state -{ - typedef __assoc_sub_state base; - typedef _Rp* _Up; -protected: - _Up __value_; - - virtual void __on_zero_shared() _NOEXCEPT; -public: - - void set_value(_Rp& __arg); - void set_value_at_thread_exit(_Rp& __arg); - - _Rp& copy(); -}; - -template -void -__assoc_state<_Rp&>::__on_zero_shared() _NOEXCEPT -{ - delete this; -} - -template -void -__assoc_state<_Rp&>::set_value(_Rp& __arg) -{ - unique_lock __lk(this->__mut_); -#ifndef _LIBCPP_NO_EXCEPTIONS - if (this->__has_value()) - throw future_error(make_error_code(future_errc::promise_already_satisfied)); -#endif - __value_ = _VSTD::addressof(__arg); - this->__state_ |= base::__constructed | base::ready; - __lk.unlock(); - __cv_.notify_all(); -} - -template -void -__assoc_state<_Rp&>::set_value_at_thread_exit(_Rp& __arg) -{ - unique_lock __lk(this->__mut_); -#ifndef _LIBCPP_NO_EXCEPTIONS - if (this->__has_value()) - throw future_error(make_error_code(future_errc::promise_already_satisfied)); -#endif - __value_ = _VSTD::addressof(__arg); - this->__state_ |= base::__constructed; - __thread_local_data()->__make_ready_at_thread_exit(this); - __lk.unlock(); -} - -template -_Rp& -__assoc_state<_Rp&>::copy() -{ - unique_lock __lk(this->__mut_); - this->__sub_wait(__lk); - if (this->__exception_ != nullptr) - rethrow_exception(this->__exception_); - return *__value_; -} - -template -class __assoc_state_alloc - : public __assoc_state<_Rp> -{ - typedef __assoc_state<_Rp> base; - _Alloc __alloc_; - - virtual void __on_zero_shared() _NOEXCEPT; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __assoc_state_alloc(const _Alloc& __a) - : __alloc_(__a) {} -}; - -template -void -__assoc_state_alloc<_Rp, _Alloc>::__on_zero_shared() _NOEXCEPT -{ - if (this->__state_ & base::__constructed) - reinterpret_cast<_Rp*>(_VSTD::addressof(this->__value_))->~_Rp(); - typedef typename __allocator_traits_rebind<_Alloc, __assoc_state_alloc>::type _Al; - typedef allocator_traits<_Al> _ATraits; - typedef pointer_traits _PTraits; - _Al __a(__alloc_); - this->~__assoc_state_alloc(); - __a.deallocate(_PTraits::pointer_to(*this), 1); -} - -template -class __assoc_state_alloc<_Rp&, _Alloc> - : public __assoc_state<_Rp&> -{ - typedef __assoc_state<_Rp&> base; - _Alloc __alloc_; - - virtual void __on_zero_shared() _NOEXCEPT; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __assoc_state_alloc(const _Alloc& __a) - : __alloc_(__a) {} -}; - -template -void -__assoc_state_alloc<_Rp&, _Alloc>::__on_zero_shared() _NOEXCEPT -{ - typedef typename __allocator_traits_rebind<_Alloc, __assoc_state_alloc>::type _Al; - typedef allocator_traits<_Al> _ATraits; - typedef pointer_traits _PTraits; - _Al __a(__alloc_); - this->~__assoc_state_alloc(); - __a.deallocate(_PTraits::pointer_to(*this), 1); -} - -template -class __assoc_sub_state_alloc - : public __assoc_sub_state -{ - typedef __assoc_sub_state base; - _Alloc __alloc_; - - virtual void __on_zero_shared() _NOEXCEPT; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __assoc_sub_state_alloc(const _Alloc& __a) - : __alloc_(__a) {} -}; - -template -void -__assoc_sub_state_alloc<_Alloc>::__on_zero_shared() _NOEXCEPT -{ - typedef typename __allocator_traits_rebind<_Alloc, __assoc_sub_state_alloc>::type _Al; - typedef allocator_traits<_Al> _ATraits; - typedef pointer_traits _PTraits; - _Al __a(__alloc_); - this->~__assoc_sub_state_alloc(); - __a.deallocate(_PTraits::pointer_to(*this), 1); -} - -template -class __deferred_assoc_state - : public __assoc_state<_Rp> -{ - typedef __assoc_state<_Rp> base; - - _Fp __func_; - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - explicit __deferred_assoc_state(_Fp&& __f); -#endif - - virtual void __execute(); -}; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -__deferred_assoc_state<_Rp, _Fp>::__deferred_assoc_state(_Fp&& __f) - : __func_(_VSTD::forward<_Fp>(__f)) -{ - this->__set_deferred(); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__deferred_assoc_state<_Rp, _Fp>::__execute() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - this->set_value(__func_()); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->set_exception(current_exception()); - } -#endif // _LIBCPP_NO_EXCEPTIONS -} - -template -class __deferred_assoc_state - : public __assoc_sub_state -{ - typedef __assoc_sub_state base; - - _Fp __func_; - -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - explicit __deferred_assoc_state(_Fp&& __f); -#endif - - virtual void __execute(); -}; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -__deferred_assoc_state::__deferred_assoc_state(_Fp&& __f) - : __func_(_VSTD::forward<_Fp>(__f)) -{ - this->__set_deferred(); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__deferred_assoc_state::__execute() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - __func_(); - this->set_value(); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->set_exception(current_exception()); - } -#endif // _LIBCPP_NO_EXCEPTIONS -} - -template -class __async_assoc_state - : public __assoc_state<_Rp> -{ - typedef __assoc_state<_Rp> base; - - _Fp __func_; - - virtual void __on_zero_shared() _NOEXCEPT; -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - explicit __async_assoc_state(_Fp&& __f); -#endif - - virtual void __execute(); -}; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -__async_assoc_state<_Rp, _Fp>::__async_assoc_state(_Fp&& __f) - : __func_(_VSTD::forward<_Fp>(__f)) -{ -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__async_assoc_state<_Rp, _Fp>::__execute() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - this->set_value(__func_()); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->set_exception(current_exception()); - } -#endif // _LIBCPP_NO_EXCEPTIONS -} - -template -void -__async_assoc_state<_Rp, _Fp>::__on_zero_shared() _NOEXCEPT -{ - this->wait(); - base::__on_zero_shared(); -} - -template -class __async_assoc_state - : public __assoc_sub_state -{ - typedef __assoc_sub_state base; - - _Fp __func_; - - virtual void __on_zero_shared() _NOEXCEPT; -public: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - explicit __async_assoc_state(_Fp&& __f); -#endif - - virtual void __execute(); -}; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -__async_assoc_state::__async_assoc_state(_Fp&& __f) - : __func_(_VSTD::forward<_Fp>(__f)) -{ -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -__async_assoc_state::__execute() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - __func_(); - this->set_value(); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->set_exception(current_exception()); - } -#endif // _LIBCPP_NO_EXCEPTIONS -} - -template -void -__async_assoc_state::__on_zero_shared() _NOEXCEPT -{ - this->wait(); - base::__on_zero_shared(); -} - -template class _LIBCPP_TYPE_VIS_ONLY promise; -template class _LIBCPP_TYPE_VIS_ONLY shared_future; - -// future - -template class _LIBCPP_TYPE_VIS_ONLY future; - -template -future<_Rp> -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -__make_deferred_assoc_state(_Fp&& __f); -#else -__make_deferred_assoc_state(_Fp __f); -#endif - -template -future<_Rp> -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -__make_async_assoc_state(_Fp&& __f); -#else -__make_async_assoc_state(_Fp __f); -#endif - -template -class _LIBCPP_TYPE_VIS_ONLY future -{ - __assoc_state<_Rp>* __state_; - - explicit future(__assoc_state<_Rp>* __state); - - template friend class promise; - template friend class shared_future; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template - friend future<_R1> __make_deferred_assoc_state(_Fp&& __f); - template - friend future<_R1> __make_async_assoc_state(_Fp&& __f); -#else - template - friend future<_R1> __make_deferred_assoc_state(_Fp __f); - template - friend future<_R1> __make_async_assoc_state(_Fp __f); -#endif - -public: - _LIBCPP_INLINE_VISIBILITY - future() _NOEXCEPT : __state_(nullptr) {} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - future(future&& __rhs) _NOEXCEPT - : __state_(__rhs.__state_) {__rhs.__state_ = nullptr;} - future(const future&) = delete; - future& operator=(const future&) = delete; - _LIBCPP_INLINE_VISIBILITY - future& operator=(future&& __rhs) _NOEXCEPT - { - future(std::move(__rhs)).swap(*this); - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -private: - future(const future&); - future& operator=(const future&); -public: -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~future(); - shared_future<_Rp> share(); - - // retrieving the value - _Rp get(); - - _LIBCPP_INLINE_VISIBILITY - void swap(future& __rhs) _NOEXCEPT {_VSTD::swap(__state_, __rhs.__state_);} - - // functions to check state - _LIBCPP_INLINE_VISIBILITY - bool valid() const _NOEXCEPT {return __state_ != nullptr;} - - _LIBCPP_INLINE_VISIBILITY - void wait() const {__state_->wait();} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const - {return __state_->wait_for(__rel_time);} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_until(const chrono::time_point<_Clock, _Duration>& __abs_time) const - {return __state_->wait_until(__abs_time);} -}; - -template -future<_Rp>::future(__assoc_state<_Rp>* __state) - : __state_(__state) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_->__has_future_attached()) - throw future_error(make_error_code(future_errc::future_already_retrieved)); -#endif - __state_->__add_shared(); - __state_->__set_future_attached(); -} - -struct __release_shared_count -{ - void operator()(__shared_count* p) {p->__release_shared();} -}; - -template -future<_Rp>::~future() -{ - if (__state_) - __state_->__release_shared(); -} - -template -_Rp -future<_Rp>::get() -{ - unique_ptr<__shared_count, __release_shared_count> __(__state_); - __assoc_state<_Rp>* __s = __state_; - __state_ = nullptr; - return __s->move(); -} - -template -class _LIBCPP_TYPE_VIS_ONLY future<_Rp&> -{ - __assoc_state<_Rp&>* __state_; - - explicit future(__assoc_state<_Rp&>* __state); - - template friend class promise; - template friend class shared_future; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template - friend future<_R1> __make_deferred_assoc_state(_Fp&& __f); - template - friend future<_R1> __make_async_assoc_state(_Fp&& __f); -#else - template - friend future<_R1> __make_deferred_assoc_state(_Fp __f); - template - friend future<_R1> __make_async_assoc_state(_Fp __f); -#endif - -public: - _LIBCPP_INLINE_VISIBILITY - future() _NOEXCEPT : __state_(nullptr) {} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - future(future&& __rhs) _NOEXCEPT - : __state_(__rhs.__state_) {__rhs.__state_ = nullptr;} - future(const future&) = delete; - future& operator=(const future&) = delete; - _LIBCPP_INLINE_VISIBILITY - future& operator=(future&& __rhs) _NOEXCEPT - { - future(std::move(__rhs)).swap(*this); - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -private: - future(const future&); - future& operator=(const future&); -public: -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~future(); - shared_future<_Rp&> share(); - - // retrieving the value - _Rp& get(); - - _LIBCPP_INLINE_VISIBILITY - void swap(future& __rhs) _NOEXCEPT {_VSTD::swap(__state_, __rhs.__state_);} - - // functions to check state - _LIBCPP_INLINE_VISIBILITY - bool valid() const _NOEXCEPT {return __state_ != nullptr;} - - _LIBCPP_INLINE_VISIBILITY - void wait() const {__state_->wait();} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const - {return __state_->wait_for(__rel_time);} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_until(const chrono::time_point<_Clock, _Duration>& __abs_time) const - {return __state_->wait_until(__abs_time);} -}; - -template -future<_Rp&>::future(__assoc_state<_Rp&>* __state) - : __state_(__state) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_->__has_future_attached()) - throw future_error(make_error_code(future_errc::future_already_retrieved)); -#endif - __state_->__add_shared(); - __state_->__set_future_attached(); -} - -template -future<_Rp&>::~future() -{ - if (__state_) - __state_->__release_shared(); -} - -template -_Rp& -future<_Rp&>::get() -{ - unique_ptr<__shared_count, __release_shared_count> __(__state_); - __assoc_state<_Rp&>* __s = __state_; - __state_ = nullptr; - return __s->copy(); -} - -template <> -class _LIBCPP_TYPE_VIS future -{ - __assoc_sub_state* __state_; - - explicit future(__assoc_sub_state* __state); - - template friend class promise; - template friend class shared_future; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template - friend future<_R1> __make_deferred_assoc_state(_Fp&& __f); - template - friend future<_R1> __make_async_assoc_state(_Fp&& __f); -#else - template - friend future<_R1> __make_deferred_assoc_state(_Fp __f); - template - friend future<_R1> __make_async_assoc_state(_Fp __f); -#endif - -public: - _LIBCPP_INLINE_VISIBILITY - future() _NOEXCEPT : __state_(nullptr) {} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - future(future&& __rhs) _NOEXCEPT - : __state_(__rhs.__state_) {__rhs.__state_ = nullptr;} - future(const future&) = delete; - future& operator=(const future&) = delete; - _LIBCPP_INLINE_VISIBILITY - future& operator=(future&& __rhs) _NOEXCEPT - { - future(std::move(__rhs)).swap(*this); - return *this; - } -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -private: - future(const future&); - future& operator=(const future&); -public: -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~future(); - shared_future share(); - - // retrieving the value - void get(); - - _LIBCPP_INLINE_VISIBILITY - void swap(future& __rhs) _NOEXCEPT {_VSTD::swap(__state_, __rhs.__state_);} - - // functions to check state - _LIBCPP_INLINE_VISIBILITY - bool valid() const _NOEXCEPT {return __state_ != nullptr;} - - _LIBCPP_INLINE_VISIBILITY - void wait() const {__state_->wait();} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const - {return __state_->wait_for(__rel_time);} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_until(const chrono::time_point<_Clock, _Duration>& __abs_time) const - {return __state_->wait_until(__abs_time);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(future<_Rp>& __x, future<_Rp>& __y) _NOEXCEPT -{ - __x.swap(__y); -} - -// promise - -template class packaged_task; - -template -class _LIBCPP_TYPE_VIS_ONLY promise -{ - __assoc_state<_Rp>* __state_; - - _LIBCPP_INLINE_VISIBILITY - explicit promise(nullptr_t) _NOEXCEPT : __state_(nullptr) {} - - template friend class packaged_task; -public: - promise(); - template - promise(allocator_arg_t, const _Alloc& __a); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - promise(promise&& __rhs) _NOEXCEPT - : __state_(__rhs.__state_) {__rhs.__state_ = nullptr;} - promise(const promise& __rhs) = delete; -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -private: - promise(const promise& __rhs); -public: -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~promise(); - - // assignment -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - promise& operator=(promise&& __rhs) _NOEXCEPT - { - promise(std::move(__rhs)).swap(*this); - return *this; - } - promise& operator=(const promise& __rhs) = delete; -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -private: - promise& operator=(const promise& __rhs); -public: -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void swap(promise& __rhs) _NOEXCEPT {_VSTD::swap(__state_, __rhs.__state_);} - - // retrieving the result - future<_Rp> get_future(); - - // setting the result - void set_value(const _Rp& __r); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - void set_value(_Rp&& __r); -#endif - void set_exception(exception_ptr __p); - - // setting the result with deferred notification - void set_value_at_thread_exit(const _Rp& __r); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - void set_value_at_thread_exit(_Rp&& __r); -#endif - void set_exception_at_thread_exit(exception_ptr __p); -}; - -template -promise<_Rp>::promise() - : __state_(new __assoc_state<_Rp>) -{ -} - -template -template -promise<_Rp>::promise(allocator_arg_t, const _Alloc& __a0) -{ - typedef __assoc_state_alloc<_Rp, _Alloc> _State; - typedef typename __allocator_traits_rebind<_Alloc, _State>::type _A2; - typedef __allocator_destructor<_A2> _D2; - _A2 __a(__a0); - unique_ptr<_State, _D2> __hold(__a.allocate(1), _D2(__a, 1)); - ::new(static_cast(_VSTD::addressof(*__hold.get()))) _State(__a0); - __state_ = _VSTD::addressof(*__hold.release()); -} - -template -promise<_Rp>::~promise() -{ - if (__state_) - { - if (!__state_->__has_value() && __state_->use_count() > 1) - __state_->set_exception(make_exception_ptr( - future_error(make_error_code(future_errc::broken_promise)) - )); - __state_->__release_shared(); - } -} - -template -future<_Rp> -promise<_Rp>::get_future() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - return future<_Rp>(__state_); -} - -template -void -promise<_Rp>::set_value(const _Rp& __r) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_value(__r); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -promise<_Rp>::set_value(_Rp&& __r) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_value(_VSTD::move(__r)); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -promise<_Rp>::set_exception(exception_ptr __p) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_exception(__p); -} - -template -void -promise<_Rp>::set_value_at_thread_exit(const _Rp& __r) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_value_at_thread_exit(__r); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -promise<_Rp>::set_value_at_thread_exit(_Rp&& __r) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_value_at_thread_exit(_VSTD::move(__r)); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -promise<_Rp>::set_exception_at_thread_exit(exception_ptr __p) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_exception_at_thread_exit(__p); -} - -// promise - -template -class _LIBCPP_TYPE_VIS_ONLY promise<_Rp&> -{ - __assoc_state<_Rp&>* __state_; - - _LIBCPP_INLINE_VISIBILITY - explicit promise(nullptr_t) _NOEXCEPT : __state_(nullptr) {} - - template friend class packaged_task; - -public: - promise(); - template - promise(allocator_arg_t, const _Allocator& __a); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - promise(promise&& __rhs) _NOEXCEPT - : __state_(__rhs.__state_) {__rhs.__state_ = nullptr;} - promise(const promise& __rhs) = delete; -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -private: - promise(const promise& __rhs); -public: -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~promise(); - - // assignment -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - promise& operator=(promise&& __rhs) _NOEXCEPT - { - promise(std::move(__rhs)).swap(*this); - return *this; - } - promise& operator=(const promise& __rhs) = delete; -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -private: - promise& operator=(const promise& __rhs); -public: -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void swap(promise& __rhs) _NOEXCEPT {_VSTD::swap(__state_, __rhs.__state_);} - - // retrieving the result - future<_Rp&> get_future(); - - // setting the result - void set_value(_Rp& __r); - void set_exception(exception_ptr __p); - - // setting the result with deferred notification - void set_value_at_thread_exit(_Rp&); - void set_exception_at_thread_exit(exception_ptr __p); -}; - -template -promise<_Rp&>::promise() - : __state_(new __assoc_state<_Rp&>) -{ -} - -template -template -promise<_Rp&>::promise(allocator_arg_t, const _Alloc& __a0) -{ - typedef __assoc_state_alloc<_Rp&, _Alloc> _State; - typedef typename __allocator_traits_rebind<_Alloc, _State>::type _A2; - typedef __allocator_destructor<_A2> _D2; - _A2 __a(__a0); - unique_ptr<_State, _D2> __hold(__a.allocate(1), _D2(__a, 1)); - ::new(static_cast(_VSTD::addressof(*__hold.get()))) _State(__a0); - __state_ = _VSTD::addressof(*__hold.release()); -} - -template -promise<_Rp&>::~promise() -{ - if (__state_) - { - if (!__state_->__has_value() && __state_->use_count() > 1) - __state_->set_exception(make_exception_ptr( - future_error(make_error_code(future_errc::broken_promise)) - )); - __state_->__release_shared(); - } -} - -template -future<_Rp&> -promise<_Rp&>::get_future() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - return future<_Rp&>(__state_); -} - -template -void -promise<_Rp&>::set_value(_Rp& __r) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_value(__r); -} - -template -void -promise<_Rp&>::set_exception(exception_ptr __p) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_exception(__p); -} - -template -void -promise<_Rp&>::set_value_at_thread_exit(_Rp& __r) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_value_at_thread_exit(__r); -} - -template -void -promise<_Rp&>::set_exception_at_thread_exit(exception_ptr __p) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); -#endif - __state_->set_exception_at_thread_exit(__p); -} - -// promise - -template <> -class _LIBCPP_TYPE_VIS promise -{ - __assoc_sub_state* __state_; - - _LIBCPP_INLINE_VISIBILITY - explicit promise(nullptr_t) _NOEXCEPT : __state_(nullptr) {} - - template friend class packaged_task; - -public: - promise(); - template - promise(allocator_arg_t, const _Allocator& __a); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - promise(promise&& __rhs) _NOEXCEPT - : __state_(__rhs.__state_) {__rhs.__state_ = nullptr;} - promise(const promise& __rhs) = delete; -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -private: - promise(const promise& __rhs); -public: -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~promise(); - - // assignment -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - promise& operator=(promise&& __rhs) _NOEXCEPT - { - promise(std::move(__rhs)).swap(*this); - return *this; - } - promise& operator=(const promise& __rhs) = delete; -#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES -private: - promise& operator=(const promise& __rhs); -public: -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void swap(promise& __rhs) _NOEXCEPT {_VSTD::swap(__state_, __rhs.__state_);} - - // retrieving the result - future get_future(); - - // setting the result - void set_value(); - void set_exception(exception_ptr __p); - - // setting the result with deferred notification - void set_value_at_thread_exit(); - void set_exception_at_thread_exit(exception_ptr __p); -}; - -template -promise::promise(allocator_arg_t, const _Alloc& __a0) -{ - typedef __assoc_sub_state_alloc<_Alloc> _State; - typedef typename __allocator_traits_rebind<_Alloc, _State>::type _A2; - typedef __allocator_destructor<_A2> _D2; - _A2 __a(__a0); - unique_ptr<_State, _D2> __hold(__a.allocate(1), _D2(__a, 1)); - ::new(static_cast(_VSTD::addressof(*__hold.get()))) _State(__a0); - __state_ = _VSTD::addressof(*__hold.release()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(promise<_Rp>& __x, promise<_Rp>& __y) _NOEXCEPT -{ - __x.swap(__y); -} - -template - struct _LIBCPP_TYPE_VIS_ONLY uses_allocator, _Alloc> - : public true_type {}; - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -// packaged_task - -template class __packaged_task_base; - -template -class __packaged_task_base<_Rp(_ArgTypes...)> -{ - __packaged_task_base(const __packaged_task_base&); - __packaged_task_base& operator=(const __packaged_task_base&); -public: - _LIBCPP_INLINE_VISIBILITY - __packaged_task_base() {} - _LIBCPP_INLINE_VISIBILITY - virtual ~__packaged_task_base() {} - virtual void __move_to(__packaged_task_base*) _NOEXCEPT = 0; - virtual void destroy() = 0; - virtual void destroy_deallocate() = 0; - virtual _Rp operator()(_ArgTypes&& ...) = 0; -}; - -template class __packaged_task_func; - -template -class __packaged_task_func<_Fp, _Alloc, _Rp(_ArgTypes...)> - : public __packaged_task_base<_Rp(_ArgTypes...)> -{ - __compressed_pair<_Fp, _Alloc> __f_; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __packaged_task_func(const _Fp& __f) : __f_(__f) {} - _LIBCPP_INLINE_VISIBILITY - explicit __packaged_task_func(_Fp&& __f) : __f_(_VSTD::move(__f)) {} - _LIBCPP_INLINE_VISIBILITY - __packaged_task_func(const _Fp& __f, const _Alloc& __a) - : __f_(__f, __a) {} - _LIBCPP_INLINE_VISIBILITY - __packaged_task_func(_Fp&& __f, const _Alloc& __a) - : __f_(_VSTD::move(__f), __a) {} - virtual void __move_to(__packaged_task_base<_Rp(_ArgTypes...)>*) _NOEXCEPT; - virtual void destroy(); - virtual void destroy_deallocate(); - virtual _Rp operator()(_ArgTypes&& ... __args); -}; - -template -void -__packaged_task_func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__move_to( - __packaged_task_base<_Rp(_ArgTypes...)>* __p) _NOEXCEPT -{ - ::new (__p) __packaged_task_func(_VSTD::move(__f_.first()), _VSTD::move(__f_.second())); -} - -template -void -__packaged_task_func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy() -{ - __f_.~__compressed_pair<_Fp, _Alloc>(); -} - -template -void -__packaged_task_func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy_deallocate() -{ - typedef typename __allocator_traits_rebind<_Alloc, __packaged_task_func>::type _Ap; - typedef allocator_traits<_Ap> _ATraits; - typedef pointer_traits _PTraits; - _Ap __a(__f_.second()); - __f_.~__compressed_pair<_Fp, _Alloc>(); - __a.deallocate(_PTraits::pointer_to(*this), 1); -} - -template -_Rp -__packaged_task_func<_Fp, _Alloc, _Rp(_ArgTypes...)>::operator()(_ArgTypes&& ... __arg) -{ - return __invoke(__f_.first(), _VSTD::forward<_ArgTypes>(__arg)...); -} - -template class __packaged_task_function; - -template -class __packaged_task_function<_Rp(_ArgTypes...)> -{ - typedef __packaged_task_base<_Rp(_ArgTypes...)> __base; - typename aligned_storage<3*sizeof(void*)>::type __buf_; - __base* __f_; - -public: - typedef _Rp result_type; - - // construct/copy/destroy: - _LIBCPP_INLINE_VISIBILITY - __packaged_task_function() _NOEXCEPT : __f_(nullptr) {} - template - __packaged_task_function(_Fp&& __f); - template - __packaged_task_function(allocator_arg_t, const _Alloc& __a, _Fp&& __f); - - __packaged_task_function(__packaged_task_function&&) _NOEXCEPT; - __packaged_task_function& operator=(__packaged_task_function&&) _NOEXCEPT; - - __packaged_task_function(const __packaged_task_function&) = delete; - __packaged_task_function& operator=(const __packaged_task_function&) = delete; - - ~__packaged_task_function(); - - void swap(__packaged_task_function&) _NOEXCEPT; - - _Rp operator()(_ArgTypes...) const; -}; - -template -__packaged_task_function<_Rp(_ArgTypes...)>::__packaged_task_function(__packaged_task_function&& __f) _NOEXCEPT -{ - if (__f.__f_ == nullptr) - __f_ = nullptr; - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__move_to(__f_); - } - else - { - __f_ = __f.__f_; - __f.__f_ = nullptr; - } -} - -template -template -__packaged_task_function<_Rp(_ArgTypes...)>::__packaged_task_function(_Fp&& __f) - : __f_(nullptr) -{ - typedef typename remove_reference::type>::type _FR; - typedef __packaged_task_func<_FR, allocator<_FR>, _Rp(_ArgTypes...)> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(_VSTD::forward<_Fp>(__f)); - } - else - { - typedef allocator<_FF> _Ap; - _Ap __a; - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (__hold.get()) _FF(_VSTD::forward<_Fp>(__f), allocator<_FR>(__a)); - __f_ = __hold.release(); - } -} - -template -template -__packaged_task_function<_Rp(_ArgTypes...)>::__packaged_task_function( - allocator_arg_t, const _Alloc& __a0, _Fp&& __f) - : __f_(nullptr) -{ - typedef typename remove_reference::type>::type _FR; - typedef __packaged_task_func<_FR, _Alloc, _Rp(_ArgTypes...)> _FF; - if (sizeof(_FF) <= sizeof(__buf_)) - { - __f_ = (__base*)&__buf_; - ::new (__f_) _FF(_VSTD::forward<_Fp>(__f)); - } - else - { - typedef typename __allocator_traits_rebind<_Alloc, _FF>::type _Ap; - _Ap __a(__a0); - typedef __allocator_destructor<_Ap> _Dp; - unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); - ::new (static_cast(_VSTD::addressof(*__hold.get()))) - _FF(_VSTD::forward<_Fp>(__f), _Alloc(__a)); - __f_ = _VSTD::addressof(*__hold.release()); - } -} - -template -__packaged_task_function<_Rp(_ArgTypes...)>& -__packaged_task_function<_Rp(_ArgTypes...)>::operator=(__packaged_task_function&& __f) _NOEXCEPT -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); - __f_ = nullptr; - if (__f.__f_ == nullptr) - __f_ = nullptr; - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f_ = (__base*)&__buf_; - __f.__f_->__move_to(__f_); - } - else - { - __f_ = __f.__f_; - __f.__f_ = nullptr; - } - return *this; -} - -template -__packaged_task_function<_Rp(_ArgTypes...)>::~__packaged_task_function() -{ - if (__f_ == (__base*)&__buf_) - __f_->destroy(); - else if (__f_) - __f_->destroy_deallocate(); -} - -template -void -__packaged_task_function<_Rp(_ArgTypes...)>::swap(__packaged_task_function& __f) _NOEXCEPT -{ - if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) - { - typename aligned_storage::type __tempbuf; - __base* __t = (__base*)&__tempbuf; - __f_->__move_to(__t); - __f_->destroy(); - __f_ = nullptr; - __f.__f_->__move_to((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = nullptr; - __f_ = (__base*)&__buf_; - __t->__move_to((__base*)&__f.__buf_); - __t->destroy(); - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f_ == (__base*)&__buf_) - { - __f_->__move_to((__base*)&__f.__buf_); - __f_->destroy(); - __f_ = __f.__f_; - __f.__f_ = (__base*)&__f.__buf_; - } - else if (__f.__f_ == (__base*)&__f.__buf_) - { - __f.__f_->__move_to((__base*)&__buf_); - __f.__f_->destroy(); - __f.__f_ = __f_; - __f_ = (__base*)&__buf_; - } - else - _VSTD::swap(__f_, __f.__f_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Rp -__packaged_task_function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) const -{ - return (*__f_)(_VSTD::forward<_ArgTypes>(__arg)...); -} - -template -class _LIBCPP_TYPE_VIS_ONLY packaged_task<_Rp(_ArgTypes...)> -{ -public: - typedef _Rp result_type; - -private: - __packaged_task_function __f_; - promise __p_; - -public: - // construction and destruction - _LIBCPP_INLINE_VISIBILITY - packaged_task() _NOEXCEPT : __p_(nullptr) {} - template ::type, - packaged_task - >::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - explicit packaged_task(_Fp&& __f) : __f_(_VSTD::forward<_Fp>(__f)) {} - template ::type, - packaged_task - >::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - explicit packaged_task(allocator_arg_t, const _Allocator& __a, _Fp&& __f) - : __f_(allocator_arg, __a, _VSTD::forward<_Fp>(__f)), - __p_(allocator_arg, __a) {} - // ~packaged_task() = default; - - // no copy - packaged_task(const packaged_task&) = delete; - packaged_task& operator=(const packaged_task&) = delete; - - // move support - _LIBCPP_INLINE_VISIBILITY - packaged_task(packaged_task&& __other) _NOEXCEPT - : __f_(_VSTD::move(__other.__f_)), __p_(_VSTD::move(__other.__p_)) {} - _LIBCPP_INLINE_VISIBILITY - packaged_task& operator=(packaged_task&& __other) _NOEXCEPT - { - __f_ = _VSTD::move(__other.__f_); - __p_ = _VSTD::move(__other.__p_); - return *this; - } - _LIBCPP_INLINE_VISIBILITY - void swap(packaged_task& __other) _NOEXCEPT - { - __f_.swap(__other.__f_); - __p_.swap(__other.__p_); - } - - _LIBCPP_INLINE_VISIBILITY - bool valid() const _NOEXCEPT {return __p_.__state_ != nullptr;} - - // result retrieval - _LIBCPP_INLINE_VISIBILITY - future get_future() {return __p_.get_future();} - - // execution - void operator()(_ArgTypes... __args); - void make_ready_at_thread_exit(_ArgTypes... __args); - - void reset(); -}; - -template -void -packaged_task<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __args) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__p_.__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); - if (__p_.__state_->__has_value()) - throw future_error(make_error_code(future_errc::promise_already_satisfied)); - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - __p_.set_value(__f_(_VSTD::forward<_ArgTypes>(__args)...)); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __p_.set_exception(current_exception()); - } -#endif // _LIBCPP_NO_EXCEPTIONS -} - -template -void -packaged_task<_Rp(_ArgTypes...)>::make_ready_at_thread_exit(_ArgTypes... __args) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__p_.__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); - if (__p_.__state_->__has_value()) - throw future_error(make_error_code(future_errc::promise_already_satisfied)); - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - __p_.set_value_at_thread_exit(__f_(_VSTD::forward<_ArgTypes>(__args)...)); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __p_.set_exception_at_thread_exit(current_exception()); - } -#endif // _LIBCPP_NO_EXCEPTIONS -} - -template -void -packaged_task<_Rp(_ArgTypes...)>::reset() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (!valid()) - throw future_error(make_error_code(future_errc::no_state)); -#endif // _LIBCPP_NO_EXCEPTIONS - __p_ = promise(); -} - -template -class _LIBCPP_TYPE_VIS_ONLY packaged_task -{ -public: - typedef void result_type; - -private: - __packaged_task_function __f_; - promise __p_; - -public: - // construction and destruction - _LIBCPP_INLINE_VISIBILITY - packaged_task() _NOEXCEPT : __p_(nullptr) {} - template ::type, - packaged_task - >::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - explicit packaged_task(_Fp&& __f) : __f_(_VSTD::forward<_Fp>(__f)) {} - template ::type, - packaged_task - >::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - explicit packaged_task(allocator_arg_t, const _Allocator& __a, _Fp&& __f) - : __f_(allocator_arg, __a, _VSTD::forward<_Fp>(__f)), - __p_(allocator_arg, __a) {} - // ~packaged_task() = default; - - // no copy - packaged_task(const packaged_task&) = delete; - packaged_task& operator=(const packaged_task&) = delete; - - // move support - _LIBCPP_INLINE_VISIBILITY - packaged_task(packaged_task&& __other) _NOEXCEPT - : __f_(_VSTD::move(__other.__f_)), __p_(_VSTD::move(__other.__p_)) {} - _LIBCPP_INLINE_VISIBILITY - packaged_task& operator=(packaged_task&& __other) _NOEXCEPT - { - __f_ = _VSTD::move(__other.__f_); - __p_ = _VSTD::move(__other.__p_); - return *this; - } - _LIBCPP_INLINE_VISIBILITY - void swap(packaged_task& __other) _NOEXCEPT - { - __f_.swap(__other.__f_); - __p_.swap(__other.__p_); - } - - _LIBCPP_INLINE_VISIBILITY - bool valid() const _NOEXCEPT {return __p_.__state_ != nullptr;} - - // result retrieval - _LIBCPP_INLINE_VISIBILITY - future get_future() {return __p_.get_future();} - - // execution - void operator()(_ArgTypes... __args); - void make_ready_at_thread_exit(_ArgTypes... __args); - - void reset(); -}; - -template -void -packaged_task::operator()(_ArgTypes... __args) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__p_.__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); - if (__p_.__state_->__has_value()) - throw future_error(make_error_code(future_errc::promise_already_satisfied)); - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - __f_(_VSTD::forward<_ArgTypes>(__args)...); - __p_.set_value(); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __p_.set_exception(current_exception()); - } -#endif // _LIBCPP_NO_EXCEPTIONS -} - -template -void -packaged_task::make_ready_at_thread_exit(_ArgTypes... __args) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__p_.__state_ == nullptr) - throw future_error(make_error_code(future_errc::no_state)); - if (__p_.__state_->__has_value()) - throw future_error(make_error_code(future_errc::promise_already_satisfied)); - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - __f_(_VSTD::forward<_ArgTypes>(__args)...); - __p_.set_value_at_thread_exit(); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __p_.set_exception_at_thread_exit(current_exception()); - } -#endif // _LIBCPP_NO_EXCEPTIONS -} - -template -void -packaged_task::reset() -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - if (!valid()) - throw future_error(make_error_code(future_errc::no_state)); -#endif // _LIBCPP_NO_EXCEPTIONS - __p_ = promise(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(packaged_task<_Callable>& __x, packaged_task<_Callable>& __y) _NOEXCEPT -{ - __x.swap(__y); -} - -template -struct _LIBCPP_TYPE_VIS_ONLY uses_allocator, _Alloc> - : public true_type {}; - -template -future<_Rp> -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -__make_deferred_assoc_state(_Fp&& __f) -#else -__make_deferred_assoc_state(_Fp __f) -#endif -{ - unique_ptr<__deferred_assoc_state<_Rp, _Fp>, __release_shared_count> - __h(new __deferred_assoc_state<_Rp, _Fp>(_VSTD::forward<_Fp>(__f))); - return future<_Rp>(__h.get()); -} - -template -future<_Rp> -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -__make_async_assoc_state(_Fp&& __f) -#else -__make_async_assoc_state(_Fp __f) -#endif -{ - unique_ptr<__async_assoc_state<_Rp, _Fp>, __release_shared_count> - __h(new __async_assoc_state<_Rp, _Fp>(_VSTD::forward<_Fp>(__f))); - _VSTD::thread(&__async_assoc_state<_Rp, _Fp>::__execute, __h.get()).detach(); - return future<_Rp>(__h.get()); -} - -template -class __async_func -{ - tuple<_Fp, _Args...> __f_; - -public: - typedef typename __invoke_of<_Fp, _Args...>::type _Rp; - - _LIBCPP_INLINE_VISIBILITY - explicit __async_func(_Fp&& __f, _Args&&... __args) - : __f_(_VSTD::move(__f), _VSTD::move(__args)...) {} - - _LIBCPP_INLINE_VISIBILITY - __async_func(__async_func&& __f) : __f_(_VSTD::move(__f.__f_)) {} - - _Rp operator()() - { - typedef typename __make_tuple_indices<1+sizeof...(_Args), 1>::type _Index; - return __execute(_Index()); - } -private: - template - _Rp - __execute(__tuple_indices<_Indices...>) - { - return __invoke(_VSTD::move(_VSTD::get<0>(__f_)), _VSTD::move(_VSTD::get<_Indices>(__f_))...); - } -}; - -inline _LIBCPP_INLINE_VISIBILITY bool __does_policy_contain(launch __policy, launch __value ) -{ return (int(__policy) & int(__value)) != 0; } - -template -future::type, typename decay<_Args>::type...>::type> -async(launch __policy, _Fp&& __f, _Args&&... __args) -{ - typedef __async_func::type, typename decay<_Args>::type...> _BF; - typedef typename _BF::_Rp _Rp; - -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif - if (__does_policy_contain(__policy, launch::async)) - return _VSTD::__make_async_assoc_state<_Rp>(_BF(__decay_copy(_VSTD::forward<_Fp>(__f)), - __decay_copy(_VSTD::forward<_Args>(__args))...)); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch ( ... ) { if (__policy == launch::async) throw ; } -#endif - - if (__does_policy_contain(__policy, launch::deferred)) - return _VSTD::__make_deferred_assoc_state<_Rp>(_BF(__decay_copy(_VSTD::forward<_Fp>(__f)), - __decay_copy(_VSTD::forward<_Args>(__args))...)); - return future<_Rp>{}; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -future::type, typename decay<_Args>::type...>::type> -async(_Fp&& __f, _Args&&... __args) -{ - return _VSTD::async(launch::any, _VSTD::forward<_Fp>(__f), - _VSTD::forward<_Args>(__args)...); -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -// shared_future - -template -class _LIBCPP_TYPE_VIS_ONLY shared_future -{ - __assoc_state<_Rp>* __state_; - -public: - _LIBCPP_INLINE_VISIBILITY - shared_future() _NOEXCEPT : __state_(nullptr) {} - _LIBCPP_INLINE_VISIBILITY - shared_future(const shared_future& __rhs) : __state_(__rhs.__state_) - {if (__state_) __state_->__add_shared();} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - shared_future(future<_Rp>&& __f) _NOEXCEPT : __state_(__f.__state_) - {__f.__state_ = nullptr;} - _LIBCPP_INLINE_VISIBILITY - shared_future(shared_future&& __rhs) _NOEXCEPT : __state_(__rhs.__state_) - {__rhs.__state_ = nullptr;} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~shared_future(); - shared_future& operator=(const shared_future& __rhs); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - shared_future& operator=(shared_future&& __rhs) _NOEXCEPT - { - shared_future(std::move(__rhs)).swap(*this); - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - // retrieving the value - _LIBCPP_INLINE_VISIBILITY - const _Rp& get() const {return __state_->copy();} - - _LIBCPP_INLINE_VISIBILITY - void swap(shared_future& __rhs) _NOEXCEPT {_VSTD::swap(__state_, __rhs.__state_);} - - // functions to check state - _LIBCPP_INLINE_VISIBILITY - bool valid() const _NOEXCEPT {return __state_ != nullptr;} - - _LIBCPP_INLINE_VISIBILITY - void wait() const {__state_->wait();} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const - {return __state_->wait_for(__rel_time);} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_until(const chrono::time_point<_Clock, _Duration>& __abs_time) const - {return __state_->wait_until(__abs_time);} -}; - -template -shared_future<_Rp>::~shared_future() -{ - if (__state_) - __state_->__release_shared(); -} - -template -shared_future<_Rp>& -shared_future<_Rp>::operator=(const shared_future& __rhs) -{ - if (__rhs.__state_) - __rhs.__state_->__add_shared(); - if (__state_) - __state_->__release_shared(); - __state_ = __rhs.__state_; - return *this; -} - -template -class _LIBCPP_TYPE_VIS_ONLY shared_future<_Rp&> -{ - __assoc_state<_Rp&>* __state_; - -public: - _LIBCPP_INLINE_VISIBILITY - shared_future() _NOEXCEPT : __state_(nullptr) {} - _LIBCPP_INLINE_VISIBILITY - shared_future(const shared_future& __rhs) : __state_(__rhs.__state_) - {if (__state_) __state_->__add_shared();} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - shared_future(future<_Rp&>&& __f) _NOEXCEPT : __state_(__f.__state_) - {__f.__state_ = nullptr;} - _LIBCPP_INLINE_VISIBILITY - shared_future(shared_future&& __rhs) _NOEXCEPT : __state_(__rhs.__state_) - {__rhs.__state_ = nullptr;} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~shared_future(); - shared_future& operator=(const shared_future& __rhs); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - shared_future& operator=(shared_future&& __rhs) _NOEXCEPT - { - shared_future(std::move(__rhs)).swap(*this); - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - // retrieving the value - _LIBCPP_INLINE_VISIBILITY - _Rp& get() const {return __state_->copy();} - - _LIBCPP_INLINE_VISIBILITY - void swap(shared_future& __rhs) _NOEXCEPT {_VSTD::swap(__state_, __rhs.__state_);} - - // functions to check state - _LIBCPP_INLINE_VISIBILITY - bool valid() const _NOEXCEPT {return __state_ != nullptr;} - - _LIBCPP_INLINE_VISIBILITY - void wait() const {__state_->wait();} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const - {return __state_->wait_for(__rel_time);} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_until(const chrono::time_point<_Clock, _Duration>& __abs_time) const - {return __state_->wait_until(__abs_time);} -}; - -template -shared_future<_Rp&>::~shared_future() -{ - if (__state_) - __state_->__release_shared(); -} - -template -shared_future<_Rp&>& -shared_future<_Rp&>::operator=(const shared_future& __rhs) -{ - if (__rhs.__state_) - __rhs.__state_->__add_shared(); - if (__state_) - __state_->__release_shared(); - __state_ = __rhs.__state_; - return *this; -} - -template <> -class _LIBCPP_TYPE_VIS shared_future -{ - __assoc_sub_state* __state_; - -public: - _LIBCPP_INLINE_VISIBILITY - shared_future() _NOEXCEPT : __state_(nullptr) {} - _LIBCPP_INLINE_VISIBILITY - shared_future(const shared_future& __rhs) : __state_(__rhs.__state_) - {if (__state_) __state_->__add_shared();} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - shared_future(future&& __f) _NOEXCEPT : __state_(__f.__state_) - {__f.__state_ = nullptr;} - _LIBCPP_INLINE_VISIBILITY - shared_future(shared_future&& __rhs) _NOEXCEPT : __state_(__rhs.__state_) - {__rhs.__state_ = nullptr;} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - ~shared_future(); - shared_future& operator=(const shared_future& __rhs); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - shared_future& operator=(shared_future&& __rhs) _NOEXCEPT - { - shared_future(std::move(__rhs)).swap(*this); - return *this; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - // retrieving the value - _LIBCPP_INLINE_VISIBILITY - void get() const {__state_->copy();} - - _LIBCPP_INLINE_VISIBILITY - void swap(shared_future& __rhs) _NOEXCEPT {_VSTD::swap(__state_, __rhs.__state_);} - - // functions to check state - _LIBCPP_INLINE_VISIBILITY - bool valid() const _NOEXCEPT {return __state_ != nullptr;} - - _LIBCPP_INLINE_VISIBILITY - void wait() const {__state_->wait();} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const - {return __state_->wait_for(__rel_time);} - template - _LIBCPP_INLINE_VISIBILITY - future_status - wait_until(const chrono::time_point<_Clock, _Duration>& __abs_time) const - {return __state_->wait_until(__abs_time);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(shared_future<_Rp>& __x, shared_future<_Rp>& __y) _NOEXCEPT -{ - __x.swap(__y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -shared_future<_Rp> -future<_Rp>::share() -{ - return shared_future<_Rp>(_VSTD::move(*this)); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -shared_future<_Rp&> -future<_Rp&>::share() -{ - return shared_future<_Rp&>(_VSTD::move(*this)); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -inline _LIBCPP_INLINE_VISIBILITY -shared_future -future::share() -{ - return shared_future(_VSTD::move(*this)); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -_LIBCPP_END_NAMESPACE_STD - -#endif // !_LIBCPP_HAS_NO_THREADS - -#endif // _LIBCPP_FUTURE diff --git a/libcxx/include/initializer_list b/libcxx/include/initializer_list deleted file mode 100644 index 663e49b6e..000000000 --- a/libcxx/include/initializer_list +++ /dev/null @@ -1,118 +0,0 @@ -// -*- C++ -*- -//===----------------------- initializer_list -----------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_INITIALIZER_LIST -#define _LIBCPP_INITIALIZER_LIST - -/* - initializer_list synopsis - -namespace std -{ - -template -class initializer_list -{ -public: - typedef E value_type; - typedef const E& reference; - typedef const E& const_reference; - typedef size_t size_type; - - typedef const E* iterator; - typedef const E* const_iterator; - - initializer_list() noexcept; // constexpr in C++14 - - size_t size() const noexcept; // constexpr in C++14 - const E* begin() const noexcept; // constexpr in C++14 - const E* end() const noexcept; // constexpr in C++14 -}; - -template const E* begin(initializer_list il) noexcept; // constexpr in C++14 -template const E* end(initializer_list il) noexcept; // constexpr in C++14 - -} // std - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -namespace std // purposefully not versioned -{ - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -class _LIBCPP_TYPE_VIS_ONLY initializer_list -{ - const _Ep* __begin_; - size_t __size_; - - _LIBCPP_ALWAYS_INLINE - _LIBCPP_CONSTEXPR_AFTER_CXX11 - initializer_list(const _Ep* __b, size_t __s) _NOEXCEPT - : __begin_(__b), - __size_(__s) - {} -public: - typedef _Ep value_type; - typedef const _Ep& reference; - typedef const _Ep& const_reference; - typedef size_t size_type; - - typedef const _Ep* iterator; - typedef const _Ep* const_iterator; - - _LIBCPP_ALWAYS_INLINE - _LIBCPP_CONSTEXPR_AFTER_CXX11 - initializer_list() _NOEXCEPT : __begin_(nullptr), __size_(0) {} - - _LIBCPP_ALWAYS_INLINE - _LIBCPP_CONSTEXPR_AFTER_CXX11 - size_t size() const _NOEXCEPT {return __size_;} - - _LIBCPP_ALWAYS_INLINE - _LIBCPP_CONSTEXPR_AFTER_CXX11 - const _Ep* begin() const _NOEXCEPT {return __begin_;} - - _LIBCPP_ALWAYS_INLINE - _LIBCPP_CONSTEXPR_AFTER_CXX11 - const _Ep* end() const _NOEXCEPT {return __begin_ + __size_;} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR_AFTER_CXX11 -const _Ep* -begin(initializer_list<_Ep> __il) _NOEXCEPT -{ - return __il.begin(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_LIBCPP_CONSTEXPR_AFTER_CXX11 -const _Ep* -end(initializer_list<_Ep> __il) _NOEXCEPT -{ - return __il.end(); -} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -} // std - -#endif // _LIBCPP_INITIALIZER_LIST diff --git a/libcxx/include/iomanip b/libcxx/include/iomanip deleted file mode 100644 index a5042c7df..000000000 --- a/libcxx/include/iomanip +++ /dev/null @@ -1,654 +0,0 @@ -// -*- C++ -*- -//===--------------------------- iomanip ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_IOMANIP -#define _LIBCPP_IOMANIP - -/* - iomanip synopsis - -namespace std { - -// types T1, T2, ... are unspecified implementation types -T1 resetiosflags(ios_base::fmtflags mask); -T2 setiosflags (ios_base::fmtflags mask); -T3 setbase(int base); -template T4 setfill(charT c); -T5 setprecision(int n); -T6 setw(int n); -template T7 get_money(moneyT& mon, bool intl = false); -template T8 put_money(const moneyT& mon, bool intl = false); -template T9 get_time(struct tm* tmb, const charT* fmt); -template T10 put_time(const struct tm* tmb, const charT* fmt); - -template - T11 quoted(const charT* s, charT delim=charT('"'), charT escape=charT('\\')); // C++14 - -template - T12 quoted(const basic_string& s, - charT delim=charT('"'), charT escape=charT('\\')); // C++14 - -template - T13 quoted(basic_string& s, - charT delim=charT('"'), charT escape=charT('\\')); // C++14 - -} // std - -*/ - -#include <__config> -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -// resetiosflags - -class __iom_t1 -{ - ios_base::fmtflags __mask_; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __iom_t1(ios_base::fmtflags __m) : __mask_(__m) {} - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t1& __x) - { - __is.unsetf(__x.__mask_); - return __is; - } - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t1& __x) - { - __os.unsetf(__x.__mask_); - return __os; - } -}; - -inline _LIBCPP_INLINE_VISIBILITY -__iom_t1 -resetiosflags(ios_base::fmtflags __mask) -{ - return __iom_t1(__mask); -} - -// setiosflags - -class __iom_t2 -{ - ios_base::fmtflags __mask_; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __iom_t2(ios_base::fmtflags __m) : __mask_(__m) {} - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t2& __x) - { - __is.setf(__x.__mask_); - return __is; - } - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t2& __x) - { - __os.setf(__x.__mask_); - return __os; - } -}; - -inline _LIBCPP_INLINE_VISIBILITY -__iom_t2 -setiosflags(ios_base::fmtflags __mask) -{ - return __iom_t2(__mask); -} - -// setbase - -class __iom_t3 -{ - int __base_; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __iom_t3(int __b) : __base_(__b) {} - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t3& __x) - { - __is.setf(__x.__base_ == 8 ? ios_base::oct : - __x.__base_ == 10 ? ios_base::dec : - __x.__base_ == 16 ? ios_base::hex : - ios_base::fmtflags(0), ios_base::basefield); - return __is; - } - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t3& __x) - { - __os.setf(__x.__base_ == 8 ? ios_base::oct : - __x.__base_ == 10 ? ios_base::dec : - __x.__base_ == 16 ? ios_base::hex : - ios_base::fmtflags(0), ios_base::basefield); - return __os; - } -}; - -inline _LIBCPP_INLINE_VISIBILITY -__iom_t3 -setbase(int __base) -{ - return __iom_t3(__base); -} - -// setfill - -template -class __iom_t4 -{ - _CharT __fill_; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __iom_t4(_CharT __c) : __fill_(__c) {} - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t4& __x) - { - __os.fill(__x.__fill_); - return __os; - } -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -__iom_t4<_CharT> -setfill(_CharT __c) -{ - return __iom_t4<_CharT>(__c); -} - -// setprecision - -class __iom_t5 -{ - int __n_; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __iom_t5(int __n) : __n_(__n) {} - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t5& __x) - { - __is.precision(__x.__n_); - return __is; - } - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t5& __x) - { - __os.precision(__x.__n_); - return __os; - } -}; - -inline _LIBCPP_INLINE_VISIBILITY -__iom_t5 -setprecision(int __n) -{ - return __iom_t5(__n); -} - -// setw - -class __iom_t6 -{ - int __n_; -public: - _LIBCPP_INLINE_VISIBILITY - explicit __iom_t6(int __n) : __n_(__n) {} - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t6& __x) - { - __is.width(__x.__n_); - return __is; - } - - template - friend - _LIBCPP_INLINE_VISIBILITY - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t6& __x) - { - __os.width(__x.__n_); - return __os; - } -}; - -inline _LIBCPP_INLINE_VISIBILITY -__iom_t6 -setw(int __n) -{ - return __iom_t6(__n); -} - -// get_money - -template class __iom_t7; - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t7<_MoneyT>& __x); - -template -class __iom_t7 -{ - _MoneyT& __mon_; - bool __intl_; -public: - _LIBCPP_INLINE_VISIBILITY - __iom_t7(_MoneyT& __mon, bool __intl) - : __mon_(__mon), __intl_(__intl) {} - - template - friend - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t7<_Mp>& __x); -}; - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t7<_MoneyT>& __x) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_istream<_CharT, _Traits>::sentry __s(__is); - if (__s) - { - typedef istreambuf_iterator<_CharT, _Traits> _Ip; - typedef money_get<_CharT, _Ip> _Fp; - ios_base::iostate __err = ios_base::goodbit; - const _Fp& __mf = use_facet<_Fp>(__is.getloc()); - __mf.get(_Ip(__is), _Ip(), __x.__intl_, __is, __err, __x.__mon_); - __is.setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __is.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __is; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__iom_t7<_MoneyT> -get_money(_MoneyT& __mon, bool __intl = false) -{ - return __iom_t7<_MoneyT>(__mon, __intl); -} - -// put_money - -template class __iom_t8; - -template -basic_ostream<_CharT, _Traits>& -operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_MoneyT>& __x); - -template -class __iom_t8 -{ - const _MoneyT& __mon_; - bool __intl_; -public: - _LIBCPP_INLINE_VISIBILITY - __iom_t8(const _MoneyT& __mon, bool __intl) - : __mon_(__mon), __intl_(__intl) {} - - template - friend - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_Mp>& __x); -}; - -template -basic_ostream<_CharT, _Traits>& -operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_MoneyT>& __x) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_ostream<_CharT, _Traits>::sentry __s(__os); - if (__s) - { - typedef ostreambuf_iterator<_CharT, _Traits> _Op; - typedef money_put<_CharT, _Op> _Fp; - const _Fp& __mf = use_facet<_Fp>(__os.getloc()); - if (__mf.put(_Op(__os), __x.__intl_, __os, __os.fill(), __x.__mon_).failed()) - __os.setstate(ios_base::badbit); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __os.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __os; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__iom_t8<_MoneyT> -put_money(const _MoneyT& __mon, bool __intl = false) -{ - return __iom_t8<_MoneyT>(__mon, __intl); -} - -// get_time - -template class __iom_t9; - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t9<_CharT>& __x); - -template -class __iom_t9 -{ - tm* __tm_; - const _CharT* __fmt_; -public: - _LIBCPP_INLINE_VISIBILITY - __iom_t9(tm* __tm, const _CharT* __fmt) - : __tm_(__tm), __fmt_(__fmt) {} - - template - friend - basic_istream<_Cp, _Traits>& - operator>>(basic_istream<_Cp, _Traits>& __is, const __iom_t9<_Cp>& __x); -}; - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t9<_CharT>& __x) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_istream<_CharT, _Traits>::sentry __s(__is); - if (__s) - { - typedef istreambuf_iterator<_CharT, _Traits> _Ip; - typedef time_get<_CharT, _Ip> _Fp; - ios_base::iostate __err = ios_base::goodbit; - const _Fp& __tf = use_facet<_Fp>(__is.getloc()); - __tf.get(_Ip(__is), _Ip(), __is, __err, __x.__tm_, - __x.__fmt_, __x.__fmt_ + _Traits::length(__x.__fmt_)); - __is.setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __is.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __is; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__iom_t9<_CharT> -get_time(tm* __tm, const _CharT* __fmt) -{ - return __iom_t9<_CharT>(__tm, __fmt); -} - -// put_time - -template class __iom_t10; - -template -basic_ostream<_CharT, _Traits>& -operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t10<_CharT>& __x); - -template -class __iom_t10 -{ - const tm* __tm_; - const _CharT* __fmt_; -public: - _LIBCPP_INLINE_VISIBILITY - __iom_t10(const tm* __tm, const _CharT* __fmt) - : __tm_(__tm), __fmt_(__fmt) {} - - template - friend - basic_ostream<_Cp, _Traits>& - operator<<(basic_ostream<_Cp, _Traits>& __os, const __iom_t10<_Cp>& __x); -}; - -template -basic_ostream<_CharT, _Traits>& -operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t10<_CharT>& __x) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_ostream<_CharT, _Traits>::sentry __s(__os); - if (__s) - { - typedef ostreambuf_iterator<_CharT, _Traits> _Op; - typedef time_put<_CharT, _Op> _Fp; - const _Fp& __tf = use_facet<_Fp>(__os.getloc()); - if (__tf.put(_Op(__os), __os, __os.fill(), __x.__tm_, - __x.__fmt_, __x.__fmt_ + _Traits::length(__x.__fmt_)).failed()) - __os.setstate(ios_base::badbit); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __os.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __os; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__iom_t10<_CharT> -put_time(const tm* __tm, const _CharT* __fmt) -{ - return __iom_t10<_CharT>(__tm, __fmt); -} - -#if _LIBCPP_STD_VER > 11 - -template -std::basic_ostream<_CharT, _Traits> & -__quoted_output ( basic_ostream<_CharT, _Traits> &__os, - _ForwardIterator __first, _ForwardIterator __last, _CharT __delim, _CharT __escape ) -{ - _VSTD::basic_string<_CharT, _Traits> __str; - __str.push_back(__delim); - for ( ; __first != __last; ++ __first ) - { - if (_Traits::eq (*__first, __escape) || _Traits::eq (*__first, __delim)) - __str.push_back(__escape); - __str.push_back(*__first); - } - __str.push_back(__delim); - return __put_character_sequence(__os, __str.data(), __str.size()); -} - -template -basic_istream<_CharT, _Traits> & -__quoted_input ( basic_istream<_CharT, _Traits> &__is, _String & __string, _CharT __delim, _CharT __escape ) -{ - __string.clear (); - _CharT __c; - __is >> __c; - if ( __is.fail ()) - return __is; - - if (!_Traits::eq (__c, __delim)) // no delimiter, read the whole string - { - __is.unget (); - __is >> __string; - return __is; - } - - __save_flags<_CharT, _Traits> sf(__is); - noskipws (__is); - while (true) - { - __is >> __c; - if ( __is.fail ()) - break; - if (_Traits::eq (__c, __escape)) - { - __is >> __c; - if ( __is.fail ()) - break; - } - else if (_Traits::eq (__c, __delim)) - break; - __string.push_back ( __c ); - } - return __is; -} - - -template > -struct __quoted_output_proxy -{ - _Iter __first; - _Iter __last; - _CharT __delim; - _CharT __escape; - - __quoted_output_proxy(_Iter __f, _Iter __l, _CharT __d, _CharT __e) - : __first(__f), __last(__l), __delim(__d), __escape(__e) {} - // This would be a nice place for a string_ref -}; - -template -basic_ostream<_CharT, _Traits>& operator<<( - basic_ostream<_CharT, _Traits>& __os, - const __quoted_output_proxy<_CharT, _Iter, _Traits> & __proxy) -{ - return __quoted_output (__os, __proxy.__first, __proxy.__last, __proxy.__delim, __proxy.__escape); -} - -template -struct __quoted_proxy -{ - basic_string<_CharT, _Traits, _Allocator> &__string; - _CharT __delim; - _CharT __escape; - - __quoted_proxy(basic_string<_CharT, _Traits, _Allocator> &__s, _CharT __d, _CharT __e) - : __string(__s), __delim(__d), __escape(__e) {} -}; - -template -_LIBCPP_INLINE_VISIBILITY -basic_ostream<_CharT, _Traits>& operator<<( - basic_ostream<_CharT, _Traits>& __os, - const __quoted_proxy<_CharT, _Traits, _Allocator> & __proxy) -{ - return __quoted_output (__os, __proxy.__string.cbegin (), __proxy.__string.cend (), __proxy.__delim, __proxy.__escape); -} - -// extractor for non-const basic_string& proxies -template -_LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& operator>>( - basic_istream<_CharT, _Traits>& __is, - const __quoted_proxy<_CharT, _Traits, _Allocator> & __proxy) -{ - return __quoted_input ( __is, __proxy.__string, __proxy.__delim, __proxy.__escape ); -} - - -template -_LIBCPP_INLINE_VISIBILITY -__quoted_output_proxy<_CharT, const _CharT *> -quoted ( const _CharT *__s, _CharT __delim = _CharT('"'), _CharT __escape =_CharT('\\')) -{ - const _CharT *__end = __s; - while ( *__end ) ++__end; - return __quoted_output_proxy<_CharT, const _CharT *> ( __s, __end, __delim, __escape ); -} - -template -_LIBCPP_INLINE_VISIBILITY -__quoted_output_proxy<_CharT, typename basic_string <_CharT, _Traits, _Allocator>::const_iterator> -quoted ( const basic_string <_CharT, _Traits, _Allocator> &__s, _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\')) -{ - return __quoted_output_proxy<_CharT, - typename basic_string <_CharT, _Traits, _Allocator>::const_iterator> - ( __s.cbegin(), __s.cend (), __delim, __escape ); -} - -template -__quoted_proxy<_CharT, _Traits, _Allocator> -quoted ( basic_string <_CharT, _Traits, _Allocator> &__s, _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\')) -{ - return __quoted_proxy<_CharT, _Traits, _Allocator>( __s, __delim, __escape ); -} -#endif - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_IOMANIP diff --git a/libcxx/include/ios b/libcxx/include/ios deleted file mode 100644 index ff79998b0..000000000 --- a/libcxx/include/ios +++ /dev/null @@ -1,1023 +0,0 @@ -// -*- C++ -*- -//===---------------------------- ios -------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_IOS -#define _LIBCPP_IOS - -/* - ios synopsis - -#include - -namespace std -{ - -typedef OFF_T streamoff; -typedef SZ_T streamsize; -template class fpos; - -class ios_base -{ -public: - class failure; - - typedef T1 fmtflags; - static constexpr fmtflags boolalpha; - static constexpr fmtflags dec; - static constexpr fmtflags fixed; - static constexpr fmtflags hex; - static constexpr fmtflags internal; - static constexpr fmtflags left; - static constexpr fmtflags oct; - static constexpr fmtflags right; - static constexpr fmtflags scientific; - static constexpr fmtflags showbase; - static constexpr fmtflags showpoint; - static constexpr fmtflags showpos; - static constexpr fmtflags skipws; - static constexpr fmtflags unitbuf; - static constexpr fmtflags uppercase; - static constexpr fmtflags adjustfield; - static constexpr fmtflags basefield; - static constexpr fmtflags floatfield; - - typedef T2 iostate; - static constexpr iostate badbit; - static constexpr iostate eofbit; - static constexpr iostate failbit; - static constexpr iostate goodbit; - - typedef T3 openmode; - static constexpr openmode app; - static constexpr openmode ate; - static constexpr openmode binary; - static constexpr openmode in; - static constexpr openmode out; - static constexpr openmode trunc; - - typedef T4 seekdir; - static constexpr seekdir beg; - static constexpr seekdir cur; - static constexpr seekdir end; - - class Init; - - // 27.5.2.2 fmtflags state: - fmtflags flags() const; - fmtflags flags(fmtflags fmtfl); - fmtflags setf(fmtflags fmtfl); - fmtflags setf(fmtflags fmtfl, fmtflags mask); - void unsetf(fmtflags mask); - - streamsize precision() const; - streamsize precision(streamsize prec); - streamsize width() const; - streamsize width(streamsize wide); - - // 27.5.2.3 locales: - locale imbue(const locale& loc); - locale getloc() const; - - // 27.5.2.5 storage: - static int xalloc(); - long& iword(int index); - void*& pword(int index); - - // destructor - virtual ~ios_base(); - - // 27.5.2.6 callbacks; - enum event { erase_event, imbue_event, copyfmt_event }; - typedef void (*event_callback)(event, ios_base&, int index); - void register_callback(event_callback fn, int index); - - ios_base(const ios_base&) = delete; - ios_base& operator=(const ios_base&) = delete; - - static bool sync_with_stdio(bool sync = true); - -protected: - ios_base(); -}; - -template > -class basic_ios - : public ios_base -{ -public: - // types: - 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; - - operator unspecified-bool-type() const; - bool operator!() const; - iostate rdstate() const; - void clear(iostate state = goodbit); - void setstate(iostate state); - bool good() const; - bool eof() const; - bool fail() const; - bool bad() const; - - iostate exceptions() const; - void exceptions(iostate except); - - // 27.5.4.1 Constructor/destructor: - explicit basic_ios(basic_streambuf* sb); - virtual ~basic_ios(); - - // 27.5.4.2 Members: - basic_ostream* tie() const; - basic_ostream* tie(basic_ostream* tiestr); - - basic_streambuf* rdbuf() const; - basic_streambuf* rdbuf(basic_streambuf* sb); - - basic_ios& copyfmt(const basic_ios& rhs); - - char_type fill() const; - char_type fill(char_type ch); - - locale imbue(const locale& loc); - - char narrow(char_type c, char dfault) const; - char_type widen(char c) const; - - basic_ios(const basic_ios& ) = delete; - basic_ios& operator=(const basic_ios&) = delete; - -protected: - basic_ios(); - void init(basic_streambuf* sb); - void move(basic_ios& rhs); - void swap(basic_ios& rhs) noexcept; - void set_rdbuf(basic_streambuf* sb); -}; - -// 27.5.5, manipulators: -ios_base& boolalpha (ios_base& str); -ios_base& noboolalpha(ios_base& str); -ios_base& showbase (ios_base& str); -ios_base& noshowbase (ios_base& str); -ios_base& showpoint (ios_base& str); -ios_base& noshowpoint(ios_base& str); -ios_base& showpos (ios_base& str); -ios_base& noshowpos (ios_base& str); -ios_base& skipws (ios_base& str); -ios_base& noskipws (ios_base& str); -ios_base& uppercase (ios_base& str); -ios_base& nouppercase(ios_base& str); -ios_base& unitbuf (ios_base& str); -ios_base& nounitbuf (ios_base& str); - -// 27.5.5.2 adjustfield: -ios_base& internal (ios_base& str); -ios_base& left (ios_base& str); -ios_base& right (ios_base& str); - -// 27.5.5.3 basefield: -ios_base& dec (ios_base& str); -ios_base& hex (ios_base& str); -ios_base& oct (ios_base& str); - -// 27.5.5.4 floatfield: -ios_base& fixed (ios_base& str); -ios_base& scientific (ios_base& str); -ios_base& hexfloat (ios_base& str); -ios_base& defaultfloat(ios_base& str); - -// 27.5.5.5 error reporting: -enum class io_errc -{ - stream = 1 -}; - -concept_map ErrorCodeEnum { }; -error_code make_error_code(io_errc e) noexcept; -error_condition make_error_condition(io_errc e) noexcept; -storage-class-specifier const error_category& iostream_category() noexcept; - -} // std - -*/ - -#include <__config> -#include -#include <__locale> -#include - -#if __has_feature(cxx_atomic) && !defined(_LIBCPP_HAS_NO_THREADS) -#include // for __xindex_ -#endif - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -typedef ptrdiff_t streamsize; - -class _LIBCPP_TYPE_VIS ios_base -{ -public: - class _LIBCPP_TYPE_VIS failure; - - typedef unsigned int fmtflags; - static const fmtflags boolalpha = 0x0001; - static const fmtflags dec = 0x0002; - static const fmtflags fixed = 0x0004; - static const fmtflags hex = 0x0008; - static const fmtflags internal = 0x0010; - static const fmtflags left = 0x0020; - static const fmtflags oct = 0x0040; - static const fmtflags right = 0x0080; - static const fmtflags scientific = 0x0100; - static const fmtflags showbase = 0x0200; - static const fmtflags showpoint = 0x0400; - static const fmtflags showpos = 0x0800; - static const fmtflags skipws = 0x1000; - static const fmtflags unitbuf = 0x2000; - static const fmtflags uppercase = 0x4000; - static const fmtflags adjustfield = left | right | internal; - static const fmtflags basefield = dec | oct | hex; - static const fmtflags floatfield = scientific | fixed; - - typedef unsigned int iostate; - typedef iostate io_state; - static const iostate badbit = 0x1; - static const iostate eofbit = 0x2; - static const iostate failbit = 0x4; - static const iostate goodbit = 0x0; - - typedef unsigned int openmode; - typedef openmode open_mode; - static const openmode app = 0x01; - static const openmode ate = 0x02; - static const openmode binary = 0x04; - static const openmode in = 0x08; - static const openmode out = 0x10; - static const openmode trunc = 0x20; - - enum seekdir {beg, cur, end}; - typedef seekdir seek_dir; - - typedef _VSTD::streamoff streamoff; - typedef _VSTD::streampos streampos; - - class _LIBCPP_TYPE_VIS Init; - - // 27.5.2.2 fmtflags state: - _LIBCPP_INLINE_VISIBILITY fmtflags flags() const; - _LIBCPP_INLINE_VISIBILITY fmtflags flags(fmtflags __fmtfl); - _LIBCPP_INLINE_VISIBILITY fmtflags setf(fmtflags __fmtfl); - _LIBCPP_INLINE_VISIBILITY fmtflags setf(fmtflags __fmtfl, fmtflags __mask); - _LIBCPP_INLINE_VISIBILITY void unsetf(fmtflags __mask); - - _LIBCPP_INLINE_VISIBILITY streamsize precision() const; - _LIBCPP_INLINE_VISIBILITY streamsize precision(streamsize __prec); - _LIBCPP_INLINE_VISIBILITY streamsize width() const; - _LIBCPP_INLINE_VISIBILITY streamsize width(streamsize __wide); - - // 27.5.2.3 locales: - locale imbue(const locale& __loc); - locale getloc() const; - - // 27.5.2.5 storage: - static int xalloc(); - long& iword(int __index); - void*& pword(int __index); - - // destructor - virtual ~ios_base(); - - // 27.5.2.6 callbacks; - enum event { erase_event, imbue_event, copyfmt_event }; - typedef void (*event_callback)(event, ios_base&, int __index); - void register_callback(event_callback __fn, int __index); - -private: - ios_base(const ios_base&); // = delete; - ios_base& operator=(const ios_base&); // = delete; - -public: - static bool sync_with_stdio(bool __sync = true); - - _LIBCPP_INLINE_VISIBILITY iostate rdstate() const; - void clear(iostate __state = goodbit); - _LIBCPP_INLINE_VISIBILITY void setstate(iostate __state); - - _LIBCPP_INLINE_VISIBILITY bool good() const; - _LIBCPP_INLINE_VISIBILITY bool eof() const; - _LIBCPP_INLINE_VISIBILITY bool fail() const; - _LIBCPP_INLINE_VISIBILITY bool bad() const; - - _LIBCPP_INLINE_VISIBILITY iostate exceptions() const; - _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __iostate); - - void __set_badbit_and_consider_rethrow(); - void __set_failbit_and_consider_rethrow(); - -protected: - _LIBCPP_INLINE_VISIBILITY - ios_base() {// purposefully does no initialization - } - - void init(void* __sb); - _LIBCPP_ALWAYS_INLINE void* rdbuf() const {return __rdbuf_;} - - _LIBCPP_ALWAYS_INLINE - void rdbuf(void* __sb) - { - __rdbuf_ = __sb; - clear(); - } - - void __call_callbacks(event); - void copyfmt(const ios_base&); - void move(ios_base&); - void swap(ios_base&) _NOEXCEPT; - - _LIBCPP_ALWAYS_INLINE - void set_rdbuf(void* __sb) - { - __rdbuf_ = __sb; - } - -private: - // All data members must be scalars - fmtflags __fmtflags_; - streamsize __precision_; - streamsize __width_; - iostate __rdstate_; - iostate __exceptions_; - void* __rdbuf_; - void* __loc_; - event_callback* __fn_; - int* __index_; - size_t __event_size_; - size_t __event_cap_; -#if __has_feature(cxx_atomic) && !defined(_LIBCPP_HAS_NO_THREADS) - static atomic __xindex_; -#else - static int __xindex_; -#endif - long* __iarray_; - size_t __iarray_size_; - size_t __iarray_cap_; - void** __parray_; - size_t __parray_size_; - size_t __parray_cap_; -}; - -//enum class io_errc -_LIBCPP_DECLARE_STRONG_ENUM(io_errc) -{ - stream = 1 -}; -_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(io_errc) - -template <> -struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum : public true_type { }; - -#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS -template <> -struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum : public true_type { }; -#endif - -_LIBCPP_FUNC_VIS -const error_category& iostream_category() _NOEXCEPT; - -inline _LIBCPP_INLINE_VISIBILITY -error_code -make_error_code(io_errc __e) _NOEXCEPT -{ - return error_code(static_cast(__e), iostream_category()); -} - -inline _LIBCPP_INLINE_VISIBILITY -error_condition -make_error_condition(io_errc __e) _NOEXCEPT -{ - return error_condition(static_cast(__e), iostream_category()); -} - -class _LIBCPP_EXCEPTION_ABI ios_base::failure - : public system_error -{ -public: - explicit failure(const string& __msg, const error_code& __ec = io_errc::stream); - explicit failure(const char* __msg, const error_code& __ec = io_errc::stream); - virtual ~failure() throw(); -}; - -class _LIBCPP_TYPE_VIS ios_base::Init -{ -public: - Init(); - ~Init(); -}; - -// fmtflags - -inline _LIBCPP_INLINE_VISIBILITY -ios_base::fmtflags -ios_base::flags() const -{ - return __fmtflags_; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base::fmtflags -ios_base::flags(fmtflags __fmtfl) -{ - fmtflags __r = __fmtflags_; - __fmtflags_ = __fmtfl; - return __r; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base::fmtflags -ios_base::setf(fmtflags __fmtfl) -{ - fmtflags __r = __fmtflags_; - __fmtflags_ |= __fmtfl; - return __r; -} - -inline _LIBCPP_INLINE_VISIBILITY -void -ios_base::unsetf(fmtflags __mask) -{ - __fmtflags_ &= ~__mask; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base::fmtflags -ios_base::setf(fmtflags __fmtfl, fmtflags __mask) -{ - fmtflags __r = __fmtflags_; - unsetf(__mask); - __fmtflags_ |= __fmtfl & __mask; - return __r; -} - -// precision - -inline _LIBCPP_INLINE_VISIBILITY -streamsize -ios_base::precision() const -{ - return __precision_; -} - -inline _LIBCPP_INLINE_VISIBILITY -streamsize -ios_base::precision(streamsize __prec) -{ - streamsize __r = __precision_; - __precision_ = __prec; - return __r; -} - -// width - -inline _LIBCPP_INLINE_VISIBILITY -streamsize -ios_base::width() const -{ - return __width_; -} - -inline _LIBCPP_INLINE_VISIBILITY -streamsize -ios_base::width(streamsize __wide) -{ - streamsize __r = __width_; - __width_ = __wide; - return __r; -} - -// iostate - -inline _LIBCPP_INLINE_VISIBILITY -ios_base::iostate -ios_base::rdstate() const -{ - return __rdstate_; -} - -inline _LIBCPP_INLINE_VISIBILITY -void -ios_base::setstate(iostate __state) -{ - clear(__rdstate_ | __state); -} - -inline _LIBCPP_INLINE_VISIBILITY -bool -ios_base::good() const -{ - return __rdstate_ == 0; -} - -inline _LIBCPP_INLINE_VISIBILITY -bool -ios_base::eof() const -{ - return (__rdstate_ & eofbit) != 0; -} - -inline _LIBCPP_INLINE_VISIBILITY -bool -ios_base::fail() const -{ - return (__rdstate_ & (failbit | badbit)) != 0; -} - -inline _LIBCPP_INLINE_VISIBILITY -bool -ios_base::bad() const -{ - return (__rdstate_ & badbit) != 0; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base::iostate -ios_base::exceptions() const -{ - return __exceptions_; -} - -inline _LIBCPP_INLINE_VISIBILITY -void -ios_base::exceptions(iostate __iostate) -{ - __exceptions_ = __iostate; - clear(__rdstate_); -} - -template -class _LIBCPP_TYPE_VIS_ONLY basic_ios - : public ios_base -{ -public: - // types: - typedef _CharT char_type; - typedef _Traits traits_type; - - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - _LIBCPP_ALWAYS_INLINE - _LIBCPP_EXPLICIT - operator bool() const {return !fail();} - _LIBCPP_ALWAYS_INLINE bool operator!() const {return fail();} - _LIBCPP_ALWAYS_INLINE iostate rdstate() const {return ios_base::rdstate();} - _LIBCPP_ALWAYS_INLINE void clear(iostate __state = goodbit) {ios_base::clear(__state);} - _LIBCPP_ALWAYS_INLINE void setstate(iostate __state) {ios_base::setstate(__state);} - _LIBCPP_ALWAYS_INLINE bool good() const {return ios_base::good();} - _LIBCPP_ALWAYS_INLINE bool eof() const {return ios_base::eof();} - _LIBCPP_ALWAYS_INLINE bool fail() const {return ios_base::fail();} - _LIBCPP_ALWAYS_INLINE bool bad() const {return ios_base::bad();} - - _LIBCPP_ALWAYS_INLINE iostate exceptions() const {return ios_base::exceptions();} - _LIBCPP_ALWAYS_INLINE void exceptions(iostate __iostate) {ios_base::exceptions(__iostate);} - - // 27.5.4.1 Constructor/destructor: - _LIBCPP_INLINE_VISIBILITY - explicit basic_ios(basic_streambuf* __sb); - virtual ~basic_ios(); - - // 27.5.4.2 Members: - _LIBCPP_INLINE_VISIBILITY - basic_ostream* tie() const; - _LIBCPP_INLINE_VISIBILITY - basic_ostream* tie(basic_ostream* __tiestr); - - _LIBCPP_INLINE_VISIBILITY - basic_streambuf* rdbuf() const; - _LIBCPP_INLINE_VISIBILITY - basic_streambuf* rdbuf(basic_streambuf* __sb); - - basic_ios& copyfmt(const basic_ios& __rhs); - - _LIBCPP_INLINE_VISIBILITY - char_type fill() const; - _LIBCPP_INLINE_VISIBILITY - char_type fill(char_type __ch); - - _LIBCPP_INLINE_VISIBILITY - locale imbue(const locale& __loc); - - _LIBCPP_INLINE_VISIBILITY - char narrow(char_type __c, char __dfault) const; - _LIBCPP_INLINE_VISIBILITY - char_type widen(char __c) const; - -protected: - _LIBCPP_ALWAYS_INLINE - basic_ios() {// purposefully does no initialization - } - _LIBCPP_INLINE_VISIBILITY - void init(basic_streambuf* __sb); - - _LIBCPP_INLINE_VISIBILITY - void move(basic_ios& __rhs); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_ALWAYS_INLINE - void move(basic_ios&& __rhs) {move(__rhs);} -#endif - _LIBCPP_INLINE_VISIBILITY - void swap(basic_ios& __rhs) _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY - void set_rdbuf(basic_streambuf* __sb); -private: - basic_ostream* __tie_; - mutable int_type __fill_; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ios<_CharT, _Traits>::basic_ios(basic_streambuf* __sb) -{ - init(__sb); -} - -template -basic_ios<_CharT, _Traits>::~basic_ios() -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_ios<_CharT, _Traits>::init(basic_streambuf* __sb) -{ - ios_base::init(__sb); - __tie_ = 0; - __fill_ = traits_type::eof(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ostream<_CharT, _Traits>* -basic_ios<_CharT, _Traits>::tie() const -{ - return __tie_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_ostream<_CharT, _Traits>* -basic_ios<_CharT, _Traits>::tie(basic_ostream* __tiestr) -{ - basic_ostream* __r = __tie_; - __tie_ = __tiestr; - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_streambuf<_CharT, _Traits>* -basic_ios<_CharT, _Traits>::rdbuf() const -{ - return static_cast*>(ios_base::rdbuf()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_streambuf<_CharT, _Traits>* -basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf* __sb) -{ - basic_streambuf* __r = rdbuf(); - ios_base::rdbuf(__sb); - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -locale -basic_ios<_CharT, _Traits>::imbue(const locale& __loc) -{ - locale __r = getloc(); - ios_base::imbue(__loc); - if (rdbuf()) - rdbuf()->pubimbue(__loc); - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -char -basic_ios<_CharT, _Traits>::narrow(char_type __c, char __dfault) const -{ - return use_facet >(getloc()).narrow(__c, __dfault); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_CharT -basic_ios<_CharT, _Traits>::widen(char __c) const -{ - return use_facet >(getloc()).widen(__c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_CharT -basic_ios<_CharT, _Traits>::fill() const -{ - if (traits_type::eq_int_type(traits_type::eof(), __fill_)) - __fill_ = widen(' '); - return __fill_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_CharT -basic_ios<_CharT, _Traits>::fill(char_type __ch) -{ - char_type __r = __fill_; - __fill_ = __ch; - return __r; -} - -template -basic_ios<_CharT, _Traits>& -basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) -{ - if (this != &__rhs) - { - __call_callbacks(erase_event); - ios_base::copyfmt(__rhs); - __tie_ = __rhs.__tie_; - __fill_ = __rhs.__fill_; - __call_callbacks(copyfmt_event); - exceptions(__rhs.exceptions()); - } - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_ios<_CharT, _Traits>::move(basic_ios& __rhs) -{ - ios_base::move(__rhs); - __tie_ = __rhs.__tie_; - __rhs.__tie_ = 0; - __fill_ = __rhs.__fill_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_ios<_CharT, _Traits>::swap(basic_ios& __rhs) _NOEXCEPT -{ - ios_base::swap(__rhs); - _VSTD::swap(__tie_, __rhs.__tie_); - _VSTD::swap(__fill_, __rhs.__fill_); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_ios<_CharT, _Traits>::set_rdbuf(basic_streambuf* __sb) -{ - ios_base::set_rdbuf(__sb); -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -boolalpha(ios_base& __str) -{ - __str.setf(ios_base::boolalpha); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -noboolalpha(ios_base& __str) -{ - __str.unsetf(ios_base::boolalpha); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -showbase(ios_base& __str) -{ - __str.setf(ios_base::showbase); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -noshowbase(ios_base& __str) -{ - __str.unsetf(ios_base::showbase); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -showpoint(ios_base& __str) -{ - __str.setf(ios_base::showpoint); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -noshowpoint(ios_base& __str) -{ - __str.unsetf(ios_base::showpoint); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -showpos(ios_base& __str) -{ - __str.setf(ios_base::showpos); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -noshowpos(ios_base& __str) -{ - __str.unsetf(ios_base::showpos); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -skipws(ios_base& __str) -{ - __str.setf(ios_base::skipws); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -noskipws(ios_base& __str) -{ - __str.unsetf(ios_base::skipws); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -uppercase(ios_base& __str) -{ - __str.setf(ios_base::uppercase); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -nouppercase(ios_base& __str) -{ - __str.unsetf(ios_base::uppercase); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -unitbuf(ios_base& __str) -{ - __str.setf(ios_base::unitbuf); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -nounitbuf(ios_base& __str) -{ - __str.unsetf(ios_base::unitbuf); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -internal(ios_base& __str) -{ - __str.setf(ios_base::internal, ios_base::adjustfield); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -left(ios_base& __str) -{ - __str.setf(ios_base::left, ios_base::adjustfield); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -right(ios_base& __str) -{ - __str.setf(ios_base::right, ios_base::adjustfield); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -dec(ios_base& __str) -{ - __str.setf(ios_base::dec, ios_base::basefield); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -hex(ios_base& __str) -{ - __str.setf(ios_base::hex, ios_base::basefield); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -oct(ios_base& __str) -{ - __str.setf(ios_base::oct, ios_base::basefield); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -fixed(ios_base& __str) -{ - __str.setf(ios_base::fixed, ios_base::floatfield); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -scientific(ios_base& __str) -{ - __str.setf(ios_base::scientific, ios_base::floatfield); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -hexfloat(ios_base& __str) -{ - __str.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); - return __str; -} - -inline _LIBCPP_INLINE_VISIBILITY -ios_base& -defaultfloat(ios_base& __str) -{ - __str.unsetf(ios_base::floatfield); - return __str; -} - -template -class __save_flags -{ - typedef basic_ios<_CharT, _Traits> __stream_type; - typedef typename __stream_type::fmtflags fmtflags; - - __stream_type& __stream_; - fmtflags __fmtflags_; - _CharT __fill_; - - __save_flags(const __save_flags&); - __save_flags& operator=(const __save_flags&); -public: - _LIBCPP_INLINE_VISIBILITY - explicit __save_flags(__stream_type& __stream) - : __stream_(__stream), - __fmtflags_(__stream.flags()), - __fill_(__stream.fill()) - {} - _LIBCPP_INLINE_VISIBILITY - ~__save_flags() - { - __stream_.flags(__fmtflags_); - __stream_.fill(__fill_); - } -}; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_IOS diff --git a/libcxx/include/iosfwd b/libcxx/include/iosfwd deleted file mode 100644 index eccfd349a..000000000 --- a/libcxx/include/iosfwd +++ /dev/null @@ -1,199 +0,0 @@ -// -*- C++ -*- -//===--------------------------- iosfwd -----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_IOSFWD -#define _LIBCPP_IOSFWD - -/* - iosfwd synopsis - -namespace std -{ - -template struct char_traits; -template class allocator; - -class ios_base; -template > class basic_ios; - -template > class basic_streambuf; -template > class basic_istream; -template > class basic_ostream; -template > class basic_iostream; - -template , class Allocator = allocator > - class basic_stringbuf; -template , class Allocator = allocator > - class basic_istringstream; -template , class Allocator = allocator > - class basic_ostringstream; -template , class Allocator = allocator > - class basic_stringstream; - -template > class basic_filebuf; -template > class basic_ifstream; -template > class basic_ofstream; -template > class basic_fstream; - -template > class istreambuf_iterator; -template > class ostreambuf_iterator; - -typedef basic_ios ios; -typedef basic_ios wios; - -typedef basic_streambuf streambuf; -typedef basic_istream istream; -typedef basic_ostream ostream; -typedef basic_iostream iostream; - -typedef basic_stringbuf stringbuf; -typedef basic_istringstream istringstream; -typedef basic_ostringstream ostringstream; -typedef basic_stringstream stringstream; - -typedef basic_filebuf filebuf; -typedef basic_ifstream ifstream; -typedef basic_ofstream ofstream; -typedef basic_fstream fstream; - -typedef basic_streambuf wstreambuf; -typedef basic_istream wistream; -typedef basic_ostream wostream; -typedef basic_iostream wiostream; - -typedef basic_stringbuf wstringbuf; -typedef basic_istringstream wistringstream; -typedef basic_ostringstream wostringstream; -typedef basic_stringstream wstringstream; - -typedef basic_filebuf wfilebuf; -typedef basic_ifstream wifstream; -typedef basic_ofstream wofstream; -typedef basic_fstream wfstream; - -template class fpos; -typedef fpos::state_type> streampos; -typedef fpos::state_type> wstreampos; - -} // std - -*/ - -#include <__config> -#include // for mbstate_t - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -class _LIBCPP_TYPE_VIS ios_base; - -template struct _LIBCPP_TYPE_VIS_ONLY char_traits; -template class _LIBCPP_TYPE_VIS_ONLY allocator; - -template > - class _LIBCPP_TYPE_VIS_ONLY basic_ios; - -template > - class _LIBCPP_TYPE_VIS_ONLY basic_streambuf; -template > - class _LIBCPP_TYPE_VIS_ONLY basic_istream; -template > - class _LIBCPP_TYPE_VIS_ONLY basic_ostream; -template > - class _LIBCPP_TYPE_VIS_ONLY basic_iostream; - -template , - class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS_ONLY basic_stringbuf; -template , - class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS_ONLY basic_istringstream; -template , - class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS_ONLY basic_ostringstream; -template , - class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS_ONLY basic_stringstream; - -template > - class _LIBCPP_TYPE_VIS_ONLY basic_filebuf; -template > - class _LIBCPP_TYPE_VIS_ONLY basic_ifstream; -template > - class _LIBCPP_TYPE_VIS_ONLY basic_ofstream; -template > - class _LIBCPP_TYPE_VIS_ONLY basic_fstream; - -template > - class _LIBCPP_TYPE_VIS_ONLY istreambuf_iterator; -template > - class _LIBCPP_TYPE_VIS_ONLY ostreambuf_iterator; - -typedef basic_ios ios; -typedef basic_ios wios; - -typedef basic_streambuf streambuf; -typedef basic_istream istream; -typedef basic_ostream ostream; -typedef basic_iostream iostream; - -typedef basic_stringbuf stringbuf; -typedef basic_istringstream istringstream; -typedef basic_ostringstream ostringstream; -typedef basic_stringstream stringstream; - -typedef basic_filebuf filebuf; -typedef basic_ifstream ifstream; -typedef basic_ofstream ofstream; -typedef basic_fstream fstream; - -typedef basic_streambuf wstreambuf; -typedef basic_istream wistream; -typedef basic_ostream wostream; -typedef basic_iostream wiostream; - -typedef basic_stringbuf wstringbuf; -typedef basic_istringstream wistringstream; -typedef basic_ostringstream wostringstream; -typedef basic_stringstream wstringstream; - -typedef basic_filebuf wfilebuf; -typedef basic_ifstream wifstream; -typedef basic_ofstream wofstream; -typedef basic_fstream wfstream; - -template class _LIBCPP_TYPE_VIS_ONLY fpos; -typedef fpos streampos; -typedef fpos wstreampos; -#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS -typedef fpos u16streampos; -typedef fpos u32streampos; -#endif // _LIBCPP_HAS_NO_UNICODE_CHARS - -#if defined(_NEWLIB_VERSION) -// On newlib, off_t is 'long int' -typedef long int streamoff; // for char_traits in -#else -typedef long long streamoff; // for char_traits in -#endif - -template - class _Traits = char_traits<_CharT>, - class _Allocator = allocator<_CharT> > - class _LIBCPP_TYPE_VIS_ONLY basic_string; -typedef basic_string, allocator > string; -typedef basic_string, allocator > wstring; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_IOSFWD diff --git a/libcxx/include/iostream b/libcxx/include/iostream deleted file mode 100644 index 136a84977..000000000 --- a/libcxx/include/iostream +++ /dev/null @@ -1,64 +0,0 @@ -// -*- C++ -*- -//===--------------------------- iostream ---------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_IOSTREAM -#define _LIBCPP_IOSTREAM - -/* - iostream synopsis - -#include -#include -#include -#include - -namespace std { - -extern istream cin; -extern ostream cout; -extern ostream cerr; -extern ostream clog; -extern wistream wcin; -extern wostream wcout; -extern wostream wcerr; -extern wostream wclog; - -} // std - -*/ - -#include <__config> -#include -#include -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -#ifndef _LIBCPP_HAS_NO_STDIN -extern _LIBCPP_FUNC_VIS istream cin; -extern _LIBCPP_FUNC_VIS wistream wcin; -#endif -#ifndef _LIBCPP_HAS_NO_STDOUT -extern _LIBCPP_FUNC_VIS ostream cout; -extern _LIBCPP_FUNC_VIS wostream wcout; -#endif -extern _LIBCPP_FUNC_VIS ostream cerr; -extern _LIBCPP_FUNC_VIS wostream wcerr; -extern _LIBCPP_FUNC_VIS ostream clog; -extern _LIBCPP_FUNC_VIS wostream wclog; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_IOSTREAM diff --git a/libcxx/include/istream b/libcxx/include/istream deleted file mode 100644 index 168a4d063..000000000 --- a/libcxx/include/istream +++ /dev/null @@ -1,1732 +0,0 @@ -// -*- C++ -*- -//===--------------------------- istream ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_ISTREAM -#define _LIBCPP_ISTREAM - -/* - istream synopsis - -template > -class basic_istream - : virtual public basic_ios -{ -public: - // types (inherited from basic_ios (27.5.4)): - typedef charT char_type; - typedef traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - // 27.7.1.1.1 Constructor/destructor: - explicit basic_istream(basic_streambuf* sb); - basic_istream(basic_istream&& rhs); - virtual ~basic_istream(); - - // 27.7.1.1.2 Assign/swap: - basic_istream& operator=(basic_istream&& rhs); - void swap(basic_istream& rhs); - - // 27.7.1.1.3 Prefix/suffix: - class sentry; - - // 27.7.1.2 Formatted input: - basic_istream& operator>>(basic_istream& (*pf)(basic_istream&)); - basic_istream& operator>>(basic_ios& - (*pf)(basic_ios&)); - basic_istream& operator>>(ios_base& (*pf)(ios_base&)); - basic_istream& operator>>(basic_streambuf* sb); - basic_istream& operator>>(bool& n); - basic_istream& operator>>(short& n); - basic_istream& operator>>(unsigned short& n); - basic_istream& operator>>(int& n); - basic_istream& operator>>(unsigned int& n); - basic_istream& operator>>(long& n); - basic_istream& operator>>(unsigned long& n); - basic_istream& operator>>(long long& n); - basic_istream& operator>>(unsigned long long& n); - basic_istream& operator>>(float& f); - basic_istream& operator>>(double& f); - basic_istream& operator>>(long double& f); - basic_istream& operator>>(void*& p); - - // 27.7.1.3 Unformatted input: - streamsize gcount() const; - int_type get(); - basic_istream& get(char_type& c); - basic_istream& get(char_type* s, streamsize n); - basic_istream& get(char_type* s, streamsize n, char_type delim); - basic_istream& get(basic_streambuf& sb); - basic_istream& get(basic_streambuf& sb, char_type delim); - - basic_istream& getline(char_type* s, streamsize n); - basic_istream& getline(char_type* s, streamsize n, char_type delim); - - basic_istream& ignore(streamsize n = 1, int_type delim = traits_type::eof()); - int_type peek(); - basic_istream& read (char_type* s, streamsize n); - streamsize readsome(char_type* s, streamsize n); - - basic_istream& putback(char_type c); - basic_istream& unget(); - int sync(); - - pos_type tellg(); - basic_istream& seekg(pos_type); - basic_istream& seekg(off_type, ios_base::seekdir); -protected: - basic_istream(const basic_istream& rhs) = delete; - basic_istream(basic_istream&& rhs); - // 27.7.2.1.2 Assign/swap: - basic_istream& operator=(const basic_istream& rhs) = delete; - basic_istream& operator=(basic_istream&& rhs); - void swap(basic_istream& rhs); -}; - -// 27.7.1.2.3 character extraction templates: -template - basic_istream& operator>>(basic_istream&, charT&); - -template - basic_istream& operator>>(basic_istream&, unsigned char&); - -template - basic_istream& operator>>(basic_istream&, signed char&); - -template - basic_istream& operator>>(basic_istream&, charT*); - -template - basic_istream& operator>>(basic_istream&, unsigned char*); - -template - basic_istream& operator>>(basic_istream&, signed char*); - -template - void - swap(basic_istream& x, basic_istream& y); - -typedef basic_istream istream; -typedef basic_istream wistream; - -template > -class basic_iostream : - public basic_istream, - public basic_ostream -{ -public: - // types: - typedef charT char_type; - typedef traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - // constructor/destructor - explicit basic_iostream(basic_streambuf* sb); - basic_iostream(basic_iostream&& rhs); - virtual ~basic_iostream(); - - // assign/swap - basic_iostream& operator=(basic_iostream&& rhs); - void swap(basic_iostream& rhs); -}; - -template - void - swap(basic_iostream& x, basic_iostream& y); - -typedef basic_iostream iostream; -typedef basic_iostream wiostream; - -template - basic_istream& - ws(basic_istream& is); - -template - basic_istream& - operator>>(basic_istream&& is, T& x); - -} // std - -*/ - -#include <__config> -#include - -#include <__undef_min_max> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -class _LIBCPP_TYPE_VIS_ONLY basic_istream - : virtual public basic_ios<_CharT, _Traits> -{ - streamsize __gc_; -public: - // types (inherited from basic_ios (27.5.4)): - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - // 27.7.1.1.1 Constructor/destructor: - explicit basic_istream(basic_streambuf* __sb); - virtual ~basic_istream(); -protected: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - basic_istream(basic_istream&& __rhs); -#endif - // 27.7.1.1.2 Assign/swap: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - basic_istream& operator=(basic_istream&& __rhs); -#endif - void swap(basic_istream& __rhs); - -#if _LIBCPP_STD_VER > 11 -#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS - basic_istream (const basic_istream& __rhs) = delete; - basic_istream& operator=(const basic_istream& __rhs) = delete; -#else - basic_istream (const basic_istream& __rhs); // not defined - basic_istream& operator=(const basic_istream& __rhs); // not defined -#endif -#endif -public: - - // 27.7.1.1.3 Prefix/suffix: - class _LIBCPP_TYPE_VIS_ONLY sentry; - - // 27.7.1.2 Formatted input: - basic_istream& operator>>(basic_istream& (*__pf)(basic_istream&)); - basic_istream& operator>>(basic_ios& - (*__pf)(basic_ios&)); - basic_istream& operator>>(ios_base& (*__pf)(ios_base&)); - basic_istream& operator>>(basic_streambuf* __sb); - basic_istream& operator>>(bool& __n); - basic_istream& operator>>(short& __n); - basic_istream& operator>>(unsigned short& __n); - basic_istream& operator>>(int& __n); - basic_istream& operator>>(unsigned int& __n); - basic_istream& operator>>(long& __n); - basic_istream& operator>>(unsigned long& __n); - basic_istream& operator>>(long long& __n); - basic_istream& operator>>(unsigned long long& __n); - basic_istream& operator>>(float& __f); - basic_istream& operator>>(double& __f); - basic_istream& operator>>(long double& __f); - basic_istream& operator>>(void*& __p); - - // 27.7.1.3 Unformatted input: - _LIBCPP_INLINE_VISIBILITY - streamsize gcount() const {return __gc_;} - int_type get(); - basic_istream& get(char_type& __c); - basic_istream& get(char_type* __s, streamsize __n); - basic_istream& get(char_type* __s, streamsize __n, char_type __dlm); - basic_istream& get(basic_streambuf& __sb); - basic_istream& get(basic_streambuf& __sb, char_type __dlm); - - basic_istream& getline(char_type* __s, streamsize __n); - basic_istream& getline(char_type* __s, streamsize __n, char_type __dlm); - - basic_istream& ignore(streamsize __n = 1, int_type __dlm = traits_type::eof()); - int_type peek(); - basic_istream& read (char_type* __s, streamsize __n); - streamsize readsome(char_type* __s, streamsize __n); - - basic_istream& putback(char_type __c); - basic_istream& unget(); - int sync(); - - pos_type tellg(); - basic_istream& seekg(pos_type __pos); - basic_istream& seekg(off_type __off, ios_base::seekdir __dir); -}; - -template -class _LIBCPP_TYPE_VIS_ONLY basic_istream<_CharT, _Traits>::sentry -{ - bool __ok_; - - sentry(const sentry&); // = delete; - sentry& operator=(const sentry&); // = delete; - -public: - explicit sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); -// ~sentry() = default; - - _LIBCPP_INLINE_VISIBILITY - _LIBCPP_EXPLICIT - operator bool() const {return __ok_;} -}; - -template -basic_istream<_CharT, _Traits>::sentry::sentry(basic_istream<_CharT, _Traits>& __is, - bool __noskipws) - : __ok_(false) -{ - if (__is.good()) - { - if (__is.tie()) - __is.tie()->flush(); - if (!__noskipws && (__is.flags() & ios_base::skipws)) - { - typedef istreambuf_iterator<_CharT, _Traits> _Ip; - const ctype<_CharT>& __ct = use_facet >(__is.getloc()); - _Ip __i(__is); - _Ip __eof; - for (; __i != __eof; ++__i) - if (!__ct.is(__ct.space, *__i)) - break; - if (__i == __eof) - __is.setstate(ios_base::failbit | ios_base::eofbit); - } - __ok_ = __is.good(); - } - else - __is.setstate(ios_base::failbit); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>::basic_istream(basic_streambuf* __sb) - : __gc_(0) -{ - this->init(__sb); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>::basic_istream(basic_istream&& __rhs) - : __gc_(__rhs.__gc_) -{ - __rhs.__gc_ = 0; - this->move(__rhs); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator=(basic_istream&& __rhs) -{ - swap(__rhs); - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -basic_istream<_CharT, _Traits>::~basic_istream() -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_istream<_CharT, _Traits>::swap(basic_istream& __rhs) -{ - _VSTD::swap(__gc_, __rhs.__gc_); - basic_ios::swap(__rhs); -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(unsigned short& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(unsigned int& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(long& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(unsigned long& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(long long& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(unsigned long long& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(float& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(double& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(long double& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(bool& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(void*& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __n); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(short& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - long __temp; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __temp); - if (__temp < numeric_limits::min()) - { - __err |= ios_base::failbit; - __n = numeric_limits::min(); - } - else if (__temp > numeric_limits::max()) - { - __err |= ios_base::failbit; - __n = numeric_limits::max(); - } - else - __n = static_cast(__temp); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(int& __n) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this); - if (__s) - { - typedef istreambuf_iterator _Ip; - typedef num_get _Fp; - ios_base::iostate __err = ios_base::goodbit; - long __temp; - use_facet<_Fp>(this->getloc()).get(_Ip(*this), _Ip(), *this, __err, __temp); - if (__temp < numeric_limits::min()) - { - __err |= ios_base::failbit; - __n = numeric_limits::min(); - } - else if (__temp > numeric_limits::max()) - { - __err |= ios_base::failbit; - __n = numeric_limits::max(); - } - else - __n = static_cast(__temp); - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(basic_istream& (*__pf)(basic_istream&)) -{ - return __pf(*this); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(basic_ios& - (*__pf)(basic_ios&)) -{ - __pf(*this); - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(ios_base& (*__pf)(ios_base&)) -{ - __pf(*this); - return *this; -} - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, _CharT* __s) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_istream<_CharT, _Traits>::sentry __sen(__is); - if (__sen) - { - streamsize __n = __is.width(); - if (__n <= 0) - __n = numeric_limits::max() / sizeof(_CharT) - 1; - streamsize __c = 0; - const ctype<_CharT>& __ct = use_facet >(__is.getloc()); - ios_base::iostate __err = ios_base::goodbit; - while (__c < __n-1) - { - typename _Traits::int_type __i = __is.rdbuf()->sgetc(); - if (_Traits::eq_int_type(__i, _Traits::eof())) - { - __err |= ios_base::eofbit; - break; - } - _CharT __ch = _Traits::to_char_type(__i); - if (__ct.is(__ct.space, __ch)) - break; - *__s++ = __ch; - ++__c; - __is.rdbuf()->sbumpc(); - } - *__s = _CharT(); - __is.width(0); - if (__c == 0) - __err |= ios_base::failbit; - __is.setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __is.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __is; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream& -operator>>(basic_istream& __is, unsigned char* __s) -{ - return __is >> (char*)__s; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream& -operator>>(basic_istream& __is, signed char* __s) -{ - return __is >> (char*)__s; -} - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, _CharT& __c) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_istream<_CharT, _Traits>::sentry __sen(__is); - if (__sen) - { - typename _Traits::int_type __i = __is.rdbuf()->sbumpc(); - if (_Traits::eq_int_type(__i, _Traits::eof())) - __is.setstate(ios_base::eofbit | ios_base::failbit); - else - __c = _Traits::to_char_type(__i); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __is.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __is; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream& -operator>>(basic_istream& __is, unsigned char& __c) -{ - return __is >> (char&)__c; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream& -operator>>(basic_istream& __is, signed char& __c) -{ - return __is >> (char&)__c; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::operator>>(basic_streambuf* __sb) -{ - __gc_ = 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this, true); - if (__s) - { - if (__sb) - { -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - ios_base::iostate __err = ios_base::goodbit; - while (true) - { - typename traits_type::int_type __i = this->rdbuf()->sgetc(); - if (traits_type::eq_int_type(__i, _Traits::eof())) - { - __err |= ios_base::eofbit; - break; - } - if (traits_type::eq_int_type( - __sb->sputc(traits_type::to_char_type(__i)), - traits_type::eof())) - break; - ++__gc_; - this->rdbuf()->sbumpc(); - } - if (__gc_ == 0) - __err |= ios_base::failbit; - this->setstate(__err); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - if (__gc_ == 0) - this->__set_failbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - } - else - this->setstate(ios_base::failbit); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -typename basic_istream<_CharT, _Traits>::int_type -basic_istream<_CharT, _Traits>::get() -{ - __gc_ = 0; - int_type __r = traits_type::eof(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __s(*this, true); - if (__s) - { - __r = this->rdbuf()->sbumpc(); - if (traits_type::eq_int_type(__r, traits_type::eof())) - this->setstate(ios_base::failbit | ios_base::eofbit); - else - __gc_ = 1; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::get(char_type& __c) -{ - int_type __ch = get(); - if (__ch != traits_type::eof()) - __c = traits_type::to_char_type(__ch); - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::get(char_type* __s, streamsize __n, char_type __dlm) -{ - __gc_ = 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __sen(*this, true); - if (__sen) - { - if (__n > 0) - { - ios_base::iostate __err = ios_base::goodbit; - while (__gc_ < __n-1) - { - int_type __i = this->rdbuf()->sgetc(); - if (traits_type::eq_int_type(__i, traits_type::eof())) - { - __err |= ios_base::eofbit; - break; - } - char_type __ch = traits_type::to_char_type(__i); - if (traits_type::eq(__ch, __dlm)) - break; - *__s++ = __ch; - ++__gc_; - this->rdbuf()->sbumpc(); - } - *__s = char_type(); - if (__gc_ == 0) - __err |= ios_base::failbit; - this->setstate(__err); - } - else - this->setstate(ios_base::failbit); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::get(char_type* __s, streamsize __n) -{ - return get(__s, __n, this->widen('\n')); -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::get(basic_streambuf& __sb, - char_type __dlm) -{ - __gc_ = 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __sen(*this, true); - if (__sen) - { - ios_base::iostate __err = ios_base::goodbit; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - while (true) - { - typename traits_type::int_type __i = this->rdbuf()->sgetc(); - if (traits_type::eq_int_type(__i, traits_type::eof())) - { - __err |= ios_base::eofbit; - break; - } - char_type __ch = traits_type::to_char_type(__i); - if (traits_type::eq(__ch, __dlm)) - break; - if (traits_type::eq_int_type(__sb.sputc(__ch), traits_type::eof())) - break; - ++__gc_; - this->rdbuf()->sbumpc(); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - } -#endif // _LIBCPP_NO_EXCEPTIONS - if (__gc_ == 0) - __err |= ios_base::failbit; - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::get(basic_streambuf& __sb) -{ - return get(__sb, this->widen('\n')); -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::getline(char_type* __s, streamsize __n, char_type __dlm) -{ - __gc_ = 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __sen(*this, true); - if (__sen) - { - ios_base::iostate __err = ios_base::goodbit; - while (true) - { - typename traits_type::int_type __i = this->rdbuf()->sgetc(); - if (traits_type::eq_int_type(__i, traits_type::eof())) - { - __err |= ios_base::eofbit; - break; - } - char_type __ch = traits_type::to_char_type(__i); - if (traits_type::eq(__ch, __dlm)) - { - this->rdbuf()->sbumpc(); - ++__gc_; - break; - } - if (__gc_ >= __n-1) - { - __err |= ios_base::failbit; - break; - } - *__s++ = __ch; - this->rdbuf()->sbumpc(); - ++__gc_; - } - if (__n > 0) - *__s = char_type(); - if (__gc_ == 0) - __err |= ios_base::failbit; - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::getline(char_type* __s, streamsize __n) -{ - return getline(__s, __n, this->widen('\n')); -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::ignore(streamsize __n, int_type __dlm) -{ - __gc_ = 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __sen(*this, true); - if (__sen) - { - ios_base::iostate __err = ios_base::goodbit; - if (__n == numeric_limits::max()) - { - while (true) - { - typename traits_type::int_type __i = this->rdbuf()->sbumpc(); - if (traits_type::eq_int_type(__i, traits_type::eof())) - { - __err |= ios_base::eofbit; - break; - } - ++__gc_; - if (traits_type::eq_int_type(__i, __dlm)) - break; - } - } - else - { - while (__gc_ < __n) - { - typename traits_type::int_type __i = this->rdbuf()->sbumpc(); - if (traits_type::eq_int_type(__i, traits_type::eof())) - { - __err |= ios_base::eofbit; - break; - } - ++__gc_; - if (traits_type::eq_int_type(__i, __dlm)) - break; - } - } - this->setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -typename basic_istream<_CharT, _Traits>::int_type -basic_istream<_CharT, _Traits>::peek() -{ - __gc_ = 0; - int_type __r = traits_type::eof(); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __sen(*this, true); - if (__sen) - { - __r = this->rdbuf()->sgetc(); - if (traits_type::eq_int_type(__r, traits_type::eof())) - this->setstate(ios_base::eofbit); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __r; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::read(char_type* __s, streamsize __n) -{ - __gc_ = 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __sen(*this, true); - if (__sen) - { - __gc_ = this->rdbuf()->sgetn(__s, __n); - if (__gc_ != __n) - this->setstate(ios_base::failbit | ios_base::eofbit); - } - else - this->setstate(ios_base::failbit); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -streamsize -basic_istream<_CharT, _Traits>::readsome(char_type* __s, streamsize __n) -{ - __gc_ = 0; - streamsize __c = this->rdbuf()->in_avail(); - switch (__c) - { - case -1: - this->setstate(ios_base::eofbit); - break; - case 0: - break; - default: - read(__s, _VSTD::min(__c, __n)); - break; - } - return __gc_; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::putback(char_type __c) -{ - __gc_ = 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - this->clear(this->rdstate() & ~ios_base::eofbit); - sentry __sen(*this, true); - if (__sen) - { - if (this->rdbuf() == 0 || this->rdbuf()->sputbackc(__c) == traits_type::eof()) - this->setstate(ios_base::badbit); - } - else - this->setstate(ios_base::failbit); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::unget() -{ - __gc_ = 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - this->clear(this->rdstate() & ~ios_base::eofbit); - sentry __sen(*this, true); - if (__sen) - { - if (this->rdbuf() == 0 || this->rdbuf()->sungetc() == traits_type::eof()) - this->setstate(ios_base::badbit); - } - else - this->setstate(ios_base::failbit); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -int -basic_istream<_CharT, _Traits>::sync() -{ - int __r = 0; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __sen(*this, true); - if (__sen) - { - if (this->rdbuf() == 0) - return -1; - if (this->rdbuf()->pubsync() == -1) - { - this->setstate(ios_base::badbit); - return -1; - } - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __r; -} - -template -typename basic_istream<_CharT, _Traits>::pos_type -basic_istream<_CharT, _Traits>::tellg() -{ - pos_type __r(-1); -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __sen(*this, true); - if (__sen) - __r = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __r; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::seekg(pos_type __pos) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - this->clear(this->rdstate() & ~ios_base::eofbit); - sentry __sen(*this, true); - if (__sen) - { - if (this->rdbuf()->pubseekpos(__pos, ios_base::in) == pos_type(-1)) - this->setstate(ios_base::failbit); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::seekg(off_type __off, ios_base::seekdir __dir) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - sentry __sen(*this, true); - if (__sen) - { - if (this->rdbuf()->pubseekoff(__off, __dir, ios_base::in) == pos_type(-1)) - this->setstate(ios_base::failbit); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - this->__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return *this; -} - -template -basic_istream<_CharT, _Traits>& -ws(basic_istream<_CharT, _Traits>& __is) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_istream<_CharT, _Traits>::sentry __sen(__is, true); - if (__sen) - { - const ctype<_CharT>& __ct = use_facet >(__is.getloc()); - while (true) - { - typename _Traits::int_type __i = __is.rdbuf()->sgetc(); - if (_Traits::eq_int_type(__i, _Traits::eof())) - { - __is.setstate(ios_base::eofbit); - break; - } - if (!__ct.is(__ct.space, _Traits::to_char_type(__i))) - break; - __is.rdbuf()->sbumpc(); - } - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __is.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __is; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x) -{ - __is >> __x; - return __is; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -class _LIBCPP_TYPE_VIS_ONLY basic_iostream - : public basic_istream<_CharT, _Traits>, - public basic_ostream<_CharT, _Traits> -{ -public: - // types: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - - // constructor/destructor - explicit basic_iostream(basic_streambuf* __sb); - virtual ~basic_iostream(); -protected: -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - basic_iostream(basic_iostream&& __rhs); -#endif - - // assign/swap -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - basic_iostream& operator=(basic_iostream&& __rhs); -#endif - void swap(basic_iostream& __rhs); -public: -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_iostream<_CharT, _Traits>::basic_iostream(basic_streambuf* __sb) - : basic_istream<_CharT, _Traits>(__sb) -{ -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_iostream<_CharT, _Traits>::basic_iostream(basic_iostream&& __rhs) - : basic_istream<_CharT, _Traits>(_VSTD::move(__rhs)) -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_iostream<_CharT, _Traits>& -basic_iostream<_CharT, _Traits>::operator=(basic_iostream&& __rhs) -{ - swap(__rhs); - return *this; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -basic_iostream<_CharT, _Traits>::~basic_iostream() -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -basic_iostream<_CharT, _Traits>::swap(basic_iostream& __rhs) -{ - basic_istream::swap(__rhs); -} - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT, _Traits, _Allocator>& __str) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_istream<_CharT, _Traits>::sentry __sen(__is); - if (__sen) - { - __str.clear(); - streamsize __n = __is.width(); - if (__n <= 0) - __n = __str.max_size(); - if (__n <= 0) - __n = numeric_limits::max(); - streamsize __c = 0; - const ctype<_CharT>& __ct = use_facet >(__is.getloc()); - ios_base::iostate __err = ios_base::goodbit; - while (__c < __n) - { - typename _Traits::int_type __i = __is.rdbuf()->sgetc(); - if (_Traits::eq_int_type(__i, _Traits::eof())) - { - __err |= ios_base::eofbit; - break; - } - _CharT __ch = _Traits::to_char_type(__i); - if (__ct.is(__ct.space, __ch)) - break; - __str.push_back(__ch); - ++__c; - __is.rdbuf()->sbumpc(); - } - __is.width(0); - if (__c == 0) - __err |= ios_base::failbit; - __is.setstate(__err); - } - else - __is.setstate(ios_base::failbit); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __is.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __is; -} - -template -basic_istream<_CharT, _Traits>& -getline(basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT, _Traits, _Allocator>& __str, _CharT __dlm) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_istream<_CharT, _Traits>::sentry __sen(__is, true); - if (__sen) - { - __str.clear(); - ios_base::iostate __err = ios_base::goodbit; - streamsize __extr = 0; - while (true) - { - typename _Traits::int_type __i = __is.rdbuf()->sbumpc(); - if (_Traits::eq_int_type(__i, _Traits::eof())) - { - __err |= ios_base::eofbit; - break; - } - ++__extr; - _CharT __ch = _Traits::to_char_type(__i); - if (_Traits::eq(__ch, __dlm)) - break; - __str.push_back(__ch); - if (__str.size() == __str.max_size()) - { - __err |= ios_base::failbit; - break; - } - } - if (__extr == 0) - __err |= ios_base::failbit; - __is.setstate(__err); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __is.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __is; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -getline(basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT, _Traits, _Allocator>& __str) -{ - return getline(__is, __str, __is.widen('\n')); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -getline(basic_istream<_CharT, _Traits>&& __is, - basic_string<_CharT, _Traits, _Allocator>& __str, _CharT __dlm) -{ - return getline(__is, __str, __dlm); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -basic_istream<_CharT, _Traits>& -getline(basic_istream<_CharT, _Traits>&& __is, - basic_string<_CharT, _Traits, _Allocator>& __str) -{ - return getline(__is, __str, __is.widen('\n')); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Size>& __x) -{ -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - typename basic_istream<_CharT, _Traits>::sentry __sen(__is); - if (__sen) - { - basic_string<_CharT, _Traits> __str; - const ctype<_CharT>& __ct = use_facet >(__is.getloc()); - streamsize __c = 0; - ios_base::iostate __err = ios_base::goodbit; - _CharT __zero = __ct.widen('0'); - _CharT __one = __ct.widen('1'); - while (__c < _Size) - { - typename _Traits::int_type __i = __is.rdbuf()->sgetc(); - if (_Traits::eq_int_type(__i, _Traits::eof())) - { - __err |= ios_base::eofbit; - break; - } - _CharT __ch = _Traits::to_char_type(__i); - if (!_Traits::eq(__ch, __zero) && !_Traits::eq(__ch, __one)) - break; - __str.push_back(__ch); - ++__c; - __is.rdbuf()->sbumpc(); - } - __x = bitset<_Size>(__str); - if (__c == 0) - __err |= ios_base::failbit; - __is.setstate(__err); - } - else - __is.setstate(ios_base::failbit); -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - __is.__set_badbit_and_consider_rethrow(); - } -#endif // _LIBCPP_NO_EXCEPTIONS - return __is; -} - -_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_istream) -_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_istream) -_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS basic_iostream) - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_ISTREAM diff --git a/libcxx/include/iterator b/libcxx/include/iterator deleted file mode 100644 index 7f7e9ee19..000000000 --- a/libcxx/include/iterator +++ /dev/null @@ -1,1614 +0,0 @@ -// -*- C++ -*- -//===-------------------------- iterator ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_ITERATOR -#define _LIBCPP_ITERATOR - -/* - iterator synopsis - -namespace std -{ - -template -struct iterator_traits -{ - typedef typename Iterator::difference_type difference_type; - typedef typename Iterator::value_type value_type; - typedef typename Iterator::pointer pointer; - typedef typename Iterator::reference reference; - typedef typename Iterator::iterator_category iterator_category; -}; - -template -struct iterator_traits -{ - typedef ptrdiff_t difference_type; - typedef T value_type; - typedef T* pointer; - typedef T& reference; - typedef random_access_iterator_tag iterator_category; -}; - -template -struct iterator_traits -{ - typedef ptrdiff_t difference_type; - typedef T value_type; - typedef const T* pointer; - typedef const T& reference; - typedef random_access_iterator_tag iterator_category; -}; - -template -struct iterator -{ - typedef T value_type; - typedef Distance difference_type; - typedef Pointer pointer; - typedef Reference reference; - typedef Category iterator_category; -}; - -struct input_iterator_tag {}; -struct output_iterator_tag {}; -struct forward_iterator_tag : public input_iterator_tag {}; -struct bidirectional_iterator_tag : public forward_iterator_tag {}; -struct random_access_iterator_tag : public bidirectional_iterator_tag {}; - -// extension: second argument not conforming to C++03 -template -void advance(InputIterator& i, - typename iterator_traits::difference_type n); - -template -typename iterator_traits::difference_type -distance(InputIterator first, InputIterator last); - -template -class reverse_iterator - : public iterator::iterator_category, - typename iterator_traits::value_type, - typename iterator_traits::difference_type, - typename iterator_traits::pointer, - typename iterator_traits::reference> -{ -protected: - Iterator current; -public: - typedef Iterator iterator_type; - typedef typename iterator_traits::difference_type difference_type; - typedef typename iterator_traits::reference reference; - typedef typename iterator_traits::pointer pointer; - - reverse_iterator(); - explicit reverse_iterator(Iterator x); - template reverse_iterator(const reverse_iterator& u); - Iterator base() const; - reference operator*() const; - pointer operator->() const; - reverse_iterator& operator++(); - reverse_iterator operator++(int); - reverse_iterator& operator--(); - reverse_iterator operator--(int); - reverse_iterator operator+ (difference_type n) const; - reverse_iterator& operator+=(difference_type n); - reverse_iterator operator- (difference_type n) const; - reverse_iterator& operator-=(difference_type n); - reference operator[](difference_type n) const; -}; - -template -bool -operator==(const reverse_iterator& x, const reverse_iterator& y); - -template -bool -operator<(const reverse_iterator& x, const reverse_iterator& y); - -template -bool -operator!=(const reverse_iterator& x, const reverse_iterator& y); - -template -bool -operator>(const reverse_iterator& x, const reverse_iterator& y); - -template -bool -operator>=(const reverse_iterator& x, const reverse_iterator& y); - -template -bool -operator<=(const reverse_iterator& x, const reverse_iterator& y); - -template -typename reverse_iterator::difference_type -operator-(const reverse_iterator& x, const reverse_iterator& y); - -template -reverse_iterator -operator+(typename reverse_iterator::difference_type n, const reverse_iterator& x); - -template reverse_iterator make_reverse_iterator(Iterator i); // C++14 - -template -class back_insert_iterator -{ -protected: - Container* container; -public: - typedef Container container_type; - typedef void value_type; - typedef void difference_type; - typedef back_insert_iterator& reference; - typedef void pointer; - - explicit back_insert_iterator(Container& x); - back_insert_iterator& operator=(const typename Container::value_type& value); - back_insert_iterator& operator*(); - back_insert_iterator& operator++(); - back_insert_iterator operator++(int); -}; - -template back_insert_iterator back_inserter(Container& x); - -template -class front_insert_iterator -{ -protected: - Container* container; -public: - typedef Container container_type; - typedef void value_type; - typedef void difference_type; - typedef front_insert_iterator& reference; - typedef void pointer; - - explicit front_insert_iterator(Container& x); - front_insert_iterator& operator=(const typename Container::value_type& value); - front_insert_iterator& operator*(); - front_insert_iterator& operator++(); - front_insert_iterator operator++(int); -}; - -template front_insert_iterator front_inserter(Container& x); - -template -class insert_iterator -{ -protected: - Container* container; - typename Container::iterator iter; -public: - typedef Container container_type; - typedef void value_type; - typedef void difference_type; - typedef insert_iterator& reference; - typedef void pointer; - - insert_iterator(Container& x, typename Container::iterator i); - insert_iterator& operator=(const typename Container::value_type& value); - insert_iterator& operator*(); - insert_iterator& operator++(); - insert_iterator& operator++(int); -}; - -template -insert_iterator inserter(Container& x, Iterator i); - -template , class Distance = ptrdiff_t> -class istream_iterator - : public iterator -{ -public: - typedef charT char_type; - typedef traits traits_type; - typedef basic_istream istream_type; - - istream_iterator(); - istream_iterator(istream_type& s); - istream_iterator(const istream_iterator& x); - ~istream_iterator(); - - const T& operator*() const; - const T* operator->() const; - istream_iterator& operator++(); - istream_iterator operator++(int); -}; - -template -bool operator==(const istream_iterator& x, - const istream_iterator& y); -template -bool operator!=(const istream_iterator& x, - const istream_iterator& y); - -template > -class ostream_iterator - : public iterator -{ -public: - typedef charT char_type; - typedef traits traits_type; - typedef basic_ostream ostream_type; - - ostream_iterator(ostream_type& s); - ostream_iterator(ostream_type& s, const charT* delimiter); - ostream_iterator(const ostream_iterator& x); - ~ostream_iterator(); - ostream_iterator& operator=(const T& value); - - ostream_iterator& operator*(); - ostream_iterator& operator++(); - ostream_iterator& operator++(int); -}; - -template > -class istreambuf_iterator - : public iterator -{ -public: - typedef charT char_type; - typedef traits traits_type; - typedef typename traits::int_type int_type; - typedef basic_streambuf streambuf_type; - typedef basic_istream istream_type; - - istreambuf_iterator() noexcept; - istreambuf_iterator(istream_type& s) noexcept; - istreambuf_iterator(streambuf_type* s) noexcept; - istreambuf_iterator(a-private-type) noexcept; - - charT operator*() const; - pointer operator->() const; - istreambuf_iterator& operator++(); - a-private-type operator++(int); - - bool equal(const istreambuf_iterator& b) const; -}; - -template -bool operator==(const istreambuf_iterator& a, - const istreambuf_iterator& b); -template -bool operator!=(const istreambuf_iterator& a, - const istreambuf_iterator& b); - -template > -class ostreambuf_iterator - : public iterator -{ -public: - typedef charT char_type; - typedef traits traits_type; - typedef basic_streambuf streambuf_type; - typedef basic_ostream ostream_type; - - ostreambuf_iterator(ostream_type& s) noexcept; - ostreambuf_iterator(streambuf_type* s) noexcept; - ostreambuf_iterator& operator=(charT c); - ostreambuf_iterator& operator*(); - ostreambuf_iterator& operator++(); - ostreambuf_iterator& operator++(int); - bool failed() const noexcept; -}; - -template auto begin(C& c) -> decltype(c.begin()); -template auto begin(const C& c) -> decltype(c.begin()); -template auto end(C& c) -> decltype(c.end()); -template auto end(const C& c) -> decltype(c.end()); -template T* begin(T (&array)[N]); -template T* end(T (&array)[N]); - -template auto cbegin(const C& c) -> decltype(std::begin(c)); // C++14 -template auto cend(const C& c) -> decltype(std::end(c)); // C++14 -template auto rbegin(C& c) -> decltype(c.rbegin()); // C++14 -template auto rbegin(const C& c) -> decltype(c.rbegin()); // C++14 -template auto rend(C& c) -> decltype(c.rend()); // C++14 -template auto rend(const C& c) -> decltype(c.rend()); // C++14 -template reverse_iterator rbegin(initializer_list il); // C++14 -template reverse_iterator rend(initializer_list il); // C++14 -template reverse_iterator rbegin(T (&array)[N]); // C++14 -template reverse_iterator rend(T (&array)[N]); // C++14 -template auto crbegin(const C& c) -> decltype(std::rbegin(c)); // C++14 -template auto crend(const C& c) -> decltype(std::rend(c)); // C++14 - -// 24.8, container access: -template constexpr auto size(const C& c) -> decltype(c.size()); // C++17 -template constexpr size_t size(const T (&array)[N]) noexcept; // C++17 -template constexpr auto empty(const C& c) -> decltype(c.empty()); // C++17 -template constexpr bool empty(const T (&array)[N]) noexcept; // C++17 -template constexpr bool empty(initializer_list il) noexcept; // C++17 -template constexpr auto data(C& c) -> decltype(c.data()); // C++17 -template constexpr auto data(const C& c) -> decltype(c.data()); // C++17 -template constexpr T* data(T (&array)[N]) noexcept; // C++17 -template constexpr const E* data(initializer_list il) noexcept; // C++17 - -} // std - -*/ - -#include <__config> -#include <__functional_base> -#include -#include -#include -#include -#ifdef __APPLE__ -#include -#endif - -#include <__debug> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -struct _LIBCPP_TYPE_VIS_ONLY input_iterator_tag {}; -struct _LIBCPP_TYPE_VIS_ONLY output_iterator_tag {}; -struct _LIBCPP_TYPE_VIS_ONLY forward_iterator_tag : public input_iterator_tag {}; -struct _LIBCPP_TYPE_VIS_ONLY bidirectional_iterator_tag : public forward_iterator_tag {}; -struct _LIBCPP_TYPE_VIS_ONLY random_access_iterator_tag : public bidirectional_iterator_tag {}; - -template -struct __has_iterator_category -{ -private: - struct __two {char __lx; char __lxx;}; - template static __two __test(...); - template static char __test(typename _Up::iterator_category* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - -template struct __iterator_traits_impl {}; - -template -struct __iterator_traits_impl<_Iter, true> -{ - typedef typename _Iter::difference_type difference_type; - typedef typename _Iter::value_type value_type; - typedef typename _Iter::pointer pointer; - typedef typename _Iter::reference reference; - typedef typename _Iter::iterator_category iterator_category; -}; - -template struct __iterator_traits {}; - -template -struct __iterator_traits<_Iter, true> - : __iterator_traits_impl - < - _Iter, - is_convertible::value || - is_convertible::value - > -{}; - -// iterator_traits will only have the nested types if Iterator::iterator_category -// exists. Else iterator_traits will be an empty class. This is a -// conforming extension which allows some programs to compile and behave as -// the client expects instead of failing at compile time. - -template -struct _LIBCPP_TYPE_VIS_ONLY iterator_traits - : __iterator_traits<_Iter, __has_iterator_category<_Iter>::value> {}; - -template -struct _LIBCPP_TYPE_VIS_ONLY iterator_traits<_Tp*> -{ - typedef ptrdiff_t difference_type; - typedef typename remove_const<_Tp>::type value_type; - typedef _Tp* pointer; - typedef _Tp& reference; - typedef random_access_iterator_tag iterator_category; -}; - -template >::value> -struct __has_iterator_category_convertible_to - : public integral_constant::iterator_category, _Up>::value> -{}; - -template -struct __has_iterator_category_convertible_to<_Tp, _Up, false> : public false_type {}; - -template -struct __is_input_iterator : public __has_iterator_category_convertible_to<_Tp, input_iterator_tag> {}; - -template -struct __is_forward_iterator : public __has_iterator_category_convertible_to<_Tp, forward_iterator_tag> {}; - -template -struct __is_bidirectional_iterator : public __has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag> {}; - -template -struct __is_random_access_iterator : public __has_iterator_category_convertible_to<_Tp, random_access_iterator_tag> {}; - -template -struct _LIBCPP_TYPE_VIS_ONLY iterator -{ - typedef _Tp value_type; - typedef _Distance difference_type; - typedef _Pointer pointer; - typedef _Reference reference; - typedef _Category iterator_category; -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -void __advance(_InputIter& __i, - typename iterator_traits<_InputIter>::difference_type __n, input_iterator_tag) -{ - for (; __n > 0; --__n) - ++__i; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void __advance(_BiDirIter& __i, - typename iterator_traits<_BiDirIter>::difference_type __n, bidirectional_iterator_tag) -{ - if (__n >= 0) - for (; __n > 0; --__n) - ++__i; - else - for (; __n < 0; ++__n) - --__i; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void __advance(_RandIter& __i, - typename iterator_traits<_RandIter>::difference_type __n, random_access_iterator_tag) -{ - __i += __n; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void advance(_InputIter& __i, - typename iterator_traits<_InputIter>::difference_type __n) -{ - __advance(__i, __n, typename iterator_traits<_InputIter>::iterator_category()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename iterator_traits<_InputIter>::difference_type -__distance(_InputIter __first, _InputIter __last, input_iterator_tag) -{ - typename iterator_traits<_InputIter>::difference_type __r(0); - for (; __first != __last; ++__first) - ++__r; - return __r; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename iterator_traits<_RandIter>::difference_type -__distance(_RandIter __first, _RandIter __last, random_access_iterator_tag) -{ - return __last - __first; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename iterator_traits<_InputIter>::difference_type -distance(_InputIter __first, _InputIter __last) -{ - return __distance(__first, __last, typename iterator_traits<_InputIter>::iterator_category()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_ForwardIter -next(_ForwardIter __x, - typename iterator_traits<_ForwardIter>::difference_type __n = 1, - typename enable_if<__is_forward_iterator<_ForwardIter>::value>::type* = 0) -{ - _VSTD::advance(__x, __n); - return __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_BidiretionalIter -prev(_BidiretionalIter __x, - typename iterator_traits<_BidiretionalIter>::difference_type __n = 1, - typename enable_if<__is_bidirectional_iterator<_BidiretionalIter>::value>::type* = 0) -{ - _VSTD::advance(__x, -__n); - return __x; -} - -template -class _LIBCPP_TYPE_VIS_ONLY reverse_iterator - : public iterator::iterator_category, - typename iterator_traits<_Iter>::value_type, - typename iterator_traits<_Iter>::difference_type, - typename iterator_traits<_Iter>::pointer, - typename iterator_traits<_Iter>::reference> -{ -private: - mutable _Iter __t; // no longer used as of LWG #2360, not removed due to ABI break -protected: - _Iter current; -public: - typedef _Iter iterator_type; - typedef typename iterator_traits<_Iter>::difference_type difference_type; - typedef typename iterator_traits<_Iter>::reference reference; - typedef typename iterator_traits<_Iter>::pointer pointer; - - _LIBCPP_INLINE_VISIBILITY reverse_iterator() : current() {} - _LIBCPP_INLINE_VISIBILITY explicit reverse_iterator(_Iter __x) : __t(__x), current(__x) {} - template _LIBCPP_INLINE_VISIBILITY reverse_iterator(const reverse_iterator<_Up>& __u) - : __t(__u.base()), current(__u.base()) {} - _LIBCPP_INLINE_VISIBILITY _Iter base() const {return current;} - _LIBCPP_INLINE_VISIBILITY reference operator*() const {_Iter __tmp = current; return *--__tmp;} - _LIBCPP_INLINE_VISIBILITY pointer operator->() const {return _VSTD::addressof(operator*());} - _LIBCPP_INLINE_VISIBILITY reverse_iterator& operator++() {--current; return *this;} - _LIBCPP_INLINE_VISIBILITY reverse_iterator operator++(int) - {reverse_iterator __tmp(*this); --current; return __tmp;} - _LIBCPP_INLINE_VISIBILITY reverse_iterator& operator--() {++current; return *this;} - _LIBCPP_INLINE_VISIBILITY reverse_iterator operator--(int) - {reverse_iterator __tmp(*this); ++current; return __tmp;} - _LIBCPP_INLINE_VISIBILITY reverse_iterator operator+ (difference_type __n) const - {return reverse_iterator(current - __n);} - _LIBCPP_INLINE_VISIBILITY reverse_iterator& operator+=(difference_type __n) - {current -= __n; return *this;} - _LIBCPP_INLINE_VISIBILITY reverse_iterator operator- (difference_type __n) const - {return reverse_iterator(current + __n);} - _LIBCPP_INLINE_VISIBILITY reverse_iterator& operator-=(difference_type __n) - {current += __n; return *this;} - _LIBCPP_INLINE_VISIBILITY reference operator[](difference_type __n) const - {return *(*this + __n);} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -{ - return __x.base() == __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -{ - return __x.base() > __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -{ - return __x.base() != __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -{ - return __x.base() < __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -{ - return __x.base() <= __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -{ - return __x.base() >= __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename reverse_iterator<_Iter1>::difference_type -operator-(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) -{ - return __y.base() - __x.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reverse_iterator<_Iter> -operator+(typename reverse_iterator<_Iter>::difference_type __n, const reverse_iterator<_Iter>& __x) -{ - return reverse_iterator<_Iter>(__x.base() - __n); -} - -#if _LIBCPP_STD_VER > 11 -template -inline _LIBCPP_INLINE_VISIBILITY -reverse_iterator<_Iter> make_reverse_iterator(_Iter __i) -{ - return reverse_iterator<_Iter>(__i); -} -#endif - -template -class _LIBCPP_TYPE_VIS_ONLY back_insert_iterator - : public iterator&> -{ -protected: - _Container* container; -public: - typedef _Container container_type; - - _LIBCPP_INLINE_VISIBILITY explicit back_insert_iterator(_Container& __x) : container(_VSTD::addressof(__x)) {} - _LIBCPP_INLINE_VISIBILITY back_insert_iterator& operator=(const typename _Container::value_type& __value_) - {container->push_back(__value_); return *this;} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY back_insert_iterator& operator=(typename _Container::value_type&& __value_) - {container->push_back(_VSTD::move(__value_)); return *this;} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY back_insert_iterator& operator*() {return *this;} - _LIBCPP_INLINE_VISIBILITY back_insert_iterator& operator++() {return *this;} - _LIBCPP_INLINE_VISIBILITY back_insert_iterator operator++(int) {return *this;} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -back_insert_iterator<_Container> -back_inserter(_Container& __x) -{ - return back_insert_iterator<_Container>(__x); -} - -template -class _LIBCPP_TYPE_VIS_ONLY front_insert_iterator - : public iterator&> -{ -protected: - _Container* container; -public: - typedef _Container container_type; - - _LIBCPP_INLINE_VISIBILITY explicit front_insert_iterator(_Container& __x) : container(_VSTD::addressof(__x)) {} - _LIBCPP_INLINE_VISIBILITY front_insert_iterator& operator=(const typename _Container::value_type& __value_) - {container->push_front(__value_); return *this;} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY front_insert_iterator& operator=(typename _Container::value_type&& __value_) - {container->push_front(_VSTD::move(__value_)); return *this;} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY front_insert_iterator& operator*() {return *this;} - _LIBCPP_INLINE_VISIBILITY front_insert_iterator& operator++() {return *this;} - _LIBCPP_INLINE_VISIBILITY front_insert_iterator operator++(int) {return *this;} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -front_insert_iterator<_Container> -front_inserter(_Container& __x) -{ - return front_insert_iterator<_Container>(__x); -} - -template -class _LIBCPP_TYPE_VIS_ONLY insert_iterator - : public iterator&> -{ -protected: - _Container* container; - typename _Container::iterator iter; -public: - typedef _Container container_type; - - _LIBCPP_INLINE_VISIBILITY insert_iterator(_Container& __x, typename _Container::iterator __i) - : container(_VSTD::addressof(__x)), iter(__i) {} - _LIBCPP_INLINE_VISIBILITY insert_iterator& operator=(const typename _Container::value_type& __value_) - {iter = container->insert(iter, __value_); ++iter; return *this;} -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY insert_iterator& operator=(typename _Container::value_type&& __value_) - {iter = container->insert(iter, _VSTD::move(__value_)); ++iter; return *this;} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY insert_iterator& operator*() {return *this;} - _LIBCPP_INLINE_VISIBILITY insert_iterator& operator++() {return *this;} - _LIBCPP_INLINE_VISIBILITY insert_iterator& operator++(int) {return *this;} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -insert_iterator<_Container> -inserter(_Container& __x, typename _Container::iterator __i) -{ - return insert_iterator<_Container>(__x, __i); -} - -template , class _Distance = ptrdiff_t> -class _LIBCPP_TYPE_VIS_ONLY istream_iterator - : public iterator -{ -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef basic_istream<_CharT,_Traits> istream_type; -private: - istream_type* __in_stream_; - _Tp __value_; -public: - _LIBCPP_INLINE_VISIBILITY istream_iterator() : __in_stream_(0) {} - _LIBCPP_INLINE_VISIBILITY istream_iterator(istream_type& __s) : __in_stream_(&__s) - { - if (!(*__in_stream_ >> __value_)) - __in_stream_ = 0; - } - - _LIBCPP_INLINE_VISIBILITY const _Tp& operator*() const {return __value_;} - _LIBCPP_INLINE_VISIBILITY const _Tp* operator->() const {return &(operator*());} - _LIBCPP_INLINE_VISIBILITY istream_iterator& operator++() - { - if (!(*__in_stream_ >> __value_)) - __in_stream_ = 0; - return *this; - } - _LIBCPP_INLINE_VISIBILITY istream_iterator operator++(int) - {istream_iterator __t(*this); ++(*this); return __t;} - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const istream_iterator& __x, const istream_iterator& __y) - {return __x.__in_stream_ == __y.__in_stream_;} - - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const istream_iterator& __x, const istream_iterator& __y) - {return !(__x == __y);} -}; - -template > -class _LIBCPP_TYPE_VIS_ONLY ostream_iterator - : public iterator -{ -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef basic_ostream<_CharT,_Traits> ostream_type; -private: - ostream_type* __out_stream_; - const char_type* __delim_; -public: - _LIBCPP_INLINE_VISIBILITY ostream_iterator(ostream_type& __s) - : __out_stream_(&__s), __delim_(0) {} - _LIBCPP_INLINE_VISIBILITY ostream_iterator(ostream_type& __s, const _CharT* __delimiter) - : __out_stream_(&__s), __delim_(__delimiter) {} - _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator=(const _Tp& __value_) - { - *__out_stream_ << __value_; - if (__delim_) - *__out_stream_ << __delim_; - return *this; - } - - _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator*() {return *this;} - _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator++() {return *this;} - _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator++(int) {return *this;} -}; - -template -class _LIBCPP_TYPE_VIS_ONLY istreambuf_iterator - : public iterator -{ -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename _Traits::int_type int_type; - typedef basic_streambuf<_CharT,_Traits> streambuf_type; - typedef basic_istream<_CharT,_Traits> istream_type; -private: - mutable streambuf_type* __sbuf_; - - class __proxy - { - char_type __keep_; - streambuf_type* __sbuf_; - _LIBCPP_INLINE_VISIBILITY __proxy(char_type __c, streambuf_type* __s) - : __keep_(__c), __sbuf_(__s) {} - friend class istreambuf_iterator; - public: - _LIBCPP_INLINE_VISIBILITY char_type operator*() const {return __keep_;} - }; - - _LIBCPP_INLINE_VISIBILITY - bool __test_for_eof() const - { - if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sgetc(), traits_type::eof())) - __sbuf_ = 0; - return __sbuf_ == 0; - } -public: - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR istreambuf_iterator() _NOEXCEPT : __sbuf_(0) {} - _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(istream_type& __s) _NOEXCEPT - : __sbuf_(__s.rdbuf()) {} - _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(streambuf_type* __s) _NOEXCEPT - : __sbuf_(__s) {} - _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(const __proxy& __p) _NOEXCEPT - : __sbuf_(__p.__sbuf_) {} - - _LIBCPP_INLINE_VISIBILITY char_type operator*() const - {return static_cast(__sbuf_->sgetc());} - _LIBCPP_INLINE_VISIBILITY char_type* operator->() const {return nullptr;} - _LIBCPP_INLINE_VISIBILITY istreambuf_iterator& operator++() - { - __sbuf_->sbumpc(); - return *this; - } - _LIBCPP_INLINE_VISIBILITY __proxy operator++(int) - { - return __proxy(__sbuf_->sbumpc(), __sbuf_); - } - - _LIBCPP_INLINE_VISIBILITY bool equal(const istreambuf_iterator& __b) const - {return __test_for_eof() == __b.__test_for_eof();} -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -bool operator==(const istreambuf_iterator<_CharT,_Traits>& __a, - const istreambuf_iterator<_CharT,_Traits>& __b) - {return __a.equal(__b);} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool operator!=(const istreambuf_iterator<_CharT,_Traits>& __a, - const istreambuf_iterator<_CharT,_Traits>& __b) - {return !__a.equal(__b);} - -template -class _LIBCPP_TYPE_VIS_ONLY ostreambuf_iterator - : public iterator -{ -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef basic_streambuf<_CharT,_Traits> streambuf_type; - typedef basic_ostream<_CharT,_Traits> ostream_type; -private: - streambuf_type* __sbuf_; -public: - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator(ostream_type& __s) _NOEXCEPT - : __sbuf_(__s.rdbuf()) {} - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator(streambuf_type* __s) _NOEXCEPT - : __sbuf_(__s) {} - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator=(_CharT __c) - { - if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sputc(__c), traits_type::eof())) - __sbuf_ = 0; - return *this; - } - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator*() {return *this;} - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++() {return *this;} - _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++(int) {return *this;} - _LIBCPP_INLINE_VISIBILITY bool failed() const _NOEXCEPT {return __sbuf_ == 0;} - -#if !defined(__APPLE__) || \ - (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_8) || \ - (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0) - - template - friend - _LIBCPP_HIDDEN - ostreambuf_iterator<_Ch, _Tr> - __pad_and_output(ostreambuf_iterator<_Ch, _Tr> __s, - const _Ch* __ob, const _Ch* __op, const _Ch* __oe, - ios_base& __iob, _Ch __fl); -#endif -}; - -template -class _LIBCPP_TYPE_VIS_ONLY move_iterator -{ -private: - _Iter __i; -public: - typedef _Iter iterator_type; - typedef typename iterator_traits::iterator_category iterator_category; - typedef typename iterator_traits::value_type value_type; - typedef typename iterator_traits::difference_type difference_type; - typedef typename iterator_traits::pointer pointer; -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - typedef value_type&& reference; -#else - typedef typename iterator_traits::reference reference; -#endif - - _LIBCPP_INLINE_VISIBILITY move_iterator() : __i() {} - _LIBCPP_INLINE_VISIBILITY explicit move_iterator(_Iter __x) : __i(__x) {} - template _LIBCPP_INLINE_VISIBILITY move_iterator(const move_iterator<_Up>& __u) - : __i(__u.base()) {} - _LIBCPP_INLINE_VISIBILITY _Iter base() const {return __i;} - _LIBCPP_INLINE_VISIBILITY reference operator*() const { - return static_cast(*__i); - } - _LIBCPP_INLINE_VISIBILITY pointer operator->() const { - typename iterator_traits::reference __ref = *__i; - return &__ref; - } - _LIBCPP_INLINE_VISIBILITY move_iterator& operator++() {++__i; return *this;} - _LIBCPP_INLINE_VISIBILITY move_iterator operator++(int) - {move_iterator __tmp(*this); ++__i; return __tmp;} - _LIBCPP_INLINE_VISIBILITY move_iterator& operator--() {--__i; return *this;} - _LIBCPP_INLINE_VISIBILITY move_iterator operator--(int) - {move_iterator __tmp(*this); --__i; return __tmp;} - _LIBCPP_INLINE_VISIBILITY move_iterator operator+ (difference_type __n) const - {return move_iterator(__i + __n);} - _LIBCPP_INLINE_VISIBILITY move_iterator& operator+=(difference_type __n) - {__i += __n; return *this;} - _LIBCPP_INLINE_VISIBILITY move_iterator operator- (difference_type __n) const - {return move_iterator(__i - __n);} - _LIBCPP_INLINE_VISIBILITY move_iterator& operator-=(difference_type __n) - {__i -= __n; return *this;} - _LIBCPP_INLINE_VISIBILITY reference operator[](difference_type __n) const - { - return static_cast(__i[__n]); - } -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() == __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() < __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() != __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() > __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() >= __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() <= __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename move_iterator<_Iter1>::difference_type -operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) -{ - return __x.base() - __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -move_iterator<_Iter> -operator+(typename move_iterator<_Iter>::difference_type __n, const move_iterator<_Iter>& __x) -{ - return move_iterator<_Iter>(__x.base() + __n); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -move_iterator<_Iter> -make_move_iterator(_Iter __i) -{ - return move_iterator<_Iter>(__i); -} - -// __wrap_iter - -template class __wrap_iter; - -template -_LIBCPP_INLINE_VISIBILITY -bool -operator==(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY -bool -operator<(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY -bool -operator!=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY -bool -operator>(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY -bool -operator>=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY -bool -operator<=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY -typename __wrap_iter<_Iter1>::difference_type -operator-(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - -template -_LIBCPP_INLINE_VISIBILITY -__wrap_iter<_Iter> -operator+(typename __wrap_iter<_Iter>::difference_type, __wrap_iter<_Iter>) _NOEXCEPT; - -template _Op _LIBCPP_INLINE_VISIBILITY copy(_Ip, _Ip, _Op); -template _B2 _LIBCPP_INLINE_VISIBILITY copy_backward(_B1, _B1, _B2); -template _Op _LIBCPP_INLINE_VISIBILITY move(_Ip, _Ip, _Op); -template _B2 _LIBCPP_INLINE_VISIBILITY move_backward(_B1, _B1, _B2); - -template -_LIBCPP_INLINE_VISIBILITY -typename enable_if -< - is_trivially_copy_assignable<_Tp>::value, - _Tp* ->::type -__unwrap_iter(__wrap_iter<_Tp*>); - -template -class __wrap_iter -{ -public: - typedef _Iter iterator_type; - typedef typename iterator_traits::iterator_category iterator_category; - typedef typename iterator_traits::value_type value_type; - typedef typename iterator_traits::difference_type difference_type; - typedef typename iterator_traits::pointer pointer; - typedef typename iterator_traits::reference reference; -private: - iterator_type __i; -public: - _LIBCPP_INLINE_VISIBILITY __wrap_iter() _NOEXCEPT -#if _LIBCPP_STD_VER > 11 - : __i{} -#endif - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_i(this); -#endif - } - template _LIBCPP_INLINE_VISIBILITY __wrap_iter(const __wrap_iter<_Up>& __u, - typename enable_if::value>::type* = 0) _NOEXCEPT - : __i(__u.base()) - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__iterator_copy(this, &__u); -#endif - } -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY - __wrap_iter(const __wrap_iter& __x) - : __i(__x.base()) - { - __get_db()->__iterator_copy(this, &__x); - } - _LIBCPP_INLINE_VISIBILITY - __wrap_iter& operator=(const __wrap_iter& __x) - { - if (this != &__x) - { - __get_db()->__iterator_copy(this, &__x); - __i = __x.__i; - } - return *this; - } - _LIBCPP_INLINE_VISIBILITY - ~__wrap_iter() - { - __get_db()->__erase_i(this); - } -#endif - _LIBCPP_INLINE_VISIBILITY reference operator*() const _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable iterator"); -#endif - return *__i; - } - _LIBCPP_INLINE_VISIBILITY pointer operator->() const _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable iterator"); -#endif - return (pointer)&reinterpret_cast(*__i); - } - _LIBCPP_INLINE_VISIBILITY __wrap_iter& operator++() _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable iterator"); -#endif - ++__i; - return *this; - } - _LIBCPP_INLINE_VISIBILITY __wrap_iter operator++(int) _NOEXCEPT - {__wrap_iter __tmp(*this); ++(*this); return __tmp;} - _LIBCPP_INLINE_VISIBILITY __wrap_iter& operator--() _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__decrementable(this), - "Attempted to decrement non-decrementable iterator"); -#endif - --__i; - return *this; - } - _LIBCPP_INLINE_VISIBILITY __wrap_iter operator--(int) _NOEXCEPT - {__wrap_iter __tmp(*this); --(*this); return __tmp;} - _LIBCPP_INLINE_VISIBILITY __wrap_iter operator+ (difference_type __n) const _NOEXCEPT - {__wrap_iter __w(*this); __w += __n; return __w;} - _LIBCPP_INLINE_VISIBILITY __wrap_iter& operator+=(difference_type __n) _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__addable(this, __n), - "Attempted to add/subtract iterator outside of valid range"); -#endif - __i += __n; - return *this; - } - _LIBCPP_INLINE_VISIBILITY __wrap_iter operator- (difference_type __n) const _NOEXCEPT - {return *this + (-__n);} - _LIBCPP_INLINE_VISIBILITY __wrap_iter& operator-=(difference_type __n) _NOEXCEPT - {*this += -__n; return *this;} - _LIBCPP_INLINE_VISIBILITY reference operator[](difference_type __n) const _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__subscriptable(this, __n), - "Attempted to subscript iterator outside of valid range"); -#endif - return __i[__n]; - } - - _LIBCPP_INLINE_VISIBILITY iterator_type base() const _NOEXCEPT {return __i;} - -private: -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY __wrap_iter(const void* __p, iterator_type __x) : __i(__x) - { - __get_db()->__insert_ic(this, __p); - } -#else - _LIBCPP_INLINE_VISIBILITY __wrap_iter(iterator_type __x) _NOEXCEPT : __i(__x) {} -#endif - - template friend class __wrap_iter; - template friend class basic_string; - template friend class _LIBCPP_TYPE_VIS_ONLY vector; - - template - friend - bool - operator==(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - - template - friend - bool - operator<(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - - template - friend - bool - operator!=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - - template - friend - bool - operator>(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - - template - friend - bool - operator>=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - - template - friend - bool - operator<=(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - - template - friend - typename __wrap_iter<_Iter1>::difference_type - operator-(const __wrap_iter<_Iter1>&, const __wrap_iter<_Iter2>&) _NOEXCEPT; - - template - friend - __wrap_iter<_Iter1> - operator+(typename __wrap_iter<_Iter1>::difference_type, __wrap_iter<_Iter1>) _NOEXCEPT; - - template friend _Op copy(_Ip, _Ip, _Op); - template friend _B2 copy_backward(_B1, _B1, _B2); - template friend _Op move(_Ip, _Ip, _Op); - template friend _B2 move_backward(_B1, _B1, _B2); - - template - friend - typename enable_if - < - is_trivially_copy_assignable<_Tp>::value, - _Tp* - >::type - __unwrap_iter(__wrap_iter<_Tp*>); -}; - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT -{ - return __x.base() == __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__less_than_comparable(&__x, &__y), - "Attempted to compare incomparable iterators"); -#endif - return __x.base() < __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT -{ - return !(__x < __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT -{ - return !(__x < __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename __wrap_iter<_Iter1>::difference_type -operator-(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__less_than_comparable(&__x, &__y), - "Attempted to subtract incompatible iterators"); -#endif - return __x.base() - __y.base(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__wrap_iter<_Iter> -operator+(typename __wrap_iter<_Iter>::difference_type __n, - __wrap_iter<_Iter> __x) _NOEXCEPT -{ - __x += __n; - return __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp* -begin(_Tp (&__array)[_Np]) -{ - return __array; -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -_Tp* -end(_Tp (&__array)[_Np]) -{ - return __array + _Np; -} - -#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_TRAILING_RETURN) - -template -inline _LIBCPP_INLINE_VISIBILITY -auto -begin(_Cp& __c) -> decltype(__c.begin()) -{ - return __c.begin(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -auto -begin(const _Cp& __c) -> decltype(__c.begin()) -{ - return __c.begin(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -auto -end(_Cp& __c) -> decltype(__c.end()) -{ - return __c.end(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -auto -end(const _Cp& __c) -> decltype(__c.end()) -{ - return __c.end(); -} - -#if _LIBCPP_STD_VER > 11 - -template -inline _LIBCPP_INLINE_VISIBILITY -reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np]) -{ - return reverse_iterator<_Tp*>(__array + _Np); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np]) -{ - return reverse_iterator<_Tp*>(__array); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reverse_iterator rbegin(initializer_list<_Ep> __il) -{ - return reverse_iterator(__il.end()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reverse_iterator rend(initializer_list<_Ep> __il) -{ - return reverse_iterator(__il.begin()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -auto cbegin(const _Cp& __c) -> decltype(begin(__c)) -{ - return begin(__c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 -auto cend(const _Cp& __c) -> decltype(end(__c)) -{ - return end(__c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -auto rbegin(_Cp& __c) -> decltype(__c.rbegin()) -{ - return __c.rbegin(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -auto rbegin(const _Cp& __c) -> decltype(__c.rbegin()) -{ - return __c.rbegin(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -auto rend(_Cp& __c) -> decltype(__c.rend()) -{ - return __c.rend(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -auto rend(const _Cp& __c) -> decltype(__c.rend()) -{ - return __c.rend(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -auto crbegin(const _Cp& __c) -> decltype(rbegin(__c)) -{ - return rbegin(__c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -auto crend(const _Cp& __c) -> decltype(rend(__c)) -{ - return rend(__c); -} - -#endif - - -#else // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_TRAILING_RETURN) - -template -inline _LIBCPP_INLINE_VISIBILITY -typename _Cp::iterator -begin(_Cp& __c) -{ - return __c.begin(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename _Cp::const_iterator -begin(const _Cp& __c) -{ - return __c.begin(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename _Cp::iterator -end(_Cp& __c) -{ - return __c.end(); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -typename _Cp::const_iterator -end(const _Cp& __c) -{ - return __c.end(); -} - -#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_TRAILING_RETURN) - -#if _LIBCPP_STD_VER > 14 -template -constexpr auto size(const _Cont& __c) -> decltype(__c.size()) { return __c.size(); } - -template -constexpr size_t size(const _Tp (&__array)[_Sz]) noexcept { return _Sz; } - -template -constexpr auto empty(const _Cont& __c) -> decltype(__c.empty()) { return __c.empty(); } - -template -constexpr bool empty(const _Tp (&__array)[_Sz]) noexcept { return false; } - -template -constexpr bool empty(initializer_list<_Ep> __il) noexcept { return __il.size() == 0; } - -template constexpr -auto data(_Cont& __c) -> decltype(__c.data()) { return __c.data(); } - -template constexpr -auto data(const _Cont& __c) -> decltype(__c.data()) { return __c.data(); } - -template -constexpr _Tp* data(_Tp (&__array)[_Sz]) noexcept { return __array; } - -template -constexpr const _Ep* data(initializer_list<_Ep> __il) noexcept { return __il.begin(); } -#endif - - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_ITERATOR diff --git a/libcxx/include/limits b/libcxx/include/limits deleted file mode 100644 index ce967ea1b..000000000 --- a/libcxx/include/limits +++ /dev/null @@ -1,813 +0,0 @@ -// -*- C++ -*- -//===---------------------------- limits ----------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_LIMITS -#define _LIBCPP_LIMITS - -/* - limits synopsis - -namespace std -{ - -template -class numeric_limits -{ -public: - static constexpr bool is_specialized = false; - static constexpr T min() noexcept; - static constexpr T max() noexcept; - static constexpr T lowest() noexcept; - - static constexpr int digits = 0; - static constexpr int digits10 = 0; - static constexpr int max_digits10 = 0; - static constexpr bool is_signed = false; - static constexpr bool is_integer = false; - static constexpr bool is_exact = false; - static constexpr int radix = 0; - static constexpr T epsilon() noexcept; - static constexpr T round_error() noexcept; - - static constexpr int min_exponent = 0; - static constexpr int min_exponent10 = 0; - static constexpr int max_exponent = 0; - static constexpr int max_exponent10 = 0; - - static constexpr bool has_infinity = false; - static constexpr bool has_quiet_NaN = false; - static constexpr bool has_signaling_NaN = false; - static constexpr float_denorm_style has_denorm = denorm_absent; - static constexpr bool has_denorm_loss = false; - static constexpr T infinity() noexcept; - static constexpr T quiet_NaN() noexcept; - static constexpr T signaling_NaN() noexcept; - static constexpr T denorm_min() noexcept; - - static constexpr bool is_iec559 = false; - static constexpr bool is_bounded = false; - static constexpr bool is_modulo = false; - - static constexpr bool traps = false; - static constexpr bool tinyness_before = false; - static constexpr float_round_style round_style = round_toward_zero; -}; - -enum float_round_style -{ - round_indeterminate = -1, - round_toward_zero = 0, - round_to_nearest = 1, - round_toward_infinity = 2, - round_toward_neg_infinity = 3 -}; - -enum float_denorm_style -{ - denorm_indeterminate = -1, - denorm_absent = 0, - denorm_present = 1 -}; - -template<> class numeric_limits; - -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; - -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; - -template<> class numeric_limits; -template<> class numeric_limits; -template<> class numeric_limits; - -} // std - -*/ - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -#include <__config> -#include - -#include <__undef_min_max> - -#if defined(_LIBCPP_MSVCRT) -#include "support/win32/limits_win32.h" -#endif // _LIBCPP_MSVCRT - -#if defined(__IBMCPP__) -#include "support/ibm/limits.h" -#endif // __IBMCPP__ - -_LIBCPP_BEGIN_NAMESPACE_STD - -enum float_round_style -{ - round_indeterminate = -1, - round_toward_zero = 0, - round_to_nearest = 1, - round_toward_infinity = 2, - round_toward_neg_infinity = 3 -}; - -enum float_denorm_style -{ - denorm_indeterminate = -1, - denorm_absent = 0, - denorm_present = 1 -}; - -template ::value> -class __libcpp_numeric_limits -{ -protected: - typedef _Tp type; - - static _LIBCPP_CONSTEXPR const bool is_specialized = false; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return type();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return type();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return type();} - - static _LIBCPP_CONSTEXPR const int digits = 0; - static _LIBCPP_CONSTEXPR const int digits10 = 0; - static _LIBCPP_CONSTEXPR const int max_digits10 = 0; - static _LIBCPP_CONSTEXPR const bool is_signed = false; - static _LIBCPP_CONSTEXPR const bool is_integer = false; - static _LIBCPP_CONSTEXPR const bool is_exact = false; - static _LIBCPP_CONSTEXPR const int radix = 0; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type();} - - static _LIBCPP_CONSTEXPR const int min_exponent = 0; - static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; - static _LIBCPP_CONSTEXPR const int max_exponent = 0; - static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; - - static _LIBCPP_CONSTEXPR const bool has_infinity = false; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type();} - - static _LIBCPP_CONSTEXPR const bool is_iec559 = false; - static _LIBCPP_CONSTEXPR const bool is_bounded = false; - static _LIBCPP_CONSTEXPR const bool is_modulo = false; - - static _LIBCPP_CONSTEXPR const bool traps = false; - static _LIBCPP_CONSTEXPR const bool tinyness_before = false; - static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; -}; - -template -struct __libcpp_compute_min -{ - static _LIBCPP_CONSTEXPR const _Tp value = _Tp(_Tp(1) << digits); -}; - -template -struct __libcpp_compute_min<_Tp, digits, false> -{ - static _LIBCPP_CONSTEXPR const _Tp value = _Tp(0); -}; - -template -class __libcpp_numeric_limits<_Tp, true> -{ -protected: - typedef _Tp type; - - static _LIBCPP_CONSTEXPR const bool is_specialized = true; - - static _LIBCPP_CONSTEXPR const bool is_signed = type(-1) < type(0); - static _LIBCPP_CONSTEXPR const int digits = static_cast(sizeof(type) * __CHAR_BIT__ - is_signed); - static _LIBCPP_CONSTEXPR const int digits10 = digits * 3 / 10; - static _LIBCPP_CONSTEXPR const int max_digits10 = 0; - static _LIBCPP_CONSTEXPR const type __min = __libcpp_compute_min::value; - static _LIBCPP_CONSTEXPR const type __max = is_signed ? type(type(~0) ^ __min) : type(~0); - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();} - - static _LIBCPP_CONSTEXPR const bool is_integer = true; - static _LIBCPP_CONSTEXPR const bool is_exact = true; - static _LIBCPP_CONSTEXPR const int radix = 2; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);} - - static _LIBCPP_CONSTEXPR const int min_exponent = 0; - static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; - static _LIBCPP_CONSTEXPR const int max_exponent = 0; - static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; - - static _LIBCPP_CONSTEXPR const bool has_infinity = false; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);} - - static _LIBCPP_CONSTEXPR const bool is_iec559 = false; - static _LIBCPP_CONSTEXPR const bool is_bounded = true; - static _LIBCPP_CONSTEXPR const bool is_modulo = !_VSTD::is_signed<_Tp>::value; - -#if defined(__i386__) || defined(__x86_64__) || defined(__pnacl__) - static _LIBCPP_CONSTEXPR const bool traps = true; -#else - static _LIBCPP_CONSTEXPR const bool traps = false; -#endif - static _LIBCPP_CONSTEXPR const bool tinyness_before = false; - static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; -}; - -template <> -class __libcpp_numeric_limits -{ -protected: - typedef bool type; - - static _LIBCPP_CONSTEXPR const bool is_specialized = true; - - static _LIBCPP_CONSTEXPR const bool is_signed = false; - static _LIBCPP_CONSTEXPR const int digits = 1; - static _LIBCPP_CONSTEXPR const int digits10 = 0; - static _LIBCPP_CONSTEXPR const int max_digits10 = 0; - static _LIBCPP_CONSTEXPR const type __min = false; - static _LIBCPP_CONSTEXPR const type __max = true; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();} - - static _LIBCPP_CONSTEXPR const bool is_integer = true; - static _LIBCPP_CONSTEXPR const bool is_exact = true; - static _LIBCPP_CONSTEXPR const int radix = 2; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);} - - static _LIBCPP_CONSTEXPR const int min_exponent = 0; - static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; - static _LIBCPP_CONSTEXPR const int max_exponent = 0; - static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; - - static _LIBCPP_CONSTEXPR const bool has_infinity = false; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);} - - static _LIBCPP_CONSTEXPR const bool is_iec559 = false; - static _LIBCPP_CONSTEXPR const bool is_bounded = true; - static _LIBCPP_CONSTEXPR const bool is_modulo = false; - - static _LIBCPP_CONSTEXPR const bool traps = false; - static _LIBCPP_CONSTEXPR const bool tinyness_before = false; - static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; -}; - -template <> -class __libcpp_numeric_limits -{ -protected: - typedef float type; - - static _LIBCPP_CONSTEXPR const bool is_specialized = true; - - static _LIBCPP_CONSTEXPR const bool is_signed = true; - static _LIBCPP_CONSTEXPR const int digits = __FLT_MANT_DIG__; - static _LIBCPP_CONSTEXPR const int digits10 = __FLT_DIG__; - static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103)/100000; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __FLT_MIN__;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __FLT_MAX__;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} - - static _LIBCPP_CONSTEXPR const bool is_integer = false; - static _LIBCPP_CONSTEXPR const bool is_exact = false; - static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __FLT_EPSILON__;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5F;} - - static _LIBCPP_CONSTEXPR const int min_exponent = __FLT_MIN_EXP__; - static _LIBCPP_CONSTEXPR const int min_exponent10 = __FLT_MIN_10_EXP__; - static _LIBCPP_CONSTEXPR const int max_exponent = __FLT_MAX_EXP__; - static _LIBCPP_CONSTEXPR const int max_exponent10 = __FLT_MAX_10_EXP__; - - static _LIBCPP_CONSTEXPR const bool has_infinity = true; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_valf();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanf("");} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansf("");} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __FLT_DENORM_MIN__;} - - static _LIBCPP_CONSTEXPR const bool is_iec559 = true; - static _LIBCPP_CONSTEXPR const bool is_bounded = true; - static _LIBCPP_CONSTEXPR const bool is_modulo = false; - - static _LIBCPP_CONSTEXPR const bool traps = false; - static _LIBCPP_CONSTEXPR const bool tinyness_before = false; - static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; -}; - -template <> -class __libcpp_numeric_limits -{ -protected: - typedef double type; - - static _LIBCPP_CONSTEXPR const bool is_specialized = true; - - static _LIBCPP_CONSTEXPR const bool is_signed = true; - static _LIBCPP_CONSTEXPR const int digits = __DBL_MANT_DIG__; - static _LIBCPP_CONSTEXPR const int digits10 = __DBL_DIG__; - static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103)/100000; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __DBL_MIN__;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __DBL_MAX__;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} - - static _LIBCPP_CONSTEXPR const bool is_integer = false; - static _LIBCPP_CONSTEXPR const bool is_exact = false; - static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __DBL_EPSILON__;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5;} - - static _LIBCPP_CONSTEXPR const int min_exponent = __DBL_MIN_EXP__; - static _LIBCPP_CONSTEXPR const int min_exponent10 = __DBL_MIN_10_EXP__; - static _LIBCPP_CONSTEXPR const int max_exponent = __DBL_MAX_EXP__; - static _LIBCPP_CONSTEXPR const int max_exponent10 = __DBL_MAX_10_EXP__; - - static _LIBCPP_CONSTEXPR const bool has_infinity = true; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_val();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nan("");} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nans("");} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __DBL_DENORM_MIN__;} - - static _LIBCPP_CONSTEXPR const bool is_iec559 = true; - static _LIBCPP_CONSTEXPR const bool is_bounded = true; - static _LIBCPP_CONSTEXPR const bool is_modulo = false; - - static _LIBCPP_CONSTEXPR const bool traps = false; - static _LIBCPP_CONSTEXPR const bool tinyness_before = false; - static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; -}; - -template <> -class __libcpp_numeric_limits -{ -protected: - typedef long double type; - - static _LIBCPP_CONSTEXPR const bool is_specialized = true; - - static _LIBCPP_CONSTEXPR const bool is_signed = true; - static _LIBCPP_CONSTEXPR const int digits = __LDBL_MANT_DIG__; - static _LIBCPP_CONSTEXPR const int digits10 = __LDBL_DIG__; - static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103)/100000; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __LDBL_MIN__;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __LDBL_MAX__;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} - - static _LIBCPP_CONSTEXPR const bool is_integer = false; - static _LIBCPP_CONSTEXPR const bool is_exact = false; - static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __LDBL_EPSILON__;} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5;} - - static _LIBCPP_CONSTEXPR const int min_exponent = __LDBL_MIN_EXP__; - static _LIBCPP_CONSTEXPR const int min_exponent10 = __LDBL_MIN_10_EXP__; - static _LIBCPP_CONSTEXPR const int max_exponent = __LDBL_MAX_EXP__; - static _LIBCPP_CONSTEXPR const int max_exponent10 = __LDBL_MAX_10_EXP__; - - static _LIBCPP_CONSTEXPR const bool has_infinity = true; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_vall();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanl("");} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansl("");} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __LDBL_DENORM_MIN__;} - -#if (defined(__ppc__) || defined(__ppc64__)) - static _LIBCPP_CONSTEXPR const bool is_iec559 = false; -#else - static _LIBCPP_CONSTEXPR const bool is_iec559 = true; -#endif - static _LIBCPP_CONSTEXPR const bool is_bounded = true; - static _LIBCPP_CONSTEXPR const bool is_modulo = false; - - static _LIBCPP_CONSTEXPR const bool traps = false; - static _LIBCPP_CONSTEXPR const bool tinyness_before = false; - static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY numeric_limits - : private __libcpp_numeric_limits::type> -{ - typedef __libcpp_numeric_limits::type> __base; - typedef typename __base::type type; -public: - static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} - - static _LIBCPP_CONSTEXPR const int digits = __base::digits; - static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; - static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; - static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; - static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; - static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; - static _LIBCPP_CONSTEXPR const int radix = __base::radix; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} - - static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; - static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; - static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; - static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; - - static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} - - static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; - static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; - static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; - - static _LIBCPP_CONSTEXPR const bool traps = __base::traps; - static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; - static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; -}; - -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_specialized; -template - _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits; -template - _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits10; -template - _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_digits10; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_signed; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_integer; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_exact; -template - _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::radix; -template - _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent; -template - _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent10; -template - _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent; -template - _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent10; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_infinity; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_quiet_NaN; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_signaling_NaN; -template - _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<_Tp>::has_denorm; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_denorm_loss; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_iec559; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_bounded; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_modulo; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::traps; -template - _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::tinyness_before; -template - _LIBCPP_CONSTEXPR const float_round_style numeric_limits<_Tp>::round_style; - -template -class _LIBCPP_TYPE_VIS_ONLY numeric_limits - : private numeric_limits<_Tp> -{ - typedef numeric_limits<_Tp> __base; - typedef _Tp type; -public: - static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} - - static _LIBCPP_CONSTEXPR const int digits = __base::digits; - static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; - static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; - static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; - static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; - static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; - static _LIBCPP_CONSTEXPR const int radix = __base::radix; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} - - static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; - static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; - static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; - static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; - - static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} - - static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; - static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; - static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; - - static _LIBCPP_CONSTEXPR const bool traps = __base::traps; - static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; - static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; -}; - -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_specialized; -template - _LIBCPP_CONSTEXPR const int numeric_limits::digits; -template - _LIBCPP_CONSTEXPR const int numeric_limits::digits10; -template - _LIBCPP_CONSTEXPR const int numeric_limits::max_digits10; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_signed; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_integer; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_exact; -template - _LIBCPP_CONSTEXPR const int numeric_limits::radix; -template - _LIBCPP_CONSTEXPR const int numeric_limits::min_exponent; -template - _LIBCPP_CONSTEXPR const int numeric_limits::min_exponent10; -template - _LIBCPP_CONSTEXPR const int numeric_limits::max_exponent; -template - _LIBCPP_CONSTEXPR const int numeric_limits::max_exponent10; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_infinity; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_quiet_NaN; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_signaling_NaN; -template - _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits::has_denorm; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_denorm_loss; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_iec559; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_bounded; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_modulo; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::traps; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::tinyness_before; -template - _LIBCPP_CONSTEXPR const float_round_style numeric_limits::round_style; - -template -class _LIBCPP_TYPE_VIS_ONLY numeric_limits - : private numeric_limits<_Tp> -{ - typedef numeric_limits<_Tp> __base; - typedef _Tp type; -public: - static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} - - static _LIBCPP_CONSTEXPR const int digits = __base::digits; - static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; - static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; - static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; - static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; - static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; - static _LIBCPP_CONSTEXPR const int radix = __base::radix; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} - - static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; - static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; - static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; - static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; - - static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} - - static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; - static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; - static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; - - static _LIBCPP_CONSTEXPR const bool traps = __base::traps; - static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; - static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; -}; - -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_specialized; -template - _LIBCPP_CONSTEXPR const int numeric_limits::digits; -template - _LIBCPP_CONSTEXPR const int numeric_limits::digits10; -template - _LIBCPP_CONSTEXPR const int numeric_limits::max_digits10; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_signed; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_integer; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_exact; -template - _LIBCPP_CONSTEXPR const int numeric_limits::radix; -template - _LIBCPP_CONSTEXPR const int numeric_limits::min_exponent; -template - _LIBCPP_CONSTEXPR const int numeric_limits::min_exponent10; -template - _LIBCPP_CONSTEXPR const int numeric_limits::max_exponent; -template - _LIBCPP_CONSTEXPR const int numeric_limits::max_exponent10; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_infinity; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_quiet_NaN; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_signaling_NaN; -template - _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits::has_denorm; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_denorm_loss; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_iec559; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_bounded; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_modulo; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::traps; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::tinyness_before; -template - _LIBCPP_CONSTEXPR const float_round_style numeric_limits::round_style; - -template -class _LIBCPP_TYPE_VIS_ONLY numeric_limits - : private numeric_limits<_Tp> -{ - typedef numeric_limits<_Tp> __base; - typedef _Tp type; -public: - static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} - - static _LIBCPP_CONSTEXPR const int digits = __base::digits; - static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; - static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; - static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; - static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; - static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; - static _LIBCPP_CONSTEXPR const int radix = __base::radix; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} - - static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; - static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; - static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; - static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; - - static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; - static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; - static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; - static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; - static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} - _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} - - static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; - static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; - static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; - - static _LIBCPP_CONSTEXPR const bool traps = __base::traps; - static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; - static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; -}; - -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_specialized; -template - _LIBCPP_CONSTEXPR const int numeric_limits::digits; -template - _LIBCPP_CONSTEXPR const int numeric_limits::digits10; -template - _LIBCPP_CONSTEXPR const int numeric_limits::max_digits10; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_signed; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_integer; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_exact; -template - _LIBCPP_CONSTEXPR const int numeric_limits::radix; -template - _LIBCPP_CONSTEXPR const int numeric_limits::min_exponent; -template - _LIBCPP_CONSTEXPR const int numeric_limits::min_exponent10; -template - _LIBCPP_CONSTEXPR const int numeric_limits::max_exponent; -template - _LIBCPP_CONSTEXPR const int numeric_limits::max_exponent10; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_infinity; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_quiet_NaN; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_signaling_NaN; -template - _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits::has_denorm; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::has_denorm_loss; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_iec559; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_bounded; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::is_modulo; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::traps; -template - _LIBCPP_CONSTEXPR const bool numeric_limits::tinyness_before; -template - _LIBCPP_CONSTEXPR const float_round_style numeric_limits::round_style; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_LIMITS diff --git a/libcxx/include/list b/libcxx/include/list deleted file mode 100644 index d39f07671..000000000 --- a/libcxx/include/list +++ /dev/null @@ -1,2365 +0,0 @@ -// -*- C++ -*- -//===---------------------------- list ------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_LIST -#define _LIBCPP_LIST - -/* - list synopsis - -namespace std -{ - -template > -class list -{ -public: - - // types: - typedef T value_type; - typedef Alloc allocator_type; - typedef typename allocator_type::reference reference; - typedef typename allocator_type::const_reference const_reference; - typedef typename allocator_type::pointer pointer; - typedef typename allocator_type::const_pointer const_pointer; - typedef implementation-defined iterator; - typedef implementation-defined const_iterator; - typedef implementation-defined size_type; - typedef implementation-defined difference_type; - typedef reverse_iterator reverse_iterator; - typedef reverse_iterator const_reverse_iterator; - - list() - noexcept(is_nothrow_default_constructible::value); - explicit list(const allocator_type& a); - explicit list(size_type n); - explicit list(size_type n, const allocator_type& a); // C++14 - list(size_type n, const value_type& value); - list(size_type n, const value_type& value, const allocator_type& a); - template - list(Iter first, Iter last); - template - list(Iter first, Iter last, const allocator_type& a); - list(const list& x); - list(const list&, const allocator_type& a); - list(list&& x) - noexcept(is_nothrow_move_constructible::value); - list(list&&, const allocator_type& a); - list(initializer_list); - list(initializer_list, const allocator_type& a); - - ~list(); - - list& operator=(const list& x); - list& operator=(list&& x) - noexcept( - allocator_type::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value); - list& operator=(initializer_list); - template - void assign(Iter first, Iter last); - void assign(size_type n, const value_type& t); - void assign(initializer_list); - - allocator_type get_allocator() const noexcept; - - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - reverse_iterator rbegin() noexcept; - const_reverse_iterator rbegin() const noexcept; - reverse_iterator rend() noexcept; - const_reverse_iterator rend() const noexcept; - const_iterator cbegin() const noexcept; - const_iterator cend() const noexcept; - const_reverse_iterator crbegin() const noexcept; - const_reverse_iterator crend() const noexcept; - - reference front(); - const_reference front() const; - reference back(); - const_reference back() const; - - bool empty() const noexcept; - size_type size() const noexcept; - size_type max_size() const noexcept; - - template - void emplace_front(Args&&... args); - void pop_front(); - template - void emplace_back(Args&&... args); - void pop_back(); - void push_front(const value_type& x); - void push_front(value_type&& x); - void push_back(const value_type& x); - void push_back(value_type&& x); - template - iterator emplace(const_iterator position, Args&&... args); - iterator insert(const_iterator position, const value_type& x); - iterator insert(const_iterator position, value_type&& x); - iterator insert(const_iterator position, size_type n, const value_type& x); - template - iterator insert(const_iterator position, Iter first, Iter last); - iterator insert(const_iterator position, initializer_list il); - - iterator erase(const_iterator position); - iterator erase(const_iterator position, const_iterator last); - - void resize(size_type sz); - void resize(size_type sz, const value_type& c); - - void swap(list&) - noexcept(!allocator_type::propagate_on_container_swap::value || - __is_nothrow_swappable::value); - void clear() noexcept; - - void splice(const_iterator position, list& x); - void splice(const_iterator position, list&& x); - void splice(const_iterator position, list& x, const_iterator i); - void splice(const_iterator position, list&& x, const_iterator i); - void splice(const_iterator position, list& x, const_iterator first, - const_iterator last); - void splice(const_iterator position, list&& x, const_iterator first, - const_iterator last); - - void remove(const value_type& value); - template void remove_if(Pred pred); - void unique(); - template - void unique(BinaryPredicate binary_pred); - void merge(list& x); - void merge(list&& x); - template - void merge(list& x, Compare comp); - template - void merge(list&& x, Compare comp); - void sort(); - template - void sort(Compare comp); - void reverse() noexcept; -}; - -template - bool operator==(const list& x, const list& y); -template - bool operator< (const list& x, const list& y); -template - bool operator!=(const list& x, const list& y); -template - bool operator> (const list& x, const list& y); -template - bool operator>=(const list& x, const list& y); -template - bool operator<=(const list& x, const list& y); - -template - void swap(list& x, list& y) - noexcept(noexcept(x.swap(y))); - -} // std - -*/ - -#include <__config> - -#include -#include -#include -#include -#include - -#include <__undef_min_max> - -#include <__debug> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template struct __list_node; - -template -struct __list_node_base -{ - typedef typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__list_node<_Tp, _VoidPtr> > pointer; -#else - rebind<__list_node<_Tp, _VoidPtr> >::other pointer; -#endif - - typedef typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__list_node_base> __base_pointer; -#else - rebind<__list_node_base>::other __base_pointer; -#endif - - pointer __prev_; - pointer __next_; - - _LIBCPP_INLINE_VISIBILITY - __list_node_base() : __prev_(__self()), __next_(__self()) {} - - _LIBCPP_INLINE_VISIBILITY - pointer __self() - { - return static_cast(pointer_traits<__base_pointer>::pointer_to(*this)); - } -}; - -template -struct __list_node - : public __list_node_base<_Tp, _VoidPtr> -{ - _Tp __value_; -}; - -template > class _LIBCPP_TYPE_VIS_ONLY list; -template class __list_imp; -template class _LIBCPP_TYPE_VIS_ONLY __list_const_iterator; - -template -class _LIBCPP_TYPE_VIS_ONLY __list_iterator -{ - typedef typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__list_node<_Tp, _VoidPtr> > __node_pointer; -#else - rebind<__list_node<_Tp, _VoidPtr> >::other __node_pointer; -#endif - - __node_pointer __ptr_; - -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY - explicit __list_iterator(__node_pointer __p, const void* __c) _NOEXCEPT - : __ptr_(__p) - { - __get_db()->__insert_ic(this, __c); - } -#else - _LIBCPP_INLINE_VISIBILITY - explicit __list_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {} -#endif - - - - template friend class list; - template friend class __list_imp; - template friend class __list_const_iterator; -public: - typedef bidirectional_iterator_tag iterator_category; - typedef _Tp value_type; - typedef value_type& reference; - typedef typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - typedef typename pointer_traits::difference_type difference_type; - - _LIBCPP_INLINE_VISIBILITY - __list_iterator() _NOEXCEPT : __ptr_(nullptr) - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_i(this); -#endif - } - -#if _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - __list_iterator(const __list_iterator& __p) - : __ptr_(__p.__ptr_) - { - __get_db()->__iterator_copy(this, &__p); - } - - _LIBCPP_INLINE_VISIBILITY - ~__list_iterator() - { - __get_db()->__erase_i(this); - } - - _LIBCPP_INLINE_VISIBILITY - __list_iterator& operator=(const __list_iterator& __p) - { - if (this != &__p) - { - __get_db()->__iterator_copy(this, &__p); - __ptr_ = __p.__ptr_; - } - return *this; - } - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable list::iterator"); -#endif - return __ptr_->__value_; - } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable list::iterator"); -#endif - return pointer_traits::pointer_to(__ptr_->__value_); - } - - _LIBCPP_INLINE_VISIBILITY - __list_iterator& operator++() - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable list::iterator"); -#endif - __ptr_ = __ptr_->__next_; - return *this; - } - _LIBCPP_INLINE_VISIBILITY - __list_iterator operator++(int) {__list_iterator __t(*this); ++(*this); return __t;} - - _LIBCPP_INLINE_VISIBILITY - __list_iterator& operator--() - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__decrementable(this), - "Attempted to decrement non-decrementable list::iterator"); -#endif - __ptr_ = __ptr_->__prev_; - return *this; - } - _LIBCPP_INLINE_VISIBILITY - __list_iterator operator--(int) {__list_iterator __t(*this); --(*this); return __t;} - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __list_iterator& __x, const __list_iterator& __y) - { - return __x.__ptr_ == __y.__ptr_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __list_iterator& __x, const __list_iterator& __y) - {return !(__x == __y);} -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __list_const_iterator -{ - typedef typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind<__list_node<_Tp, _VoidPtr> > __node_pointer; -#else - rebind<__list_node<_Tp, _VoidPtr> >::other __node_pointer; -#endif - - __node_pointer __ptr_; - -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY - explicit __list_const_iterator(__node_pointer __p, const void* __c) _NOEXCEPT - : __ptr_(__p) - { - __get_db()->__insert_ic(this, __c); - } -#else - _LIBCPP_INLINE_VISIBILITY - explicit __list_const_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {} -#endif - - template friend class list; - template friend class __list_imp; -public: - typedef bidirectional_iterator_tag iterator_category; - typedef _Tp value_type; - typedef const value_type& reference; - typedef typename pointer_traits<_VoidPtr>::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - typedef typename pointer_traits::difference_type difference_type; - - _LIBCPP_INLINE_VISIBILITY - __list_const_iterator() _NOEXCEPT : __ptr_(nullptr) - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_i(this); -#endif - } - _LIBCPP_INLINE_VISIBILITY - __list_const_iterator(const __list_iterator<_Tp, _VoidPtr>& __p) _NOEXCEPT - : __ptr_(__p.__ptr_) - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__iterator_copy(this, &__p); -#endif - } - -#if _LIBCPP_DEBUG_LEVEL >= 2 - - _LIBCPP_INLINE_VISIBILITY - __list_const_iterator(const __list_const_iterator& __p) - : __ptr_(__p.__ptr_) - { - __get_db()->__iterator_copy(this, &__p); - } - - _LIBCPP_INLINE_VISIBILITY - ~__list_const_iterator() - { - __get_db()->__erase_i(this); - } - - _LIBCPP_INLINE_VISIBILITY - __list_const_iterator& operator=(const __list_const_iterator& __p) - { - if (this != &__p) - { - __get_db()->__iterator_copy(this, &__p); - __ptr_ = __p.__ptr_; - } - return *this; - } - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_INLINE_VISIBILITY - reference operator*() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable list::const_iterator"); -#endif - return __ptr_->__value_; - } - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to dereference a non-dereferenceable list::iterator"); -#endif - return pointer_traits::pointer_to(__ptr_->__value_); - } - - _LIBCPP_INLINE_VISIBILITY - __list_const_iterator& operator++() - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable list::const_iterator"); -#endif - __ptr_ = __ptr_->__next_; - return *this; - } - _LIBCPP_INLINE_VISIBILITY - __list_const_iterator operator++(int) {__list_const_iterator __t(*this); ++(*this); return __t;} - - _LIBCPP_INLINE_VISIBILITY - __list_const_iterator& operator--() - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__decrementable(this), - "Attempted to decrement non-decrementable list::const_iterator"); -#endif - __ptr_ = __ptr_->__prev_; - return *this; - } - _LIBCPP_INLINE_VISIBILITY - __list_const_iterator operator--(int) {__list_const_iterator __t(*this); --(*this); return __t;} - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __list_const_iterator& __x, const __list_const_iterator& __y) - { - return __x.__ptr_ == __y.__ptr_; - } - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __list_const_iterator& __x, const __list_const_iterator& __y) - {return !(__x == __y);} -}; - -template -class __list_imp -{ - __list_imp(const __list_imp&); - __list_imp& operator=(const __list_imp&); -protected: - typedef _Tp value_type; - typedef _Alloc allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename __alloc_traits::size_type size_type; - typedef typename __alloc_traits::void_pointer __void_pointer; - typedef __list_iterator iterator; - typedef __list_const_iterator const_iterator; - typedef __list_node_base __node_base; - typedef __list_node __node; - typedef typename __rebind_alloc_helper<__alloc_traits, __node>::type __node_allocator; - typedef allocator_traits<__node_allocator> __node_alloc_traits; - typedef typename __node_alloc_traits::pointer __node_pointer; - typedef typename __node_alloc_traits::pointer __node_const_pointer; - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; - typedef typename __alloc_traits::difference_type difference_type; - - typedef typename __rebind_alloc_helper<__alloc_traits, __node_base>::type __node_base_allocator; - typedef typename allocator_traits<__node_base_allocator>::pointer __node_base_pointer; - - __node_base __end_; - __compressed_pair __size_alloc_; - - _LIBCPP_INLINE_VISIBILITY - size_type& __sz() _NOEXCEPT {return __size_alloc_.first();} - _LIBCPP_INLINE_VISIBILITY - const size_type& __sz() const _NOEXCEPT - {return __size_alloc_.first();} - _LIBCPP_INLINE_VISIBILITY - __node_allocator& __node_alloc() _NOEXCEPT - {return __size_alloc_.second();} - _LIBCPP_INLINE_VISIBILITY - const __node_allocator& __node_alloc() const _NOEXCEPT - {return __size_alloc_.second();} - - static void __unlink_nodes(__node_pointer __f, __node_pointer __l) _NOEXCEPT; - - __list_imp() - _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value); - __list_imp(const allocator_type& __a); - ~__list_imp(); - void clear() _NOEXCEPT; - _LIBCPP_INLINE_VISIBILITY - bool empty() const _NOEXCEPT {return __sz() == 0;} - - _LIBCPP_INLINE_VISIBILITY - iterator begin() _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__end_.__next_, this); -#else - return iterator(__end_.__next_); -#endif - } - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - return const_iterator(__end_.__next_, this); -#else - return const_iterator(__end_.__next_); -#endif - } - _LIBCPP_INLINE_VISIBILITY - iterator end() _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(__end_)), this); -#else - return iterator(static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(__end_))); -#endif - } - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - return const_iterator(static_cast<__node_const_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(const_cast<__node_base&>(__end_))), this); -#else - return const_iterator(static_cast<__node_const_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(const_cast<__node_base&>(__end_)))); -#endif - } - - void swap(__list_imp& __c) - _NOEXCEPT_(!__node_alloc_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value); - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __list_imp& __c) - {__copy_assign_alloc(__c, integral_constant());} - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__list_imp& __c) - _NOEXCEPT_( - !__node_alloc_traits::propagate_on_container_move_assignment::value || - is_nothrow_move_assignable<__node_allocator>::value) - {__move_assign_alloc(__c, integral_constant());} - -private: - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__node_allocator& __x, __node_allocator& __y) - _NOEXCEPT_(!__node_alloc_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value) - {__swap_alloc(__x, __y, integral_constant());} - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__node_allocator& __x, __node_allocator& __y, true_type) - _NOEXCEPT_(__is_nothrow_swappable<__node_allocator>::value) - { - using _VSTD::swap; - swap(__x, __y); - } - _LIBCPP_INLINE_VISIBILITY - static void __swap_alloc(__node_allocator& __x, __node_allocator& __y, false_type) - _NOEXCEPT - {} - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __list_imp& __c, true_type) - { - if (__node_alloc() != __c.__node_alloc()) - clear(); - __node_alloc() = __c.__node_alloc(); - } - - _LIBCPP_INLINE_VISIBILITY - void __copy_assign_alloc(const __list_imp& __c, false_type) - {} - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__list_imp& __c, true_type) - _NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value) - { - __node_alloc() = _VSTD::move(__c.__node_alloc()); - } - - _LIBCPP_INLINE_VISIBILITY - void __move_assign_alloc(__list_imp& __c, false_type) - _NOEXCEPT - {} -}; - -// Unlink nodes [__f, __l] -template -inline _LIBCPP_INLINE_VISIBILITY -void -__list_imp<_Tp, _Alloc>::__unlink_nodes(__node_pointer __f, __node_pointer __l) - _NOEXCEPT -{ - __f->__prev_->__next_ = __l->__next_; - __l->__next_->__prev_ = __f->__prev_; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__list_imp<_Tp, _Alloc>::__list_imp() - _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value) - : __size_alloc_(0) -{ -} - -template -inline _LIBCPP_INLINE_VISIBILITY -__list_imp<_Tp, _Alloc>::__list_imp(const allocator_type& __a) - : __size_alloc_(0, __node_allocator(__a)) -{ -} - -template -__list_imp<_Tp, _Alloc>::~__list_imp() -{ - clear(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__erase_c(this); -#endif -} - -template -void -__list_imp<_Tp, _Alloc>::clear() _NOEXCEPT -{ - if (!empty()) - { - __node_allocator& __na = __node_alloc(); - __node_pointer __f = __end_.__next_; - __node_pointer __l = static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(__end_)); - __unlink_nodes(__f, __l->__prev_); - __sz() = 0; - while (__f != __l) - { - __node_pointer __n = __f; - __f = __f->__next_; - __node_alloc_traits::destroy(__na, _VSTD::addressof(__n->__value_)); - __node_alloc_traits::deallocate(__na, __n, 1); - } -#if _LIBCPP_DEBUG_LEVEL >= 2 - __c_node* __c = __get_db()->__find_c_and_lock(this); - for (__i_node** __p = __c->end_; __p != __c->beg_; ) - { - --__p; - const_iterator* __i = static_cast((*__p)->__i_); - if (__i->__ptr_ != __l) - { - (*__p)->__c_ = nullptr; - if (--__c->end_ != __p) - memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); - } - } - __get_db()->unlock(); -#endif - } -} - -template -void -__list_imp<_Tp, _Alloc>::swap(__list_imp& __c) - _NOEXCEPT_(!__node_alloc_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value) -{ - _LIBCPP_ASSERT(__alloc_traits::propagate_on_container_swap::value || - this->__node_alloc() == __c.__node_alloc(), - "list::swap: Either propagate_on_container_swap must be true" - " or the allocators must compare equal"); - using _VSTD::swap; - __swap_alloc(__node_alloc(), __c.__node_alloc()); - swap(__sz(), __c.__sz()); - swap(__end_, __c.__end_); - if (__sz() == 0) - __end_.__next_ = __end_.__prev_ = __end_.__self(); - else - __end_.__prev_->__next_ = __end_.__next_->__prev_ = __end_.__self(); - if (__c.__sz() == 0) - __c.__end_.__next_ = __c.__end_.__prev_ = __c.__end_.__self(); - else - __c.__end_.__prev_->__next_ = __c.__end_.__next_->__prev_ = __c.__end_.__self(); - -#if _LIBCPP_DEBUG_LEVEL >= 2 - __libcpp_db* __db = __get_db(); - __c_node* __cn1 = __db->__find_c_and_lock(this); - __c_node* __cn2 = __db->__find_c(&__c); - std::swap(__cn1->beg_, __cn2->beg_); - std::swap(__cn1->end_, __cn2->end_); - std::swap(__cn1->cap_, __cn2->cap_); - for (__i_node** __p = __cn1->end_; __p != __cn1->beg_;) - { - --__p; - const_iterator* __i = static_cast((*__p)->__i_); - if (__i->__ptr_ == static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(__c.__end_))) - { - __cn2->__add(*__p); - if (--__cn1->end_ != __p) - memmove(__p, __p+1, (__cn1->end_ - __p)*sizeof(__i_node*)); - } - else - (*__p)->__c_ = __cn1; - } - for (__i_node** __p = __cn2->end_; __p != __cn2->beg_;) - { - --__p; - const_iterator* __i = static_cast((*__p)->__i_); - if (__i->__ptr_ == static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(__end_))) - { - __cn1->__add(*__p); - if (--__cn2->end_ != __p) - memmove(__p, __p+1, (__cn2->end_ - __p)*sizeof(__i_node*)); - } - else - (*__p)->__c_ = __cn2; - } - __db->unlock(); -#endif -} - -template */> -class _LIBCPP_TYPE_VIS_ONLY list - : private __list_imp<_Tp, _Alloc> -{ - typedef __list_imp<_Tp, _Alloc> base; - typedef typename base::__node __node; - typedef typename base::__node_allocator __node_allocator; - typedef typename base::__node_pointer __node_pointer; - typedef typename base::__node_alloc_traits __node_alloc_traits; - typedef typename base::__node_base __node_base; - typedef typename base::__node_base_pointer __node_base_pointer; - -public: - typedef _Tp value_type; - typedef _Alloc allocator_type; - static_assert((is_same::value), - "Invalid allocator::value_type"); - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename base::pointer pointer; - typedef typename base::const_pointer const_pointer; - typedef typename base::size_type size_type; - typedef typename base::difference_type difference_type; - typedef typename base::iterator iterator; - typedef typename base::const_iterator const_iterator; - typedef _VSTD::reverse_iterator reverse_iterator; - typedef _VSTD::reverse_iterator const_reverse_iterator; - - _LIBCPP_INLINE_VISIBILITY - list() - _NOEXCEPT_(is_nothrow_default_constructible<__node_allocator>::value) - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - } - _LIBCPP_INLINE_VISIBILITY - explicit list(const allocator_type& __a) : base(__a) - { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - } - explicit list(size_type __n); -#if _LIBCPP_STD_VER > 11 - explicit list(size_type __n, const allocator_type& __a); -#endif - list(size_type __n, const value_type& __x); - list(size_type __n, const value_type& __x, const allocator_type& __a); - template - list(_InpIter __f, _InpIter __l, - typename enable_if<__is_input_iterator<_InpIter>::value>::type* = 0); - template - list(_InpIter __f, _InpIter __l, const allocator_type& __a, - typename enable_if<__is_input_iterator<_InpIter>::value>::type* = 0); - - list(const list& __c); - list(const list& __c, const allocator_type& __a); - list& operator=(const list& __c); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - list(initializer_list __il); - list(initializer_list __il, const allocator_type& __a); -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - list(list&& __c) - _NOEXCEPT_(is_nothrow_move_constructible<__node_allocator>::value); - list(list&& __c, const allocator_type& __a); - list& operator=(list&& __c) - _NOEXCEPT_( - __node_alloc_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable<__node_allocator>::value); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY - list& operator=(initializer_list __il) - {assign(__il.begin(), __il.end()); return *this;} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - template - void assign(_InpIter __f, _InpIter __l, - typename enable_if<__is_input_iterator<_InpIter>::value>::type* = 0); - void assign(size_type __n, const value_type& __x); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY - void assign(initializer_list __il) - {assign(__il.begin(), __il.end());} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - allocator_type get_allocator() const _NOEXCEPT; - - _LIBCPP_INLINE_VISIBILITY - size_type size() const _NOEXCEPT {return base::__sz();} - _LIBCPP_INLINE_VISIBILITY - bool empty() const _NOEXCEPT {return base::empty();} - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const _NOEXCEPT - {return numeric_limits::max();} - - _LIBCPP_INLINE_VISIBILITY - iterator begin() _NOEXCEPT {return base::begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT {return base::begin();} - _LIBCPP_INLINE_VISIBILITY - iterator end() _NOEXCEPT {return base::end();} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT {return base::end();} - _LIBCPP_INLINE_VISIBILITY - const_iterator cbegin() const _NOEXCEPT {return base::begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator cend() const _NOEXCEPT {return base::end();} - - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rbegin() _NOEXCEPT - {return reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rbegin() const _NOEXCEPT - {return const_reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rend() _NOEXCEPT - {return reverse_iterator(begin());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rend() const _NOEXCEPT - {return const_reverse_iterator(begin());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crbegin() const _NOEXCEPT - {return const_reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crend() const _NOEXCEPT - {return const_reverse_iterator(begin());} - - _LIBCPP_INLINE_VISIBILITY - reference front() - { - _LIBCPP_ASSERT(!empty(), "list::front called on empty list"); - return base::__end_.__next_->__value_; - } - _LIBCPP_INLINE_VISIBILITY - const_reference front() const - { - _LIBCPP_ASSERT(!empty(), "list::front called on empty list"); - return base::__end_.__next_->__value_; - } - _LIBCPP_INLINE_VISIBILITY - reference back() - { - _LIBCPP_ASSERT(!empty(), "list::back called on empty list"); - return base::__end_.__prev_->__value_; - } - _LIBCPP_INLINE_VISIBILITY - const_reference back() const - { - _LIBCPP_ASSERT(!empty(), "list::back called on empty list"); - return base::__end_.__prev_->__value_; - } - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - void push_front(value_type&& __x); - void push_back(value_type&& __x); -#ifndef _LIBCPP_HAS_NO_VARIADICS - template - void emplace_front(_Args&&... __args); - template - void emplace_back(_Args&&... __args); - template - iterator emplace(const_iterator __p, _Args&&... __args); -#endif // _LIBCPP_HAS_NO_VARIADICS - iterator insert(const_iterator __p, value_type&& __x); -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - void push_front(const value_type& __x); - void push_back(const value_type& __x); - - iterator insert(const_iterator __p, const value_type& __x); - iterator insert(const_iterator __p, size_type __n, const value_type& __x); - template - iterator insert(const_iterator __p, _InpIter __f, _InpIter __l, - typename enable_if<__is_input_iterator<_InpIter>::value>::type* = 0); -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - _LIBCPP_INLINE_VISIBILITY - iterator insert(const_iterator __p, initializer_list __il) - {return insert(__p, __il.begin(), __il.end());} -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - void swap(list& __c) - _NOEXCEPT_(!__node_alloc_traits::propagate_on_container_swap::value || - __is_nothrow_swappable<__node_allocator>::value) - {base::swap(__c);} - _LIBCPP_INLINE_VISIBILITY - void clear() _NOEXCEPT {base::clear();} - - void pop_front(); - void pop_back(); - - iterator erase(const_iterator __p); - iterator erase(const_iterator __f, const_iterator __l); - - void resize(size_type __n); - void resize(size_type __n, const value_type& __x); - - void splice(const_iterator __p, list& __c); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void splice(const_iterator __p, list&& __c) {splice(__p, __c);} -#endif - void splice(const_iterator __p, list& __c, const_iterator __i); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void splice(const_iterator __p, list&& __c, const_iterator __i) - {splice(__p, __c, __i);} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - void splice(const_iterator __p, list& __c, const_iterator __f, const_iterator __l); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void splice(const_iterator __p, list&& __c, const_iterator __f, const_iterator __l) - {splice(__p, __c, __f, __l);} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - void remove(const value_type& __x); - template void remove_if(_Pred __pred); - void unique(); - template - void unique(_BinaryPred __binary_pred); - void merge(list& __c); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - void merge(list&& __c) {merge(__c);} -#endif - template - void merge(list& __c, _Comp __comp); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - template - _LIBCPP_INLINE_VISIBILITY - void merge(list&& __c, _Comp __comp) {merge(__c, __comp);} -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - void sort(); - template - void sort(_Comp __comp); - - void reverse() _NOEXCEPT; - - bool __invariants() const; - -#if _LIBCPP_DEBUG_LEVEL >= 2 - - bool __dereferenceable(const const_iterator* __i) const; - bool __decrementable(const const_iterator* __i) const; - bool __addable(const const_iterator* __i, ptrdiff_t __n) const; - bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const; - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - -private: - static void __link_nodes (__node_pointer __p, __node_pointer __f, __node_pointer __l); - void __link_nodes_at_front(__node_pointer __f, __node_pointer __l); - void __link_nodes_at_back (__node_pointer __f, __node_pointer __l); - iterator __iterator(size_type __n); - template - static iterator __sort(iterator __f1, iterator __e2, size_type __n, _Comp& __comp); - - void __move_assign(list& __c, true_type) - _NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value); - void __move_assign(list& __c, false_type); -}; - -// Link in nodes [__f, __l] just prior to __p -template -inline _LIBCPP_INLINE_VISIBILITY -void -list<_Tp, _Alloc>::__link_nodes(__node_pointer __p, __node_pointer __f, __node_pointer __l) -{ - __p->__prev_->__next_ = __f; - __f->__prev_ = __p->__prev_; - __p->__prev_ = __l; - __l->__next_ = __p; -} - -// Link in nodes [__f, __l] at the front of the list -template -inline _LIBCPP_INLINE_VISIBILITY -void -list<_Tp, _Alloc>::__link_nodes_at_front(__node_pointer __f, __node_pointer __l) -{ - __f->__prev_ = base::__end_.__self(); - __l->__next_ = base::__end_.__next_; - __l->__next_->__prev_ = __l; - base::__end_.__next_ = __f; -} - -// Link in nodes [__f, __l] at the front of the list -template -inline _LIBCPP_INLINE_VISIBILITY -void -list<_Tp, _Alloc>::__link_nodes_at_back(__node_pointer __f, __node_pointer __l) -{ - __l->__next_ = base::__end_.__self(); - __f->__prev_ = base::__end_.__prev_; - __f->__prev_->__next_ = __f; - base::__end_.__prev_ = __l; -} - - -template -inline _LIBCPP_INLINE_VISIBILITY -typename list<_Tp, _Alloc>::iterator -list<_Tp, _Alloc>::__iterator(size_type __n) -{ - return __n <= base::__sz() / 2 ? _VSTD::next(begin(), __n) - : _VSTD::prev(end(), base::__sz() - __n); -} - -template -list<_Tp, _Alloc>::list(size_type __n) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (; __n > 0; --__n) -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - emplace_back(); -#else - push_back(value_type()); -#endif -} - -#if _LIBCPP_STD_VER > 11 -template -list<_Tp, _Alloc>::list(size_type __n, const allocator_type& __a) : base(__a) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (; __n > 0; --__n) -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - emplace_back(); -#else - push_back(value_type()); -#endif -} -#endif - -template -list<_Tp, _Alloc>::list(size_type __n, const value_type& __x) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (; __n > 0; --__n) - push_back(__x); -} - -template -list<_Tp, _Alloc>::list(size_type __n, const value_type& __x, const allocator_type& __a) - : base(__a) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (; __n > 0; --__n) - push_back(__x); -} - -template -template -list<_Tp, _Alloc>::list(_InpIter __f, _InpIter __l, - typename enable_if<__is_input_iterator<_InpIter>::value>::type*) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (; __f != __l; ++__f) - push_back(*__f); -} - -template -template -list<_Tp, _Alloc>::list(_InpIter __f, _InpIter __l, const allocator_type& __a, - typename enable_if<__is_input_iterator<_InpIter>::value>::type*) - : base(__a) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (; __f != __l; ++__f) - push_back(*__f); -} - -template -list<_Tp, _Alloc>::list(const list& __c) - : base(allocator_type( - __node_alloc_traits::select_on_container_copy_construction( - __c.__node_alloc()))) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (const_iterator __i = __c.begin(), __e = __c.end(); __i != __e; ++__i) - push_back(*__i); -} - -template -list<_Tp, _Alloc>::list(const list& __c, const allocator_type& __a) - : base(__a) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (const_iterator __i = __c.begin(), __e = __c.end(); __i != __e; ++__i) - push_back(*__i); -} - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -list<_Tp, _Alloc>::list(initializer_list __il, const allocator_type& __a) - : base(__a) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (typename initializer_list::const_iterator __i = __il.begin(), - __e = __il.end(); __i != __e; ++__i) - push_back(*__i); -} - -template -list<_Tp, _Alloc>::list(initializer_list __il) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - for (typename initializer_list::const_iterator __i = __il.begin(), - __e = __il.end(); __i != __e; ++__i) - push_back(*__i); -} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - -template -inline _LIBCPP_INLINE_VISIBILITY -list<_Tp, _Alloc>& -list<_Tp, _Alloc>::operator=(const list& __c) -{ - if (this != &__c) - { - base::__copy_assign_alloc(__c); - assign(__c.begin(), __c.end()); - } - return *this; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_INLINE_VISIBILITY -list<_Tp, _Alloc>::list(list&& __c) - _NOEXCEPT_(is_nothrow_move_constructible<__node_allocator>::value) - : base(allocator_type(_VSTD::move(__c.__node_alloc()))) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - splice(end(), __c); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -list<_Tp, _Alloc>::list(list&& __c, const allocator_type& __a) - : base(__a) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__insert_c(this); -#endif - if (__a == __c.get_allocator()) - splice(end(), __c); - else - { - typedef move_iterator _Ip; - assign(_Ip(__c.begin()), _Ip(__c.end())); - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -list<_Tp, _Alloc>& -list<_Tp, _Alloc>::operator=(list&& __c) - _NOEXCEPT_( - __node_alloc_traits::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable<__node_allocator>::value) -{ - __move_assign(__c, integral_constant()); - return *this; -} - -template -void -list<_Tp, _Alloc>::__move_assign(list& __c, false_type) -{ - if (base::__node_alloc() != __c.__node_alloc()) - { - typedef move_iterator _Ip; - assign(_Ip(__c.begin()), _Ip(__c.end())); - } - else - __move_assign(__c, true_type()); -} - -template -void -list<_Tp, _Alloc>::__move_assign(list& __c, true_type) - _NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value) -{ - clear(); - base::__move_assign_alloc(__c); - splice(end(), __c); -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -template -void -list<_Tp, _Alloc>::assign(_InpIter __f, _InpIter __l, - typename enable_if<__is_input_iterator<_InpIter>::value>::type*) -{ - iterator __i = begin(); - iterator __e = end(); - for (; __f != __l && __i != __e; ++__f, ++__i) - *__i = *__f; - if (__i == __e) - insert(__e, __f, __l); - else - erase(__i, __e); -} - -template -void -list<_Tp, _Alloc>::assign(size_type __n, const value_type& __x) -{ - iterator __i = begin(); - iterator __e = end(); - for (; __n > 0 && __i != __e; --__n, ++__i) - *__i = __x; - if (__i == __e) - insert(__e, __n, __x); - else - erase(__i, __e); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -_Alloc -list<_Tp, _Alloc>::get_allocator() const _NOEXCEPT -{ - return allocator_type(base::__node_alloc()); -} - -template -typename list<_Tp, _Alloc>::iterator -list<_Tp, _Alloc>::insert(const_iterator __p, const value_type& __x) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "list::insert(iterator, x) called with an iterator not" - " referring to this list"); -#endif - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __hold->__prev_ = 0; - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), __x); - __link_nodes(__p.__ptr_, __hold.get(), __hold.get()); - ++base::__sz(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__hold.release(), this); -#else - return iterator(__hold.release()); -#endif -} - -template -typename list<_Tp, _Alloc>::iterator -list<_Tp, _Alloc>::insert(const_iterator __p, size_type __n, const value_type& __x) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "list::insert(iterator, n, x) called with an iterator not" - " referring to this list"); - iterator __r(__p.__ptr_, this); -#else - iterator __r(__p.__ptr_); -#endif - if (__n > 0) - { - size_type __ds = 0; - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __hold->__prev_ = 0; - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), __x); - ++__ds; -#if _LIBCPP_DEBUG_LEVEL >= 2 - __r = iterator(__hold.get(), this); -#else - __r = iterator(__hold.get()); -#endif - __hold.release(); - iterator __e = __r; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (--__n; __n != 0; --__n, ++__e, ++__ds) - { - __hold.reset(__node_alloc_traits::allocate(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), __x); - __e.__ptr_->__next_ = __hold.get(); - __hold->__prev_ = __e.__ptr_; - __hold.release(); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - while (true) - { - __node_alloc_traits::destroy(__na, _VSTD::addressof(*__e)); - __node_pointer __prev = __e.__ptr_->__prev_; - __node_alloc_traits::deallocate(__na, __e.__ptr_, 1); - if (__prev == 0) - break; -#if _LIBCPP_DEBUG_LEVEL >= 2 - __e = iterator(__prev, this); -#else - __e = iterator(__prev); -#endif - } - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __link_nodes(__p.__ptr_, __r.__ptr_, __e.__ptr_); - base::__sz() += __ds; - } - return __r; -} - -template -template -typename list<_Tp, _Alloc>::iterator -list<_Tp, _Alloc>::insert(const_iterator __p, _InpIter __f, _InpIter __l, - typename enable_if<__is_input_iterator<_InpIter>::value>::type*) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "list::insert(iterator, range) called with an iterator not" - " referring to this list"); - iterator __r(__p.__ptr_, this); -#else - iterator __r(__p.__ptr_); -#endif - if (__f != __l) - { - size_type __ds = 0; - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __hold->__prev_ = 0; - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), *__f); - ++__ds; -#if _LIBCPP_DEBUG_LEVEL >= 2 - __r = iterator(__hold.get(), this); -#else - __r = iterator(__hold.get()); -#endif - __hold.release(); - iterator __e = __r; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (++__f; __f != __l; ++__f, (void) ++__e, (void) ++__ds) - { - __hold.reset(__node_alloc_traits::allocate(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), *__f); - __e.__ptr_->__next_ = __hold.get(); - __hold->__prev_ = __e.__ptr_; - __hold.release(); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - while (true) - { - __node_alloc_traits::destroy(__na, _VSTD::addressof(*__e)); - __node_pointer __prev = __e.__ptr_->__prev_; - __node_alloc_traits::deallocate(__na, __e.__ptr_, 1); - if (__prev == 0) - break; -#if _LIBCPP_DEBUG_LEVEL >= 2 - __e = iterator(__prev, this); -#else - __e = iterator(__prev); -#endif - } - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __link_nodes(__p.__ptr_, __r.__ptr_, __e.__ptr_); - base::__sz() += __ds; - } - return __r; -} - -template -void -list<_Tp, _Alloc>::push_front(const value_type& __x) -{ - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), __x); - __link_nodes_at_front(__hold.get(), __hold.get()); - ++base::__sz(); - __hold.release(); -} - -template -void -list<_Tp, _Alloc>::push_back(const value_type& __x) -{ - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), __x); - __link_nodes_at_back(__hold.get(), __hold.get()); - ++base::__sz(); - __hold.release(); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -list<_Tp, _Alloc>::push_front(value_type&& __x) -{ - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), _VSTD::move(__x)); - __link_nodes_at_front(__hold.get(), __hold.get()); - ++base::__sz(); - __hold.release(); -} - -template -void -list<_Tp, _Alloc>::push_back(value_type&& __x) -{ - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), _VSTD::move(__x)); - __link_nodes_at_back(__hold.get(), __hold.get()); - ++base::__sz(); - __hold.release(); -} - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -void -list<_Tp, _Alloc>::emplace_front(_Args&&... __args) -{ - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), _VSTD::forward<_Args>(__args)...); - __link_nodes_at_front(__hold.get(), __hold.get()); - ++base::__sz(); - __hold.release(); -} - -template -template -void -list<_Tp, _Alloc>::emplace_back(_Args&&... __args) -{ - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), _VSTD::forward<_Args>(__args)...); - __link_nodes_at_back(__hold.get(), __hold.get()); - ++base::__sz(); - __hold.release(); -} - -template -template -typename list<_Tp, _Alloc>::iterator -list<_Tp, _Alloc>::emplace(const_iterator __p, _Args&&... __args) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "list::emplace(iterator, args...) called with an iterator not" - " referring to this list"); -#endif - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __hold->__prev_ = 0; - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), _VSTD::forward<_Args>(__args)...); - __link_nodes(__p.__ptr_, __hold.get(), __hold.get()); - ++base::__sz(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__hold.release(), this); -#else - return iterator(__hold.release()); -#endif -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -template -typename list<_Tp, _Alloc>::iterator -list<_Tp, _Alloc>::insert(const_iterator __p, value_type&& __x) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "list::insert(iterator, x) called with an iterator not" - " referring to this list"); -#endif - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __hold->__prev_ = 0; - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), _VSTD::move(__x)); - __link_nodes(__p.__ptr_, __hold.get(), __hold.get()); - ++base::__sz(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__hold.release(), this); -#else - return iterator(__hold.release()); -#endif -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -void -list<_Tp, _Alloc>::pop_front() -{ - _LIBCPP_ASSERT(!empty(), "list::pop_front() called with empty list"); - __node_allocator& __na = base::__node_alloc(); - __node_pointer __n = base::__end_.__next_; - base::__unlink_nodes(__n, __n); - --base::__sz(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __c_node* __c = __get_db()->__find_c_and_lock(this); - for (__i_node** __p = __c->end_; __p != __c->beg_; ) - { - --__p; - iterator* __i = static_cast((*__p)->__i_); - if (__i->__ptr_ == __n) - { - (*__p)->__c_ = nullptr; - if (--__c->end_ != __p) - memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); - } - } - __get_db()->unlock(); -#endif - __node_alloc_traits::destroy(__na, _VSTD::addressof(__n->__value_)); - __node_alloc_traits::deallocate(__na, __n, 1); -} - -template -void -list<_Tp, _Alloc>::pop_back() -{ - _LIBCPP_ASSERT(!empty(), "list::pop_back() called with empty list"); - __node_allocator& __na = base::__node_alloc(); - __node_pointer __n = base::__end_.__prev_; - base::__unlink_nodes(__n, __n); - --base::__sz(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __c_node* __c = __get_db()->__find_c_and_lock(this); - for (__i_node** __p = __c->end_; __p != __c->beg_; ) - { - --__p; - iterator* __i = static_cast((*__p)->__i_); - if (__i->__ptr_ == __n) - { - (*__p)->__c_ = nullptr; - if (--__c->end_ != __p) - memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); - } - } - __get_db()->unlock(); -#endif - __node_alloc_traits::destroy(__na, _VSTD::addressof(__n->__value_)); - __node_alloc_traits::deallocate(__na, __n, 1); -} - -template -typename list<_Tp, _Alloc>::iterator -list<_Tp, _Alloc>::erase(const_iterator __p) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "list::erase(iterator) called with an iterator not" - " referring to this list"); -#endif - _LIBCPP_ASSERT(__p != end(), - "list::erase(iterator) called with a non-dereferenceable iterator"); - __node_allocator& __na = base::__node_alloc(); - __node_pointer __n = __p.__ptr_; - __node_pointer __r = __n->__next_; - base::__unlink_nodes(__n, __n); - --base::__sz(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __c_node* __c = __get_db()->__find_c_and_lock(this); - for (__i_node** __p = __c->end_; __p != __c->beg_; ) - { - --__p; - iterator* __i = static_cast((*__p)->__i_); - if (__i->__ptr_ == __n) - { - (*__p)->__c_ = nullptr; - if (--__c->end_ != __p) - memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); - } - } - __get_db()->unlock(); -#endif - __node_alloc_traits::destroy(__na, _VSTD::addressof(__n->__value_)); - __node_alloc_traits::deallocate(__na, __n, 1); -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__r, this); -#else - return iterator(__r); -#endif -} - -template -typename list<_Tp, _Alloc>::iterator -list<_Tp, _Alloc>::erase(const_iterator __f, const_iterator __l) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__f) == this, - "list::erase(iterator, iterator) called with an iterator not" - " referring to this list"); -#endif - if (__f != __l) - { - __node_allocator& __na = base::__node_alloc(); - base::__unlink_nodes(__f.__ptr_, __l.__ptr_->__prev_); - while (__f != __l) - { - __node_pointer __n = __f.__ptr_; - ++__f; - --base::__sz(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __c_node* __c = __get_db()->__find_c_and_lock(this); - for (__i_node** __p = __c->end_; __p != __c->beg_; ) - { - --__p; - iterator* __i = static_cast((*__p)->__i_); - if (__i->__ptr_ == __n) - { - (*__p)->__c_ = nullptr; - if (--__c->end_ != __p) - memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); - } - } - __get_db()->unlock(); -#endif - __node_alloc_traits::destroy(__na, _VSTD::addressof(__n->__value_)); - __node_alloc_traits::deallocate(__na, __n, 1); - } - } -#if _LIBCPP_DEBUG_LEVEL >= 2 - return iterator(__l.__ptr_, this); -#else - return iterator(__l.__ptr_); -#endif -} - -template -void -list<_Tp, _Alloc>::resize(size_type __n) -{ - if (__n < base::__sz()) - erase(__iterator(__n), end()); - else if (__n > base::__sz()) - { - __n -= base::__sz(); - size_type __ds = 0; - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __hold->__prev_ = 0; - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_)); - ++__ds; -#if _LIBCPP_DEBUG_LEVEL >= 2 - iterator __r = iterator(__hold.release(), this); -#else - iterator __r = iterator(__hold.release()); -#endif - iterator __e = __r; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (--__n; __n != 0; --__n, ++__e, ++__ds) - { - __hold.reset(__node_alloc_traits::allocate(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_)); - __e.__ptr_->__next_ = __hold.get(); - __hold->__prev_ = __e.__ptr_; - __hold.release(); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - while (true) - { - __node_alloc_traits::destroy(__na, _VSTD::addressof(*__e)); - __node_pointer __prev = __e.__ptr_->__prev_; - __node_alloc_traits::deallocate(__na, __e.__ptr_, 1); - if (__prev == 0) - break; -#if _LIBCPP_DEBUG_LEVEL >= 2 - __e = iterator(__prev, this); -#else - __e = iterator(__prev); -#endif - } - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __link_nodes_at_back(__r.__ptr_, __e.__ptr_); - base::__sz() += __ds; - } -} - -template -void -list<_Tp, _Alloc>::resize(size_type __n, const value_type& __x) -{ - if (__n < base::__sz()) - erase(__iterator(__n), end()); - else if (__n > base::__sz()) - { - __n -= base::__sz(); - size_type __ds = 0; - __node_allocator& __na = base::__node_alloc(); - typedef __allocator_destructor<__node_allocator> _Dp; - unique_ptr<__node, _Dp> __hold(__node_alloc_traits::allocate(__na, 1), _Dp(__na, 1)); - __hold->__prev_ = 0; - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), __x); - ++__ds; -#if _LIBCPP_DEBUG_LEVEL >= 2 - iterator __r = iterator(__hold.release(), this); -#else - iterator __r = iterator(__hold.release()); -#endif - iterator __e = __r; -#ifndef _LIBCPP_NO_EXCEPTIONS - try - { -#endif // _LIBCPP_NO_EXCEPTIONS - for (--__n; __n != 0; --__n, ++__e, ++__ds) - { - __hold.reset(__node_alloc_traits::allocate(__na, 1)); - __node_alloc_traits::construct(__na, _VSTD::addressof(__hold->__value_), __x); - __e.__ptr_->__next_ = __hold.get(); - __hold->__prev_ = __e.__ptr_; - __hold.release(); - } -#ifndef _LIBCPP_NO_EXCEPTIONS - } - catch (...) - { - while (true) - { - __node_alloc_traits::destroy(__na, _VSTD::addressof(*__e)); - __node_pointer __prev = __e.__ptr_->__prev_; - __node_alloc_traits::deallocate(__na, __e.__ptr_, 1); - if (__prev == 0) - break; -#if _LIBCPP_DEBUG_LEVEL >= 2 - __e = iterator(__prev, this); -#else - __e = iterator(__prev); -#endif - } - throw; - } -#endif // _LIBCPP_NO_EXCEPTIONS - __link_nodes(static_cast<__node_pointer>(pointer_traits<__node_base_pointer>:: - pointer_to(base::__end_)), __r.__ptr_, __e.__ptr_); - base::__sz() += __ds; - } -} - -template -void -list<_Tp, _Alloc>::splice(const_iterator __p, list& __c) -{ - _LIBCPP_ASSERT(this != &__c, - "list::splice(iterator, list) called with this == &list"); -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "list::splice(iterator, list) called with an iterator not" - " referring to this list"); -#endif - if (!__c.empty()) - { - __node_pointer __f = __c.__end_.__next_; - __node_pointer __l = __c.__end_.__prev_; - base::__unlink_nodes(__f, __l); - __link_nodes(__p.__ptr_, __f, __l); - base::__sz() += __c.__sz(); - __c.__sz() = 0; -#if _LIBCPP_DEBUG_LEVEL >= 2 - __libcpp_db* __db = __get_db(); - __c_node* __cn1 = __db->__find_c_and_lock(this); - __c_node* __cn2 = __db->__find_c(&__c); - for (__i_node** __p = __cn2->end_; __p != __cn2->beg_;) - { - --__p; - iterator* __i = static_cast((*__p)->__i_); - if (__i->__ptr_ != static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(__c.__end_))) - { - __cn1->__add(*__p); - (*__p)->__c_ = __cn1; - if (--__cn2->end_ != __p) - memmove(__p, __p+1, (__cn2->end_ - __p)*sizeof(__i_node*)); - } - } - __db->unlock(); -#endif - } -} - -template -void -list<_Tp, _Alloc>::splice(const_iterator __p, list& __c, const_iterator __i) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "list::splice(iterator, list, iterator) called with first iterator not" - " referring to this list"); - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__i) == &__c, - "list::splice(iterator, list, iterator) called with second iterator not" - " referring to list argument"); - _LIBCPP_ASSERT(__get_const_db()->__dereferenceable(&__i), - "list::splice(iterator, list, iterator) called with second iterator not" - " derefereceable"); -#endif - if (__p.__ptr_ != __i.__ptr_ && __p.__ptr_ != __i.__ptr_->__next_) - { - __node_pointer __f = __i.__ptr_; - base::__unlink_nodes(__f, __f); - __link_nodes(__p.__ptr_, __f, __f); - --__c.__sz(); - ++base::__sz(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __libcpp_db* __db = __get_db(); - __c_node* __cn1 = __db->__find_c_and_lock(this); - __c_node* __cn2 = __db->__find_c(&__c); - for (__i_node** __p = __cn2->end_; __p != __cn2->beg_;) - { - --__p; - iterator* __j = static_cast((*__p)->__i_); - if (__j->__ptr_ == __f) - { - __cn1->__add(*__p); - (*__p)->__c_ = __cn1; - if (--__cn2->end_ != __p) - memmove(__p, __p+1, (__cn2->end_ - __p)*sizeof(__i_node*)); - } - } - __db->unlock(); -#endif - } -} - -template -void -list<_Tp, _Alloc>::splice(const_iterator __p, list& __c, const_iterator __f, const_iterator __l) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "list::splice(iterator, list, iterator, iterator) called with first iterator not" - " referring to this list"); - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__f) == &__c, - "list::splice(iterator, list, iterator, iterator) called with second iterator not" - " referring to list argument"); - if (this == &__c) - { - for (const_iterator __i = __f; __i != __l; ++__i) - _LIBCPP_ASSERT(__i != __p, - "list::splice(iterator, list, iterator, iterator)" - " called with the first iterator within the range" - " of the second and third iterators"); - } -#endif - if (__f != __l) - { - if (this != &__c) - { - size_type __s = _VSTD::distance(__f, __l); - __c.__sz() -= __s; - base::__sz() += __s; - } - __node_pointer __first = __f.__ptr_; - --__l; - __node_pointer __last = __l.__ptr_; - base::__unlink_nodes(__first, __last); - __link_nodes(__p.__ptr_, __first, __last); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __libcpp_db* __db = __get_db(); - __c_node* __cn1 = __db->__find_c_and_lock(this); - __c_node* __cn2 = __db->__find_c(&__c); - for (__i_node** __p = __cn2->end_; __p != __cn2->beg_;) - { - --__p; - iterator* __j = static_cast((*__p)->__i_); - for (__node_pointer __k = __f.__ptr_; - __k != __l.__ptr_; __k = __k->__next_) - { - if (__j->__ptr_ == __k) - { - __cn1->__add(*__p); - (*__p)->__c_ = __cn1; - if (--__cn2->end_ != __p) - memmove(__p, __p+1, (__cn2->end_ - __p)*sizeof(__i_node*)); - } - } - } - __db->unlock(); -#endif - } -} - -template -void -list<_Tp, _Alloc>::remove(const value_type& __x) -{ - list<_Tp, _Alloc> __deleted_nodes; // collect the nodes we're removing - for (const_iterator __i = begin(), __e = end(); __i != __e;) - { - if (*__i == __x) - { - const_iterator __j = _VSTD::next(__i); - for (; __j != __e && *__j == __x; ++__j) - ; - __deleted_nodes.splice(__deleted_nodes.end(), *this, __i, __j); - __i = __j; - if (__i != __e) - ++__i; - } - else - ++__i; - } -} - -template -template -void -list<_Tp, _Alloc>::remove_if(_Pred __pred) -{ - for (iterator __i = begin(), __e = end(); __i != __e;) - { - if (__pred(*__i)) - { - iterator __j = _VSTD::next(__i); - for (; __j != __e && __pred(*__j); ++__j) - ; - __i = erase(__i, __j); - if (__i != __e) - ++__i; - } - else - ++__i; - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -list<_Tp, _Alloc>::unique() -{ - unique(__equal_to()); -} - -template -template -void -list<_Tp, _Alloc>::unique(_BinaryPred __binary_pred) -{ - for (iterator __i = begin(), __e = end(); __i != __e;) - { - iterator __j = _VSTD::next(__i); - for (; __j != __e && __binary_pred(*__i, *__j); ++__j) - ; - if (++__i != __j) - __i = erase(__i, __j); - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -list<_Tp, _Alloc>::merge(list& __c) -{ - merge(__c, __less()); -} - -template -template -void -list<_Tp, _Alloc>::merge(list& __c, _Comp __comp) -{ - if (this != &__c) - { - iterator __f1 = begin(); - iterator __e1 = end(); - iterator __f2 = __c.begin(); - iterator __e2 = __c.end(); - while (__f1 != __e1 && __f2 != __e2) - { - if (__comp(*__f2, *__f1)) - { - size_type __ds = 1; - iterator __m2 = _VSTD::next(__f2); - for (; __m2 != __e2 && __comp(*__m2, *__f1); ++__m2, ++__ds) - ; - base::__sz() += __ds; - __c.__sz() -= __ds; - __node_pointer __f = __f2.__ptr_; - __node_pointer __l = __m2.__ptr_->__prev_; - __f2 = __m2; - base::__unlink_nodes(__f, __l); - __m2 = _VSTD::next(__f1); - __link_nodes(__f1.__ptr_, __f, __l); - __f1 = __m2; - } - else - ++__f1; - } - splice(__e1, __c); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __libcpp_db* __db = __get_db(); - __c_node* __cn1 = __db->__find_c_and_lock(this); - __c_node* __cn2 = __db->__find_c(&__c); - for (__i_node** __p = __cn2->end_; __p != __cn2->beg_;) - { - --__p; - iterator* __i = static_cast((*__p)->__i_); - if (__i->__ptr_ != static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(__c.__end_))) - { - __cn1->__add(*__p); - (*__p)->__c_ = __cn1; - if (--__cn2->end_ != __p) - memmove(__p, __p+1, (__cn2->end_ - __p)*sizeof(__i_node*)); - } - } - __db->unlock(); -#endif - } -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -list<_Tp, _Alloc>::sort() -{ - sort(__less()); -} - -template -template -inline _LIBCPP_INLINE_VISIBILITY -void -list<_Tp, _Alloc>::sort(_Comp __comp) -{ - __sort(begin(), end(), base::__sz(), __comp); -} - -template -template -typename list<_Tp, _Alloc>::iterator -list<_Tp, _Alloc>::__sort(iterator __f1, iterator __e2, size_type __n, _Comp& __comp) -{ - switch (__n) - { - case 0: - case 1: - return __f1; - case 2: - if (__comp(*--__e2, *__f1)) - { - __node_pointer __f = __e2.__ptr_; - base::__unlink_nodes(__f, __f); - __link_nodes(__f1.__ptr_, __f, __f); - return __e2; - } - return __f1; - } - size_type __n2 = __n / 2; - iterator __e1 = _VSTD::next(__f1, __n2); - iterator __r = __f1 = __sort(__f1, __e1, __n2, __comp); - iterator __f2 = __e1 = __sort(__e1, __e2, __n - __n2, __comp); - if (__comp(*__f2, *__f1)) - { - iterator __m2 = _VSTD::next(__f2); - for (; __m2 != __e2 && __comp(*__m2, *__f1); ++__m2) - ; - __node_pointer __f = __f2.__ptr_; - __node_pointer __l = __m2.__ptr_->__prev_; - __r = __f2; - __e1 = __f2 = __m2; - base::__unlink_nodes(__f, __l); - __m2 = _VSTD::next(__f1); - __link_nodes(__f1.__ptr_, __f, __l); - __f1 = __m2; - } - else - ++__f1; - while (__f1 != __e1 && __f2 != __e2) - { - if (__comp(*__f2, *__f1)) - { - iterator __m2 = _VSTD::next(__f2); - for (; __m2 != __e2 && __comp(*__m2, *__f1); ++__m2) - ; - __node_pointer __f = __f2.__ptr_; - __node_pointer __l = __m2.__ptr_->__prev_; - if (__e1 == __f2) - __e1 = __m2; - __f2 = __m2; - base::__unlink_nodes(__f, __l); - __m2 = _VSTD::next(__f1); - __link_nodes(__f1.__ptr_, __f, __l); - __f1 = __m2; - } - else - ++__f1; - } - return __r; -} - -template -void -list<_Tp, _Alloc>::reverse() _NOEXCEPT -{ - if (base::__sz() > 1) - { - iterator __e = end(); - for (iterator __i = begin(); __i.__ptr_ != __e.__ptr_;) - { - _VSTD::swap(__i.__ptr_->__prev_, __i.__ptr_->__next_); - __i.__ptr_ = __i.__ptr_->__prev_; - } - _VSTD::swap(__e.__ptr_->__prev_, __e.__ptr_->__next_); - } -} - -template -bool -list<_Tp, _Alloc>::__invariants() const -{ - return size() == _VSTD::distance(begin(), end()); -} - -#if _LIBCPP_DEBUG_LEVEL >= 2 - -template -bool -list<_Tp, _Alloc>::__dereferenceable(const const_iterator* __i) const -{ - return __i->__ptr_ != static_cast<__node_pointer>( - pointer_traits<__node_base_pointer>::pointer_to(const_cast<__node_base&>(this->__end_))); -} - -template -bool -list<_Tp, _Alloc>::__decrementable(const const_iterator* __i) const -{ - return !empty() && __i->__ptr_ != base::__end_.__next_; -} - -template -bool -list<_Tp, _Alloc>::__addable(const const_iterator* __i, ptrdiff_t __n) const -{ - return false; -} - -template -bool -list<_Tp, _Alloc>::__subscriptable(const const_iterator* __i, ptrdiff_t __n) const -{ - return false; -} - -#endif // _LIBCPP_DEBUG_LEVEL >= 2 - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) -{ - return __x.size() == __y.size() && _VSTD::equal(__x.begin(), __x.end(), __y.begin()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator< (const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) -{ - return _VSTD::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator> (const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) -{ - return !(__x < __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) - _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) -{ - __x.swap(__y); -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_LIST diff --git a/libcxx/include/locale b/libcxx/include/locale deleted file mode 100644 index ca468d54c..000000000 --- a/libcxx/include/locale +++ /dev/null @@ -1,4474 +0,0 @@ -// -*- C++ -*- -//===-------------------------- locale ------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_LOCALE -#define _LIBCPP_LOCALE - -/* - locale synopsis - -namespace std -{ - -class locale -{ -public: - // types: - class facet; - class id; - - typedef int category; - static const category // values assigned here are for exposition only - none = 0x000, - collate = 0x010, - ctype = 0x020, - monetary = 0x040, - numeric = 0x080, - time = 0x100, - messages = 0x200, - all = collate | ctype | monetary | numeric | time | messages; - - // construct/copy/destroy: - locale() noexcept; - locale(const locale& other) noexcept; - explicit locale(const char* std_name); - explicit locale(const string& std_name); - locale(const locale& other, const char* std_name, category); - locale(const locale& other, const string& std_name, category); - template locale(const locale& other, Facet* f); - locale(const locale& other, const locale& one, category); - - ~locale(); // not virtual - - const locale& operator=(const locale& other) noexcept; - - template locale combine(const locale& other) const; - - // locale operations: - basic_string name() const; - bool operator==(const locale& other) const; - bool operator!=(const locale& other) const; - template - bool operator()(const basic_string& s1, - const basic_string& s2) const; - - // global locale objects: - static locale global(const locale&); - static const locale& classic(); -}; - -template const Facet& use_facet(const locale&); -template bool has_facet(const locale&) noexcept; - -// 22.3.3, convenience interfaces: -template bool isspace (charT c, const locale& loc); -template bool isprint (charT c, const locale& loc); -template bool iscntrl (charT c, const locale& loc); -template bool isupper (charT c, const locale& loc); -template bool islower (charT c, const locale& loc); -template bool isalpha (charT c, const locale& loc); -template bool isdigit (charT c, const locale& loc); -template bool ispunct (charT c, const locale& loc); -template bool isxdigit(charT c, const locale& loc); -template bool isalnum (charT c, const locale& loc); -template bool isgraph (charT c, const locale& loc); -template charT toupper(charT c, const locale& loc); -template charT tolower(charT c, const locale& loc); - -template, - class Byte_alloc = allocator> -class wstring_convert -{ -public: - typedef basic_string, Byte_alloc> byte_string; - typedef basic_string, Wide_alloc> wide_string; - typedef typename Codecvt::state_type state_type; - typedef typename wide_string::traits_type::int_type int_type; - - explicit wstring_convert(Codecvt* pcvt = new Codecvt); // explicit in C++14 - wstring_convert(Codecvt* pcvt, state_type state); - explicit wstring_convert(const byte_string& byte_err, // explicit in C++14 - const wide_string& wide_err = wide_string()); - wstring_convert(const wstring_convert&) = delete; // C++14 - wstring_convert & operator=(const wstring_convert &) = delete; // C++14 - ~wstring_convert(); - - wide_string from_bytes(char byte); - wide_string from_bytes(const char* ptr); - wide_string from_bytes(const byte_string& str); - wide_string from_bytes(const char* first, const char* last); - - byte_string to_bytes(Elem wchar); - byte_string to_bytes(const Elem* wptr); - byte_string to_bytes(const wide_string& wstr); - byte_string to_bytes(const Elem* first, const Elem* last); - - size_t converted() const; // noexcept in C++14 - state_type state() const; -}; - -template > -class wbuffer_convert - : public basic_streambuf -{ -public: - typedef typename Tr::state_type state_type; - - explicit wbuffer_convert(streambuf* bytebuf = 0, Codecvt* pcvt = new Codecvt, - state_type state = state_type()); // explicit in C++14 - wbuffer_convert(const wbuffer_convert&) = delete; // C++14 - wbuffer_convert & operator=(const wbuffer_convert &) = delete; // C++14 - ~wbuffer_convert(); // C++14 - - streambuf* rdbuf() const; - streambuf* rdbuf(streambuf* bytebuf); - - state_type state() const; -}; - -// 22.4.1 and 22.4.1.3, ctype: -class ctype_base; -template class ctype; -template <> class ctype; // specialization -template class ctype_byname; -template <> class ctype_byname; // specialization - -class codecvt_base; -template class codecvt; -template class codecvt_byname; - -// 22.4.2 and 22.4.3, numeric: -template class num_get; -template class num_put; -template class numpunct; -template class numpunct_byname; - -// 22.4.4, col lation: -template class collate; -template class collate_byname; - -// 22.4.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.4.6, money: -class money_base; -template class money_get; -template class money_put; -template class moneypunct; -template class moneypunct_byname; - -// 22.4.7, message retrieval: -class messages_base; -template class messages; -template class messages_byname; - -} // std - -*/ - -#include <__config> -#include <__locale> -#include -#include -#include -#include -#include -#include -#ifndef __APPLE__ -#include -#endif -#include -#include -#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__) -#include -#elif defined(_NEWLIB_VERSION) -// FIXME: replace all the uses of _NEWLIB_VERSION with __NEWLIB__ preceded by an -// include of once https://sourceware.org/ml/newlib-cvs/2014-q3/msg00038.html -// has had a chance to bake for a bit -#include -#endif -#ifdef _LIBCPP_HAS_CATOPEN -#include -#endif - -#ifdef __APPLE__ -#include -#endif - -#include <__undef_min_max> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -#if defined(__APPLE__) || defined(__FreeBSD__) -# define _LIBCPP_GET_C_LOCALE 0 -#elif defined(__CloudABI__) || defined(__NetBSD__) -# define _LIBCPP_GET_C_LOCALE LC_C_LOCALE -#else -# define _LIBCPP_GET_C_LOCALE __cloc() - // Get the C locale object - _LIBCPP_FUNC_VIS locale_t __cloc(); -#define __cloc_defined -#endif - -typedef _VSTD::remove_pointer::type __locale_struct; -typedef _VSTD::unique_ptr<__locale_struct, decltype(&freelocale)> __locale_unique_ptr; -#ifndef _LIBCPP_LOCALE__L_EXTENSIONS -typedef _VSTD::unique_ptr<__locale_struct, decltype(&uselocale)> __locale_raii; -#endif - -// OSX has nice foo_l() functions that let you turn off use of the global -// locale. Linux, not so much. The following functions avoid the locale when -// that's possible and otherwise do the wrong thing. FIXME. -#if defined(__linux__) || defined(__EMSCRIPTEN__) || defined(_AIX) || \ - defined(_NEWLIB_VERSION) || defined(__GLIBC__) - -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS -decltype(MB_CUR_MAX_L(_VSTD::declval())) -inline _LIBCPP_INLINE_VISIBILITY -__mb_cur_max_l(locale_t __l) -{ - return MB_CUR_MAX_L(__l); -} -#else // _LIBCPP_LOCALE__L_EXTENSIONS -inline _LIBCPP_ALWAYS_INLINE -decltype(MB_CUR_MAX) __mb_cur_max_l(locale_t __l) -{ - __locale_raii __current(uselocale(__l), uselocale); - return MB_CUR_MAX; -} -#endif // _LIBCPP_LOCALE__L_EXTENSIONS - -inline _LIBCPP_ALWAYS_INLINE -wint_t __btowc_l(int __c, locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return btowc_l(__c, __l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return btowc(__c); -#endif -} - -inline _LIBCPP_ALWAYS_INLINE -int __wctob_l(wint_t __c, locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return wctob_l(__c, __l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return wctob(__c); -#endif -} - -inline _LIBCPP_ALWAYS_INLINE -size_t __wcsnrtombs_l(char *__dest, const wchar_t **__src, size_t __nwc, - size_t __len, mbstate_t *__ps, locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return wcsnrtombs_l(__dest, __src, __nwc, __len, __ps, __l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return wcsnrtombs(__dest, __src, __nwc, __len, __ps); -#endif -} - -inline _LIBCPP_ALWAYS_INLINE -size_t __wcrtomb_l(char *__s, wchar_t __wc, mbstate_t *__ps, locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return wcrtomb_l(__s, __wc, __ps, __l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return wcrtomb(__s, __wc, __ps); -#endif -} - -inline _LIBCPP_ALWAYS_INLINE -size_t __mbsnrtowcs_l(wchar_t * __dest, const char **__src, size_t __nms, - size_t __len, mbstate_t *__ps, locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return mbsnrtowcs_l(__dest, __src, __nms, __len, __ps, __l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return mbsnrtowcs(__dest, __src, __nms, __len, __ps); -#endif -} - -inline _LIBCPP_ALWAYS_INLINE -size_t __mbrtowc_l(wchar_t *__pwc, const char *__s, size_t __n, - mbstate_t *__ps, locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return mbrtowc_l(__pwc, __s, __n, __ps, __l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return mbrtowc(__pwc, __s, __n, __ps); -#endif -} - -inline _LIBCPP_ALWAYS_INLINE -int __mbtowc_l(wchar_t *__pwc, const char *__pmb, size_t __max, locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return mbtowc_l(__pwc, __pmb, __max, __l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return mbtowc(__pwc, __pmb, __max); -#endif -} - -inline _LIBCPP_ALWAYS_INLINE -size_t __mbrlen_l(const char *__s, size_t __n, mbstate_t *__ps, locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return mbrlen_l(__s, __n, __ps, __l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return mbrlen(__s, __n, __ps); -#endif -} - -inline _LIBCPP_ALWAYS_INLINE -lconv *__localeconv_l(locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return localeconv_l(__l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return localeconv(); -#endif -} - -inline _LIBCPP_ALWAYS_INLINE -size_t __mbsrtowcs_l(wchar_t *__dest, const char **__src, size_t __len, - mbstate_t *__ps, locale_t __l) -{ -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - return mbsrtowcs_l(__dest, __src, __len, __ps, __l); -#else - __locale_raii __current(uselocale(__l), uselocale); - return mbsrtowcs(__dest, __src, __len, __ps); -#endif -} - -inline -int __snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...) { - va_list __va; - va_start(__va, __format); -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - int __res = vsnprintf_l(__s, __n, __l, __format, __va); -#else - __locale_raii __current(uselocale(__l), uselocale); - int __res = vsnprintf(__s, __n, __format, __va); -#endif - va_end(__va); - return __res; -} - -inline -int __asprintf_l(char **__s, locale_t __l, const char *__format, ...) { - va_list __va; - va_start(__va, __format); -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - int __res = vasprintf_l(__s, __l, __format, __va); -#else - __locale_raii __current(uselocale(__l), uselocale); - int __res = vasprintf(__s, __format, __va); -#endif - va_end(__va); - return __res; -} - -inline -int __sscanf_l(const char *__s, locale_t __l, const char *__format, ...) { - va_list __va; - va_start(__va, __format); -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - int __res = vsscanf_l(__s, __l, __format, __va); -#else - __locale_raii __current(uselocale(__l), uselocale); - int __res = vsscanf(__s, __format, __va); -#endif - va_end(__va); - return __res; -} - -#endif // __linux__ - -// __scan_keyword -// Scans [__b, __e) until a match is found in the basic_strings range -// [__kb, __ke) or until it can be shown that there is no match in [__kb, __ke). -// __b will be incremented (visibly), consuming CharT until a match is found -// or proved to not exist. A keyword may be "", in which will match anything. -// If one keyword is a prefix of another, and the next CharT in the input -// might match another keyword, the algorithm will attempt to find the longest -// matching keyword. If the longer matching keyword ends up not matching, then -// no keyword match is found. If no keyword match is found, __ke is returned -// and failbit is set in __err. -// Else an iterator pointing to the matching keyword is found. If more than -// one keyword matches, an iterator to the first matching keyword is returned. -// If on exit __b == __e, eofbit is set in __err. If __case_sensitive is false, -// __ct is used to force to lower case before comparing characters. -// Examples: -// Keywords: "a", "abb" -// If the input is "a", the first keyword matches and eofbit is set. -// If the input is "abc", no match is found and "ab" are consumed. -template -_LIBCPP_HIDDEN -_ForwardIterator -__scan_keyword(_InputIterator& __b, _InputIterator __e, - _ForwardIterator __kb, _ForwardIterator __ke, - const _Ctype& __ct, ios_base::iostate& __err, - bool __case_sensitive = true) -{ - typedef typename iterator_traits<_InputIterator>::value_type _CharT; - size_t __nkw = static_cast(_VSTD::distance(__kb, __ke)); - const unsigned char __doesnt_match = '\0'; - const unsigned char __might_match = '\1'; - const unsigned char __does_match = '\2'; - unsigned char __statbuf[100]; - unsigned char* __status = __statbuf; - unique_ptr __stat_hold(0, free); - if (__nkw > sizeof(__statbuf)) - { - __status = (unsigned char*)malloc(__nkw); - if (__status == 0) - __throw_bad_alloc(); - __stat_hold.reset(__status); - } - size_t __n_might_match = __nkw; // At this point, any keyword might match - size_t __n_does_match = 0; // but none of them definitely do - // Initialize all statuses to __might_match, except for "" keywords are __does_match - unsigned char* __st = __status; - for (_ForwardIterator __ky = __kb; __ky != __ke; ++__ky, (void) ++__st) - { - if (!__ky->empty()) - *__st = __might_match; - else - { - *__st = __does_match; - --__n_might_match; - ++__n_does_match; - } - } - // While there might be a match, test keywords against the next CharT - for (size_t __indx = 0; __b != __e && __n_might_match > 0; ++__indx) - { - // Peek at the next CharT but don't consume it - _CharT __c = *__b; - if (!__case_sensitive) - __c = __ct.toupper(__c); - bool __consume = false; - // For each keyword which might match, see if the __indx character is __c - // If a match if found, consume __c - // If a match is found, and that is the last character in the keyword, - // then that keyword matches. - // If the keyword doesn't match this character, then change the keyword - // to doesn't match - __st = __status; - for (_ForwardIterator __ky = __kb; __ky != __ke; ++__ky, (void) ++__st) - { - if (*__st == __might_match) - { - _CharT __kc = (*__ky)[__indx]; - if (!__case_sensitive) - __kc = __ct.toupper(__kc); - if (__c == __kc) - { - __consume = true; - if (__ky->size() == __indx+1) - { - *__st = __does_match; - --__n_might_match; - ++__n_does_match; - } - } - else - { - *__st = __doesnt_match; - --__n_might_match; - } - } - } - // consume if we matched a character - if (__consume) - { - ++__b; - // If we consumed a character and there might be a matched keyword that - // was marked matched on a previous iteration, then such keywords - // which are now marked as not matching. - if (__n_might_match + __n_does_match > 1) - { - __st = __status; - for (_ForwardIterator __ky = __kb; __ky != __ke; ++__ky, (void) ++__st) - { - if (*__st == __does_match && __ky->size() != __indx+1) - { - *__st = __doesnt_match; - --__n_does_match; - } - } - } - } - } - // We've exited the loop because we hit eof and/or we have no more "might matches". - if (__b == __e) - __err |= ios_base::eofbit; - // Return the first matching result - for (__st = __status; __kb != __ke; ++__kb, (void) ++__st) - if (*__st == __does_match) - break; - if (__kb == __ke) - __err |= ios_base::failbit; - return __kb; -} - -struct _LIBCPP_TYPE_VIS __num_get_base -{ - static const int __num_get_buf_sz = 40; - - static int __get_base(ios_base&); - static const char __src[33]; -}; - -_LIBCPP_FUNC_VIS -void __check_grouping(const string& __grouping, unsigned* __g, unsigned* __g_end, - ios_base::iostate& __err); - -template -struct __num_get - : protected __num_get_base -{ - static string __stage2_int_prep(ios_base& __iob, _CharT* __atoms, _CharT& __thousands_sep); - static string __stage2_float_prep(ios_base& __iob, _CharT* __atoms, _CharT& __decimal_point, - _CharT& __thousands_sep); - static int __stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end, - unsigned& __dc, _CharT __thousands_sep, const string& __grouping, - unsigned* __g, unsigned*& __g_end, _CharT* __atoms); - static int __stage2_float_loop(_CharT __ct, bool& __in_units, char& __exp, - char* __a, char*& __a_end, - _CharT __decimal_point, _CharT __thousands_sep, - const string& __grouping, unsigned* __g, - unsigned*& __g_end, unsigned& __dc, _CharT* __atoms); -}; - -template -string -__num_get<_CharT>::__stage2_int_prep(ios_base& __iob, _CharT* __atoms, _CharT& __thousands_sep) -{ - locale __loc = __iob.getloc(); - use_facet >(__loc).widen(__src, __src + 26, __atoms); - const numpunct<_CharT>& __np = use_facet >(__loc); - __thousands_sep = __np.thousands_sep(); - return __np.grouping(); -} - -template -string -__num_get<_CharT>::__stage2_float_prep(ios_base& __iob, _CharT* __atoms, _CharT& __decimal_point, - _CharT& __thousands_sep) -{ - locale __loc = __iob.getloc(); - use_facet >(__loc).widen(__src, __src + 32, __atoms); - const numpunct<_CharT>& __np = use_facet >(__loc); - __decimal_point = __np.decimal_point(); - __thousands_sep = __np.thousands_sep(); - return __np.grouping(); -} - -template -int -__num_get<_CharT>::__stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end, - unsigned& __dc, _CharT __thousands_sep, const string& __grouping, - unsigned* __g, unsigned*& __g_end, _CharT* __atoms) -{ - if (__a_end == __a && (__ct == __atoms[24] || __ct == __atoms[25])) - { - *__a_end++ = __ct == __atoms[24] ? '+' : '-'; - __dc = 0; - return 0; - } - if (__grouping.size() != 0 && __ct == __thousands_sep) - { - if (__g_end-__g < __num_get_buf_sz) - { - *__g_end++ = __dc; - __dc = 0; - } - return 0; - } - ptrdiff_t __f = find(__atoms, __atoms + 26, __ct) - __atoms; - if (__f >= 24) - return -1; - switch (__base) - { - case 8: - case 10: - if (__f >= __base) - return -1; - break; - case 16: - if (__f < 22) - break; - if (__a_end != __a && __a_end - __a <= 2 && __a_end[-1] == '0') - { - __dc = 0; - *__a_end++ = __src[__f]; - return 0; - } - return -1; - } - *__a_end++ = __src[__f]; - ++__dc; - return 0; -} - -template -int -__num_get<_CharT>::__stage2_float_loop(_CharT __ct, bool& __in_units, char& __exp, char* __a, char*& __a_end, - _CharT __decimal_point, _CharT __thousands_sep, const string& __grouping, - unsigned* __g, unsigned*& __g_end, unsigned& __dc, _CharT* __atoms) -{ - if (__ct == __decimal_point) - { - if (!__in_units) - return -1; - __in_units = false; - *__a_end++ = '.'; - if (__grouping.size() != 0 && __g_end-__g < __num_get_buf_sz) - *__g_end++ = __dc; - return 0; - } - if (__ct == __thousands_sep && __grouping.size() != 0) - { - if (!__in_units) - return -1; - if (__g_end-__g < __num_get_buf_sz) - { - *__g_end++ = __dc; - __dc = 0; - } - return 0; - } - ptrdiff_t __f = find(__atoms, __atoms + 32, __ct) - __atoms; - if (__f >= 32) - return -1; - char __x = __src[__f]; - if (__x == '-' || __x == '+') - { - if (__a_end == __a || (__a_end[-1] & 0x5F) == (__exp & 0x7F)) - { - *__a_end++ = __x; - return 0; - } - return -1; - } - if (__x == 'x' || __x == 'X') - __exp = 'P'; - else if ((__x & 0x5F) == __exp) - { - __exp |= 0x80; - if (__in_units) - { - __in_units = false; - if (__grouping.size() != 0 && __g_end-__g < __num_get_buf_sz) - *__g_end++ = __dc; - } - } - *__a_end++ = __x; - if (__f >= 22) - return 0; - ++__dc; - return 0; -} - -_LIBCPP_EXTERN_TEMPLATE2(struct _LIBCPP_TYPE_VIS __num_get) -_LIBCPP_EXTERN_TEMPLATE2(struct _LIBCPP_TYPE_VIS __num_get) - -template > -class _LIBCPP_TYPE_VIS_ONLY num_get - : public locale::facet, - private __num_get<_CharT> -{ -public: - typedef _CharT char_type; - typedef _InputIterator iter_type; - - _LIBCPP_ALWAYS_INLINE - explicit num_get(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, bool& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, long& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, long long& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, unsigned short& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, unsigned int& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, unsigned long& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, unsigned long long& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, float& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, double& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, long double& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, void*& __v) const - { - return do_get(__b, __e, __iob, __err, __v); - } - - static locale::id id; - -protected: - _LIBCPP_ALWAYS_INLINE - ~num_get() {} - - template - iter_type __do_get_floating_point - (iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, _Fp& __v) const; - - template - iter_type __do_get_signed - (iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, _Signed& __v) const; - - template - iter_type __do_get_unsigned - (iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, _Unsigned& __v) const; - - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, bool& __v) const; - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, long& __v) const - { return this->__do_get_signed ( __b, __e, __iob, __err, __v ); } - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, long long& __v) const - { return this->__do_get_signed ( __b, __e, __iob, __err, __v ); } - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, unsigned short& __v) const - { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); } - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, unsigned int& __v) const - { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); } - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, unsigned long& __v) const - { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); } - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, unsigned long long& __v) const - { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); } - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, float& __v) const - { return this->__do_get_floating_point ( __b, __e, __iob, __err, __v ); } - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, double& __v) const - { return this->__do_get_floating_point ( __b, __e, __iob, __err, __v ); } - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, long double& __v) const - { return this->__do_get_floating_point ( __b, __e, __iob, __err, __v ); } - - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, void*& __v) const; -}; - -template -locale::id -num_get<_CharT, _InputIterator>::id; - -template -_Tp -__num_get_signed_integral(const char* __a, const char* __a_end, - ios_base::iostate& __err, int __base) -{ - if (__a != __a_end) - { - typename remove_reference::type __save_errno = errno; - errno = 0; - char *__p2; - long long __ll = strtoll_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE); - typename remove_reference::type __current_errno = errno; - if (__current_errno == 0) - errno = __save_errno; - if (__p2 != __a_end) - { - __err = ios_base::failbit; - return 0; - } - else if (__current_errno == ERANGE || - __ll < numeric_limits<_Tp>::min() || - numeric_limits<_Tp>::max() < __ll) - { - __err = ios_base::failbit; - if (__ll > 0) - return numeric_limits<_Tp>::max(); - else - return numeric_limits<_Tp>::min(); - } - return static_cast<_Tp>(__ll); - } - __err = ios_base::failbit; - return 0; -} - -template -_Tp -__num_get_unsigned_integral(const char* __a, const char* __a_end, - ios_base::iostate& __err, int __base) -{ - if (__a != __a_end) - { - if (*__a == '-') - { - __err = ios_base::failbit; - return 0; - } - typename remove_reference::type __save_errno = errno; - errno = 0; - char *__p2; - unsigned long long __ll = strtoull_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE); - typename remove_reference::type __current_errno = errno; - if (__current_errno == 0) - errno = __save_errno; - if (__p2 != __a_end) - { - __err = ios_base::failbit; - return 0; - } - else if (__current_errno == ERANGE || - numeric_limits<_Tp>::max() < __ll) - { - __err = ios_base::failbit; - return numeric_limits<_Tp>::max(); - } - return static_cast<_Tp>(__ll); - } - __err = ios_base::failbit; - return 0; -} - -template -_Tp -__num_get_float(const char* __a, const char* __a_end, ios_base::iostate& __err) -{ - if (__a != __a_end) - { - typename remove_reference::type __save_errno = errno; - errno = 0; - char *__p2; - long double __ld = strtold_l(__a, &__p2, _LIBCPP_GET_C_LOCALE); - typename remove_reference::type __current_errno = errno; - if (__current_errno == 0) - errno = __save_errno; - if (__p2 != __a_end) - { - __err = ios_base::failbit; - return 0; - } - else if (__current_errno == ERANGE) - __err = ios_base::failbit; - return static_cast<_Tp>(__ld); - } - __err = ios_base::failbit; - return 0; -} - -template -_InputIterator -num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - bool& __v) const -{ - if ((__iob.flags() & ios_base::boolalpha) == 0) - { - long __lv = -1; - __b = do_get(__b, __e, __iob, __err, __lv); - switch (__lv) - { - case 0: - __v = false; - break; - case 1: - __v = true; - break; - default: - __v = true; - __err = ios_base::failbit; - break; - } - return __b; - } - const ctype<_CharT>& __ct = use_facet >(__iob.getloc()); - const numpunct<_CharT>& __np = use_facet >(__iob.getloc()); - typedef typename numpunct<_CharT>::string_type string_type; - const string_type __names[2] = {__np.truename(), __np.falsename()}; - const string_type* __i = __scan_keyword(__b, __e, __names, __names+2, - __ct, __err); - __v = __i == __names; - return __b; -} - -// signed - -template -template -_InputIterator -num_get<_CharT, _InputIterator>::__do_get_signed(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - _Signed& __v) const -{ - // Stage 1 - int __base = this->__get_base(__iob); - // Stage 2 - char_type __atoms[26]; - char_type __thousands_sep; - string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep); - string __buf; - __buf.resize(__buf.capacity()); - char* __a = &__buf[0]; - char* __a_end = __a; - unsigned __g[__num_get_base::__num_get_buf_sz]; - unsigned* __g_end = __g; - unsigned __dc = 0; - for (; __b != __e; ++__b) - { - if (__a_end == __a + __buf.size()) - { - size_t __tmp = __buf.size(); - __buf.resize(2*__buf.size()); - __buf.resize(__buf.capacity()); - __a = &__buf[0]; - __a_end = __a + __tmp; - } - if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc, - __thousands_sep, __grouping, __g, __g_end, - __atoms)) - break; - } - if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz) - *__g_end++ = __dc; - // Stage 3 - __v = __num_get_signed_integral<_Signed>(__a, __a_end, __err, __base); - // Digit grouping checked - __check_grouping(__grouping, __g, __g_end, __err); - // EOF checked - if (__b == __e) - __err |= ios_base::eofbit; - return __b; -} - -// unsigned - -template -template -_InputIterator -num_get<_CharT, _InputIterator>::__do_get_unsigned(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - _Unsigned& __v) const -{ - // Stage 1 - int __base = this->__get_base(__iob); - // Stage 2 - char_type __atoms[26]; - char_type __thousands_sep; - string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep); - string __buf; - __buf.resize(__buf.capacity()); - char* __a = &__buf[0]; - char* __a_end = __a; - unsigned __g[__num_get_base::__num_get_buf_sz]; - unsigned* __g_end = __g; - unsigned __dc = 0; - for (; __b != __e; ++__b) - { - if (__a_end == __a + __buf.size()) - { - size_t __tmp = __buf.size(); - __buf.resize(2*__buf.size()); - __buf.resize(__buf.capacity()); - __a = &__buf[0]; - __a_end = __a + __tmp; - } - if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc, - __thousands_sep, __grouping, __g, __g_end, - __atoms)) - break; - } - if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz) - *__g_end++ = __dc; - // Stage 3 - __v = __num_get_unsigned_integral<_Unsigned>(__a, __a_end, __err, __base); - // Digit grouping checked - __check_grouping(__grouping, __g, __g_end, __err); - // EOF checked - if (__b == __e) - __err |= ios_base::eofbit; - return __b; -} - -// floating point - -template -template -_InputIterator -num_get<_CharT, _InputIterator>::__do_get_floating_point(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - _Fp& __v) const -{ - // Stage 1, nothing to do - // Stage 2 - char_type __atoms[32]; - char_type __decimal_point; - char_type __thousands_sep; - string __grouping = this->__stage2_float_prep(__iob, __atoms, - __decimal_point, - __thousands_sep); - string __buf; - __buf.resize(__buf.capacity()); - char* __a = &__buf[0]; - char* __a_end = __a; - unsigned __g[__num_get_base::__num_get_buf_sz]; - unsigned* __g_end = __g; - unsigned __dc = 0; - bool __in_units = true; - char __exp = 'E'; - for (; __b != __e; ++__b) - { - if (__a_end == __a + __buf.size()) - { - size_t __tmp = __buf.size(); - __buf.resize(2*__buf.size()); - __buf.resize(__buf.capacity()); - __a = &__buf[0]; - __a_end = __a + __tmp; - } - if (this->__stage2_float_loop(*__b, __in_units, __exp, __a, __a_end, - __decimal_point, __thousands_sep, - __grouping, __g, __g_end, - __dc, __atoms)) - break; - } - if (__grouping.size() != 0 && __in_units && __g_end-__g < __num_get_base::__num_get_buf_sz) - *__g_end++ = __dc; - // Stage 3 - __v = __num_get_float<_Fp>(__a, __a_end, __err); - // Digit grouping checked - __check_grouping(__grouping, __g, __g_end, __err); - // EOF checked - if (__b == __e) - __err |= ios_base::eofbit; - return __b; -} - -template -_InputIterator -num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - void*& __v) const -{ - // Stage 1 - int __base = 16; - // Stage 2 - char_type __atoms[26]; - char_type __thousands_sep = 0; - string __grouping; - use_facet >(__iob.getloc()).widen(__num_get_base::__src, - __num_get_base::__src + 26, __atoms); - string __buf; - __buf.resize(__buf.capacity()); - char* __a = &__buf[0]; - char* __a_end = __a; - unsigned __g[__num_get_base::__num_get_buf_sz]; - unsigned* __g_end = __g; - unsigned __dc = 0; - for (; __b != __e; ++__b) - { - if (__a_end == __a + __buf.size()) - { - size_t __tmp = __buf.size(); - __buf.resize(2*__buf.size()); - __buf.resize(__buf.capacity()); - __a = &__buf[0]; - __a_end = __a + __tmp; - } - if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc, - __thousands_sep, __grouping, - __g, __g_end, __atoms)) - break; - } - // Stage 3 - __buf.resize(__a_end - __a); -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - if (sscanf_l(__buf.c_str(), _LIBCPP_GET_C_LOCALE, "%p", &__v) != 1) -#else - if (__sscanf_l(__buf.c_str(), __cloc(), "%p", &__v) != 1) -#endif - __err = ios_base::failbit; - // EOF checked - if (__b == __e) - __err |= ios_base::eofbit; - return __b; -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS num_get) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS num_get) - -struct _LIBCPP_TYPE_VIS __num_put_base -{ -protected: - static void __format_int(char* __fmt, const char* __len, bool __signd, - ios_base::fmtflags __flags); - static bool __format_float(char* __fmt, const char* __len, - ios_base::fmtflags __flags); - static char* __identify_padding(char* __nb, char* __ne, - const ios_base& __iob); -}; - -template -struct __num_put - : protected __num_put_base -{ - static void __widen_and_group_int(char* __nb, char* __np, char* __ne, - _CharT* __ob, _CharT*& __op, _CharT*& __oe, - const locale& __loc); - static void __widen_and_group_float(char* __nb, char* __np, char* __ne, - _CharT* __ob, _CharT*& __op, _CharT*& __oe, - const locale& __loc); -}; - -template -void -__num_put<_CharT>::__widen_and_group_int(char* __nb, char* __np, char* __ne, - _CharT* __ob, _CharT*& __op, _CharT*& __oe, - const locale& __loc) -{ - const ctype<_CharT>& __ct = use_facet > (__loc); - const numpunct<_CharT>& __npt = use_facet >(__loc); - string __grouping = __npt.grouping(); - if (__grouping.empty()) - { - __ct.widen(__nb, __ne, __ob); - __oe = __ob + (__ne - __nb); - } - else - { - __oe = __ob; - char* __nf = __nb; - if (*__nf == '-' || *__nf == '+') - *__oe++ = __ct.widen(*__nf++); - if (__ne - __nf >= 2 && __nf[0] == '0' && (__nf[1] == 'x' || - __nf[1] == 'X')) - { - *__oe++ = __ct.widen(*__nf++); - *__oe++ = __ct.widen(*__nf++); - } - reverse(__nf, __ne); - _CharT __thousands_sep = __npt.thousands_sep(); - unsigned __dc = 0; - unsigned __dg = 0; - for (char* __p = __nf; __p < __ne; ++__p) - { - if (static_cast(__grouping[__dg]) > 0 && - __dc == static_cast(__grouping[__dg])) - { - *__oe++ = __thousands_sep; - __dc = 0; - if (__dg < __grouping.size()-1) - ++__dg; - } - *__oe++ = __ct.widen(*__p); - ++__dc; - } - reverse(__ob + (__nf - __nb), __oe); - } - if (__np == __ne) - __op = __oe; - else - __op = __ob + (__np - __nb); -} - -template -void -__num_put<_CharT>::__widen_and_group_float(char* __nb, char* __np, char* __ne, - _CharT* __ob, _CharT*& __op, _CharT*& __oe, - const locale& __loc) -{ - const ctype<_CharT>& __ct = use_facet > (__loc); - const numpunct<_CharT>& __npt = use_facet >(__loc); - string __grouping = __npt.grouping(); - __oe = __ob; - char* __nf = __nb; - if (*__nf == '-' || *__nf == '+') - *__oe++ = __ct.widen(*__nf++); - char* __ns; - if (__ne - __nf >= 2 && __nf[0] == '0' && (__nf[1] == 'x' || - __nf[1] == 'X')) - { - *__oe++ = __ct.widen(*__nf++); - *__oe++ = __ct.widen(*__nf++); - for (__ns = __nf; __ns < __ne; ++__ns) - if (!isxdigit_l(*__ns, _LIBCPP_GET_C_LOCALE)) - break; - } - else - { - for (__ns = __nf; __ns < __ne; ++__ns) - if (!isdigit_l(*__ns, _LIBCPP_GET_C_LOCALE)) - break; - } - if (__grouping.empty()) - { - __ct.widen(__nf, __ns, __oe); - __oe += __ns - __nf; - } - else - { - reverse(__nf, __ns); - _CharT __thousands_sep = __npt.thousands_sep(); - unsigned __dc = 0; - unsigned __dg = 0; - for (char* __p = __nf; __p < __ns; ++__p) - { - if (__grouping[__dg] > 0 && __dc == static_cast(__grouping[__dg])) - { - *__oe++ = __thousands_sep; - __dc = 0; - if (__dg < __grouping.size()-1) - ++__dg; - } - *__oe++ = __ct.widen(*__p); - ++__dc; - } - reverse(__ob + (__nf - __nb), __oe); - } - for (__nf = __ns; __nf < __ne; ++__nf) - { - if (*__nf == '.') - { - *__oe++ = __npt.decimal_point(); - ++__nf; - break; - } - else - *__oe++ = __ct.widen(*__nf); - } - __ct.widen(__nf, __ne, __oe); - __oe += __ne - __nf; - if (__np == __ne) - __op = __oe; - else - __op = __ob + (__np - __nb); -} - -_LIBCPP_EXTERN_TEMPLATE2(struct _LIBCPP_TYPE_VIS __num_put) -_LIBCPP_EXTERN_TEMPLATE2(struct _LIBCPP_TYPE_VIS __num_put) - -template > -class _LIBCPP_TYPE_VIS_ONLY num_put - : public locale::facet, - private __num_put<_CharT> -{ -public: - typedef _CharT char_type; - typedef _OutputIterator iter_type; - - _LIBCPP_ALWAYS_INLINE - explicit num_put(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, - bool __v) const - { - return do_put(__s, __iob, __fl, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, - long __v) const - { - return do_put(__s, __iob, __fl, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, - long long __v) const - { - return do_put(__s, __iob, __fl, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, - unsigned long __v) const - { - return do_put(__s, __iob, __fl, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, - unsigned long long __v) const - { - return do_put(__s, __iob, __fl, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, - double __v) const - { - return do_put(__s, __iob, __fl, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, - long double __v) const - { - return do_put(__s, __iob, __fl, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, - const void* __v) const - { - return do_put(__s, __iob, __fl, __v); - } - - static locale::id id; - -protected: - _LIBCPP_ALWAYS_INLINE - ~num_put() {} - - virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl, - bool __v) const; - virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl, - long __v) const; - virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl, - long long __v) const; - virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl, - unsigned long) const; - virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl, - unsigned long long) const; - virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl, - double __v) const; - virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl, - long double __v) const; - virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl, - const void* __v) const; -}; - -template -locale::id -num_put<_CharT, _OutputIterator>::id; - -template -_LIBCPP_HIDDEN -_OutputIterator -__pad_and_output(_OutputIterator __s, - const _CharT* __ob, const _CharT* __op, const _CharT* __oe, - ios_base& __iob, _CharT __fl) -{ - streamsize __sz = __oe - __ob; - streamsize __ns = __iob.width(); - if (__ns > __sz) - __ns -= __sz; - else - __ns = 0; - for (;__ob < __op; ++__ob, ++__s) - *__s = *__ob; - for (; __ns; --__ns, ++__s) - *__s = __fl; - for (; __ob < __oe; ++__ob, ++__s) - *__s = *__ob; - __iob.width(0); - return __s; -} - -#if !defined(__APPLE__) || \ - (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_8) || \ - (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0) - -template -_LIBCPP_HIDDEN -ostreambuf_iterator<_CharT, _Traits> -__pad_and_output(ostreambuf_iterator<_CharT, _Traits> __s, - const _CharT* __ob, const _CharT* __op, const _CharT* __oe, - ios_base& __iob, _CharT __fl) -{ - if (__s.__sbuf_ == nullptr) - return __s; - streamsize __sz = __oe - __ob; - streamsize __ns = __iob.width(); - if (__ns > __sz) - __ns -= __sz; - else - __ns = 0; - streamsize __np = __op - __ob; - if (__np > 0) - { - if (__s.__sbuf_->sputn(__ob, __np) != __np) - { - __s.__sbuf_ = nullptr; - return __s; - } - } - if (__ns > 0) - { - basic_string<_CharT, _Traits> __sp(__ns, __fl); - if (__s.__sbuf_->sputn(__sp.data(), __ns) != __ns) - { - __s.__sbuf_ = nullptr; - return __s; - } - } - __np = __oe - __op; - if (__np > 0) - { - if (__s.__sbuf_->sputn(__op, __np) != __np) - { - __s.__sbuf_ = nullptr; - return __s; - } - } - __iob.width(0); - return __s; -} - -#endif - -template -_OutputIterator -num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, - char_type __fl, bool __v) const -{ - if ((__iob.flags() & ios_base::boolalpha) == 0) - return do_put(__s, __iob, __fl, (unsigned long)__v); - const numpunct& __np = use_facet >(__iob.getloc()); - typedef typename numpunct::string_type string_type; -#if _LIBCPP_DEBUG_LEVEL >= 2 - string_type __tmp(__v ? __np.truename() : __np.falsename()); - string_type __nm = _VSTD::move(__tmp); -#else - string_type __nm = __v ? __np.truename() : __np.falsename(); -#endif - for (typename string_type::iterator __i = __nm.begin(); __i != __nm.end(); ++__i, ++__s) - *__s = *__i; - return __s; -} - -template -_OutputIterator -num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, - char_type __fl, long __v) const -{ - // Stage 1 - Get number in narrow char - char __fmt[6] = {'%', 0}; - const char* __len = "l"; - this->__format_int(__fmt+1, __len, true, __iob.flags()); - const unsigned __nbuf = (numeric_limits::digits / 3) - + ((numeric_limits::digits % 3) != 0) - + 1; - char __nar[__nbuf]; -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v); -#else - int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v); -#endif - char* __ne = __nar + __nc; - char* __np = this->__identify_padding(__nar, __ne, __iob); - // Stage 2 - Widen __nar while adding thousands separators - char_type __o[2*(__nbuf-1) - 1]; - char_type* __op; // pad here - char_type* __oe; // end of output - this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc()); - // [__o, __oe) contains thousands_sep'd wide number - // Stage 3 & 4 - return __pad_and_output(__s, __o, __op, __oe, __iob, __fl); -} - -template -_OutputIterator -num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, - char_type __fl, long long __v) const -{ - // Stage 1 - Get number in narrow char - char __fmt[8] = {'%', 0}; - const char* __len = "ll"; - this->__format_int(__fmt+1, __len, true, __iob.flags()); - const unsigned __nbuf = (numeric_limits::digits / 3) - + ((numeric_limits::digits % 3) != 0) - + 2; - char __nar[__nbuf]; -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v); -#else - int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v); -#endif - char* __ne = __nar + __nc; - char* __np = this->__identify_padding(__nar, __ne, __iob); - // Stage 2 - Widen __nar while adding thousands separators - char_type __o[2*(__nbuf-1) - 1]; - char_type* __op; // pad here - char_type* __oe; // end of output - this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc()); - // [__o, __oe) contains thousands_sep'd wide number - // Stage 3 & 4 - return __pad_and_output(__s, __o, __op, __oe, __iob, __fl); -} - -template -_OutputIterator -num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, - char_type __fl, unsigned long __v) const -{ - // Stage 1 - Get number in narrow char - char __fmt[6] = {'%', 0}; - const char* __len = "l"; - this->__format_int(__fmt+1, __len, false, __iob.flags()); - const unsigned __nbuf = (numeric_limits::digits / 3) - + ((numeric_limits::digits % 3) != 0) - + 1; - char __nar[__nbuf]; -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v); -#else - int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v); -#endif - char* __ne = __nar + __nc; - char* __np = this->__identify_padding(__nar, __ne, __iob); - // Stage 2 - Widen __nar while adding thousands separators - char_type __o[2*(__nbuf-1) - 1]; - char_type* __op; // pad here - char_type* __oe; // end of output - this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc()); - // [__o, __oe) contains thousands_sep'd wide number - // Stage 3 & 4 - return __pad_and_output(__s, __o, __op, __oe, __iob, __fl); -} - -template -_OutputIterator -num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, - char_type __fl, unsigned long long __v) const -{ - // Stage 1 - Get number in narrow char - char __fmt[8] = {'%', 0}; - const char* __len = "ll"; - this->__format_int(__fmt+1, __len, false, __iob.flags()); - const unsigned __nbuf = (numeric_limits::digits / 3) - + ((numeric_limits::digits % 3) != 0) - + 1; - char __nar[__nbuf]; -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v); -#else - int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v); -#endif - char* __ne = __nar + __nc; - char* __np = this->__identify_padding(__nar, __ne, __iob); - // Stage 2 - Widen __nar while adding thousands separators - char_type __o[2*(__nbuf-1) - 1]; - char_type* __op; // pad here - char_type* __oe; // end of output - this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc()); - // [__o, __oe) contains thousands_sep'd wide number - // Stage 3 & 4 - return __pad_and_output(__s, __o, __op, __oe, __iob, __fl); -} - -template -_OutputIterator -num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, - char_type __fl, double __v) const -{ - // Stage 1 - Get number in narrow char - char __fmt[8] = {'%', 0}; - const char* __len = ""; - bool __specify_precision = this->__format_float(__fmt+1, __len, __iob.flags()); - const unsigned __nbuf = 30; - char __nar[__nbuf]; - char* __nb = __nar; - int __nc; - if (__specify_precision) -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - __nc = snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt, - (int)__iob.precision(), __v); -#else - __nc = __snprintf_l(__nb, __nbuf, __cloc(), __fmt, - (int)__iob.precision(), __v); -#endif - else -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - __nc = snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt, __v); -#else - __nc = __snprintf_l(__nb, __nbuf, __cloc(), __fmt, __v); -#endif - unique_ptr __nbh(0, free); - if (__nc > static_cast(__nbuf-1)) - { - if (__specify_precision) -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - __nc = asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, (int)__iob.precision(), __v); -#else - __nc = __asprintf_l(&__nb, __cloc(), __fmt, - (int)__iob.precision(), __v); -#endif - else -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - __nc = asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, __v); -#else - __nc = __asprintf_l(&__nb, __cloc(), __fmt, (int)__iob.precision(), __v); -#endif - if (__nb == 0) - __throw_bad_alloc(); - __nbh.reset(__nb); - } - char* __ne = __nb + __nc; - char* __np = this->__identify_padding(__nb, __ne, __iob); - // Stage 2 - Widen __nar while adding thousands separators - char_type __o[2*(__nbuf-1) - 1]; - char_type* __ob = __o; - unique_ptr __obh(0, free); - if (__nb != __nar) - { - __ob = (char_type*)malloc(2*static_cast(__nc)*sizeof(char_type)); - if (__ob == 0) - __throw_bad_alloc(); - __obh.reset(__ob); - } - char_type* __op; // pad here - char_type* __oe; // end of output - this->__widen_and_group_float(__nb, __np, __ne, __ob, __op, __oe, __iob.getloc()); - // [__o, __oe) contains thousands_sep'd wide number - // Stage 3 & 4 - __s = __pad_and_output(__s, __ob, __op, __oe, __iob, __fl); - return __s; -} - -template -_OutputIterator -num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, - char_type __fl, long double __v) const -{ - // Stage 1 - Get number in narrow char - char __fmt[8] = {'%', 0}; - const char* __len = "L"; - bool __specify_precision = this->__format_float(__fmt+1, __len, __iob.flags()); - const unsigned __nbuf = 30; - char __nar[__nbuf]; - char* __nb = __nar; - int __nc; - if (__specify_precision) -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - __nc = snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt, - (int)__iob.precision(), __v); -#else - __nc = __snprintf_l(__nb, __nbuf, __cloc(), __fmt, - (int)__iob.precision(), __v); -#endif - else -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - __nc = snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt, __v); -#else - __nc = __snprintf_l(__nb, __nbuf, __cloc(), __fmt, __v); -#endif - unique_ptr __nbh(0, free); - if (__nc > static_cast(__nbuf-1)) - { - if (__specify_precision) -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - __nc = asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, (int)__iob.precision(), __v); -#else - __nc = __asprintf_l(&__nb, __cloc(), __fmt, - (int)__iob.precision(), __v); -#endif - else -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - __nc = asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, __v); -#else - __nc = __asprintf_l(&__nb, __cloc(), __fmt, __v); -#endif - if (__nb == 0) - __throw_bad_alloc(); - __nbh.reset(__nb); - } - char* __ne = __nb + __nc; - char* __np = this->__identify_padding(__nb, __ne, __iob); - // Stage 2 - Widen __nar while adding thousands separators - char_type __o[2*(__nbuf-1) - 1]; - char_type* __ob = __o; - unique_ptr __obh(0, free); - if (__nb != __nar) - { - __ob = (char_type*)malloc(2*static_cast(__nc)*sizeof(char_type)); - if (__ob == 0) - __throw_bad_alloc(); - __obh.reset(__ob); - } - char_type* __op; // pad here - char_type* __oe; // end of output - this->__widen_and_group_float(__nb, __np, __ne, __ob, __op, __oe, __iob.getloc()); - // [__o, __oe) contains thousands_sep'd wide number - // Stage 3 & 4 - __s = __pad_and_output(__s, __ob, __op, __oe, __iob, __fl); - return __s; -} - -template -_OutputIterator -num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob, - char_type __fl, const void* __v) const -{ - // Stage 1 - Get pointer in narrow char - char __fmt[6] = "%p"; - const unsigned __nbuf = 20; - char __nar[__nbuf]; -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v); -#else - int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v); -#endif - char* __ne = __nar + __nc; - char* __np = this->__identify_padding(__nar, __ne, __iob); - // Stage 2 - Widen __nar - char_type __o[2*(__nbuf-1) - 1]; - char_type* __op; // pad here - char_type* __oe; // end of output - const ctype& __ct = use_facet >(__iob.getloc()); - __ct.widen(__nar, __ne, __o); - __oe = __o + (__ne - __nar); - if (__np == __ne) - __op = __oe; - else - __op = __o + (__np - __nar); - // [__o, __oe) contains wide number - // Stage 3 & 4 - return __pad_and_output(__s, __o, __op, __oe, __iob, __fl); -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS num_put) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS num_put) - -template -_LIBCPP_HIDDEN -int -__get_up_to_n_digits(_InputIterator& __b, _InputIterator __e, - ios_base::iostate& __err, const ctype<_CharT>& __ct, int __n) -{ - // Precondition: __n >= 1 - if (__b == __e) - { - __err |= ios_base::eofbit | ios_base::failbit; - return 0; - } - // get first digit - _CharT __c = *__b; - if (!__ct.is(ctype_base::digit, __c)) - { - __err |= ios_base::failbit; - return 0; - } - int __r = __ct.narrow(__c, 0) - '0'; - for (++__b, (void) --__n; __b != __e && __n > 0; ++__b, (void) --__n) - { - // get next digit - __c = *__b; - if (!__ct.is(ctype_base::digit, __c)) - return __r; - __r = __r * 10 + __ct.narrow(__c, 0) - '0'; - } - if (__b == __e) - __err |= ios_base::eofbit; - return __r; -} - -class _LIBCPP_TYPE_VIS time_base -{ -public: - enum dateorder {no_order, dmy, mdy, ymd, ydm}; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __time_get_c_storage -{ -protected: - typedef basic_string<_CharT> string_type; - - virtual const string_type* __weeks() const; - virtual const string_type* __months() const; - virtual const string_type* __am_pm() const; - virtual const string_type& __c() const; - virtual const string_type& __r() const; - virtual const string_type& __x() const; - virtual const string_type& __X() const; -}; - -template > -class _LIBCPP_TYPE_VIS_ONLY time_get - : public locale::facet, - public time_base, - private __time_get_c_storage<_CharT> -{ -public: - typedef _CharT char_type; - typedef _InputIterator iter_type; - typedef time_base::dateorder dateorder; - typedef basic_string string_type; - - _LIBCPP_ALWAYS_INLINE - explicit time_get(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - dateorder date_order() const - { - return this->do_date_order(); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get_time(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const - { - return do_get_time(__b, __e, __iob, __err, __tm); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get_date(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const - { - return do_get_date(__b, __e, __iob, __err, __tm); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get_weekday(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const - { - return do_get_weekday(__b, __e, __iob, __err, __tm); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get_monthname(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const - { - return do_get_monthname(__b, __e, __iob, __err, __tm); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get_year(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const - { - return do_get_year(__b, __e, __iob, __err, __tm); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm *__tm, - char __fmt, char __mod = 0) const - { - return do_get(__b, __e, __iob, __err, __tm, __fmt, __mod); - } - - iter_type get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm, - const char_type* __fmtb, const char_type* __fmte) const; - - static locale::id id; - -protected: - _LIBCPP_ALWAYS_INLINE - ~time_get() {} - - virtual dateorder do_date_order() const; - virtual iter_type do_get_time(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const; - virtual iter_type do_get_date(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const; - virtual iter_type do_get_weekday(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const; - virtual iter_type do_get_monthname(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const; - virtual iter_type do_get_year(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm) const; - virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob, - ios_base::iostate& __err, tm* __tm, - char __fmt, char __mod) const; -private: - void __get_white_space(iter_type& __b, iter_type __e, - ios_base::iostate& __err, const ctype& __ct) const; - void __get_percent(iter_type& __b, iter_type __e, ios_base::iostate& __err, - const ctype& __ct) const; - - void __get_weekdayname(int& __m, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_monthname(int& __m, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_day(int& __d, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_month(int& __m, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_year(int& __y, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_year4(int& __y, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_hour(int& __d, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_12_hour(int& __h, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_am_pm(int& __h, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_minute(int& __m, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_second(int& __s, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_weekday(int& __w, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; - void __get_day_year_num(int& __w, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const; -}; - -template -locale::id -time_get<_CharT, _InputIterator>::id; - -// time_get primitives - -template -void -time_get<_CharT, _InputIterator>::__get_weekdayname(int& __w, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - // Note: ignoring case comes from the POSIX strptime spec - const string_type* __wk = this->__weeks(); - ptrdiff_t __i = __scan_keyword(__b, __e, __wk, __wk+14, __ct, __err, false) - __wk; - if (__i < 14) - __w = __i % 7; -} - -template -void -time_get<_CharT, _InputIterator>::__get_monthname(int& __m, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - // Note: ignoring case comes from the POSIX strptime spec - const string_type* __month = this->__months(); - ptrdiff_t __i = __scan_keyword(__b, __e, __month, __month+24, __ct, __err, false) - __month; - if (__i < 24) - __m = __i % 12; -} - -template -void -time_get<_CharT, _InputIterator>::__get_day(int& __d, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2); - if (!(__err & ios_base::failbit) && 1 <= __t && __t <= 31) - __d = __t; - else - __err |= ios_base::failbit; -} - -template -void -time_get<_CharT, _InputIterator>::__get_month(int& __m, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2) - 1; - if (!(__err & ios_base::failbit) && __t <= 11) - __m = __t; - else - __err |= ios_base::failbit; -} - -template -void -time_get<_CharT, _InputIterator>::__get_year(int& __y, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 4); - if (!(__err & ios_base::failbit)) - { - if (__t < 69) - __t += 2000; - else if (69 <= __t && __t <= 99) - __t += 1900; - __y = __t - 1900; - } -} - -template -void -time_get<_CharT, _InputIterator>::__get_year4(int& __y, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 4); - if (!(__err & ios_base::failbit)) - __y = __t - 1900; -} - -template -void -time_get<_CharT, _InputIterator>::__get_hour(int& __h, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2); - if (!(__err & ios_base::failbit) && __t <= 23) - __h = __t; - else - __err |= ios_base::failbit; -} - -template -void -time_get<_CharT, _InputIterator>::__get_12_hour(int& __h, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2); - if (!(__err & ios_base::failbit) && 1 <= __t && __t <= 12) - __h = __t; - else - __err |= ios_base::failbit; -} - -template -void -time_get<_CharT, _InputIterator>::__get_minute(int& __m, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2); - if (!(__err & ios_base::failbit) && __t <= 59) - __m = __t; - else - __err |= ios_base::failbit; -} - -template -void -time_get<_CharT, _InputIterator>::__get_second(int& __s, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2); - if (!(__err & ios_base::failbit) && __t <= 60) - __s = __t; - else - __err |= ios_base::failbit; -} - -template -void -time_get<_CharT, _InputIterator>::__get_weekday(int& __w, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 1); - if (!(__err & ios_base::failbit) && __t <= 6) - __w = __t; - else - __err |= ios_base::failbit; -} - -template -void -time_get<_CharT, _InputIterator>::__get_day_year_num(int& __d, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 3); - if (!(__err & ios_base::failbit) && __t <= 365) - __d = __t; - else - __err |= ios_base::failbit; -} - -template -void -time_get<_CharT, _InputIterator>::__get_white_space(iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - for (; __b != __e && __ct.is(ctype_base::space, *__b); ++__b) - ; - if (__b == __e) - __err |= ios_base::eofbit; -} - -template -void -time_get<_CharT, _InputIterator>::__get_am_pm(int& __h, - iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - const string_type* __ap = this->__am_pm(); - if (__ap[0].size() + __ap[1].size() == 0) - { - __err |= ios_base::failbit; - return; - } - ptrdiff_t __i = __scan_keyword(__b, __e, __ap, __ap+2, __ct, __err, false) - __ap; - if (__i == 0 && __h == 12) - __h = 0; - else if (__i == 1 && __h < 12) - __h += 12; -} - -template -void -time_get<_CharT, _InputIterator>::__get_percent(iter_type& __b, iter_type __e, - ios_base::iostate& __err, - const ctype& __ct) const -{ - if (__b == __e) - { - __err |= ios_base::eofbit | ios_base::failbit; - return; - } - if (__ct.narrow(*__b, 0) != '%') - __err |= ios_base::failbit; - else if(++__b == __e) - __err |= ios_base::eofbit; -} - -// time_get end primitives - -template -_InputIterator -time_get<_CharT, _InputIterator>::get(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, tm* __tm, - const char_type* __fmtb, const char_type* __fmte) const -{ - const ctype& __ct = use_facet >(__iob.getloc()); - __err = ios_base::goodbit; - while (__fmtb != __fmte && __err == ios_base::goodbit) - { - if (__b == __e) - { - __err = ios_base::failbit; - break; - } - if (__ct.narrow(*__fmtb, 0) == '%') - { - if (++__fmtb == __fmte) - { - __err = ios_base::failbit; - break; - } - char __cmd = __ct.narrow(*__fmtb, 0); - char __opt = '\0'; - if (__cmd == 'E' || __cmd == '0') - { - if (++__fmtb == __fmte) - { - __err = ios_base::failbit; - break; - } - __opt = __cmd; - __cmd = __ct.narrow(*__fmtb, 0); - } - __b = do_get(__b, __e, __iob, __err, __tm, __cmd, __opt); - ++__fmtb; - } - else if (__ct.is(ctype_base::space, *__fmtb)) - { - for (++__fmtb; __fmtb != __fmte && __ct.is(ctype_base::space, *__fmtb); ++__fmtb) - ; - for ( ; __b != __e && __ct.is(ctype_base::space, *__b); ++__b) - ; - } - else if (__ct.toupper(*__b) == __ct.toupper(*__fmtb)) - { - ++__b; - ++__fmtb; - } - else - __err = ios_base::failbit; - } - if (__b == __e) - __err |= ios_base::eofbit; - return __b; -} - -template -typename time_get<_CharT, _InputIterator>::dateorder -time_get<_CharT, _InputIterator>::do_date_order() const -{ - return mdy; -} - -template -_InputIterator -time_get<_CharT, _InputIterator>::do_get_time(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - tm* __tm) const -{ - const char_type __fmt[] = {'%', 'H', ':', '%', 'M', ':', '%', 'S'}; - return get(__b, __e, __iob, __err, __tm, __fmt, __fmt + sizeof(__fmt)/sizeof(__fmt[0])); -} - -template -_InputIterator -time_get<_CharT, _InputIterator>::do_get_date(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - tm* __tm) const -{ - const string_type& __fmt = this->__x(); - return get(__b, __e, __iob, __err, __tm, __fmt.data(), __fmt.data() + __fmt.size()); -} - -template -_InputIterator -time_get<_CharT, _InputIterator>::do_get_weekday(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - tm* __tm) const -{ - const ctype& __ct = use_facet >(__iob.getloc()); - __get_weekdayname(__tm->tm_wday, __b, __e, __err, __ct); - return __b; -} - -template -_InputIterator -time_get<_CharT, _InputIterator>::do_get_monthname(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - tm* __tm) const -{ - const ctype& __ct = use_facet >(__iob.getloc()); - __get_monthname(__tm->tm_mon, __b, __e, __err, __ct); - return __b; -} - -template -_InputIterator -time_get<_CharT, _InputIterator>::do_get_year(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, - tm* __tm) const -{ - const ctype& __ct = use_facet >(__iob.getloc()); - __get_year(__tm->tm_year, __b, __e, __err, __ct); - return __b; -} - -template -_InputIterator -time_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e, - ios_base& __iob, - ios_base::iostate& __err, tm* __tm, - char __fmt, char) const -{ - __err = ios_base::goodbit; - const ctype& __ct = use_facet >(__iob.getloc()); - switch (__fmt) - { - case 'a': - case 'A': - __get_weekdayname(__tm->tm_wday, __b, __e, __err, __ct); - break; - case 'b': - case 'B': - case 'h': - __get_monthname(__tm->tm_mon, __b, __e, __err, __ct); - break; - case 'c': - { - const string_type& __fm = this->__c(); - __b = get(__b, __e, __iob, __err, __tm, __fm.data(), __fm.data() + __fm.size()); - } - break; - case 'd': - case 'e': - __get_day(__tm->tm_mday, __b, __e, __err, __ct); - break; - case 'D': - { - const char_type __fm[] = {'%', 'm', '/', '%', 'd', '/', '%', 'y'}; - __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0])); - } - break; - case 'F': - { - const char_type __fm[] = {'%', 'Y', '-', '%', 'm', '-', '%', 'd'}; - __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0])); - } - break; - case 'H': - __get_hour(__tm->tm_hour, __b, __e, __err, __ct); - break; - case 'I': - __get_12_hour(__tm->tm_hour, __b, __e, __err, __ct); - break; - case 'j': - __get_day_year_num(__tm->tm_yday, __b, __e, __err, __ct); - break; - case 'm': - __get_month(__tm->tm_mon, __b, __e, __err, __ct); - break; - case 'M': - __get_minute(__tm->tm_min, __b, __e, __err, __ct); - break; - case 'n': - case 't': - __get_white_space(__b, __e, __err, __ct); - break; - case 'p': - __get_am_pm(__tm->tm_hour, __b, __e, __err, __ct); - break; - case 'r': - { - const char_type __fm[] = {'%', 'I', ':', '%', 'M', ':', '%', 'S', ' ', '%', 'p'}; - __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0])); - } - break; - case 'R': - { - const char_type __fm[] = {'%', 'H', ':', '%', 'M'}; - __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0])); - } - break; - case 'S': - __get_second(__tm->tm_sec, __b, __e, __err, __ct); - break; - case 'T': - { - const char_type __fm[] = {'%', 'H', ':', '%', 'M', ':', '%', 'S'}; - __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0])); - } - break; - case 'w': - __get_weekday(__tm->tm_wday, __b, __e, __err, __ct); - break; - case 'x': - return do_get_date(__b, __e, __iob, __err, __tm); - case 'X': - { - const string_type& __fm = this->__X(); - __b = get(__b, __e, __iob, __err, __tm, __fm.data(), __fm.data() + __fm.size()); - } - break; - case 'y': - __get_year(__tm->tm_year, __b, __e, __err, __ct); - break; - case 'Y': - __get_year4(__tm->tm_year, __b, __e, __err, __ct); - break; - case '%': - __get_percent(__b, __e, __err, __ct); - break; - default: - __err |= ios_base::failbit; - } - return __b; -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_get) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_get) - -class _LIBCPP_TYPE_VIS __time_get -{ -protected: - locale_t __loc_; - - __time_get(const char* __nm); - __time_get(const string& __nm); - ~__time_get(); -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __time_get_storage - : public __time_get -{ -protected: - typedef basic_string<_CharT> string_type; - - string_type __weeks_[14]; - string_type __months_[24]; - string_type __am_pm_[2]; - string_type __c_; - string_type __r_; - string_type __x_; - string_type __X_; - - explicit __time_get_storage(const char* __nm); - explicit __time_get_storage(const string& __nm); - - _LIBCPP_ALWAYS_INLINE ~__time_get_storage() {} - - time_base::dateorder __do_date_order() const; - -private: - void init(const ctype<_CharT>&); - string_type __analyze(char __fmt, const ctype<_CharT>&); -}; - -template > -class _LIBCPP_TYPE_VIS_ONLY time_get_byname - : public time_get<_CharT, _InputIterator>, - private __time_get_storage<_CharT> -{ -public: - typedef time_base::dateorder dateorder; - typedef _InputIterator iter_type; - typedef _CharT char_type; - typedef basic_string string_type; - - _LIBCPP_INLINE_VISIBILITY - explicit time_get_byname(const char* __nm, size_t __refs = 0) - : time_get<_CharT, _InputIterator>(__refs), - __time_get_storage<_CharT>(__nm) {} - _LIBCPP_INLINE_VISIBILITY - explicit time_get_byname(const string& __nm, size_t __refs = 0) - : time_get<_CharT, _InputIterator>(__refs), - __time_get_storage<_CharT>(__nm) {} - -protected: - _LIBCPP_INLINE_VISIBILITY - ~time_get_byname() {} - - _LIBCPP_INLINE_VISIBILITY - virtual dateorder do_date_order() const {return this->__do_date_order();} -private: - _LIBCPP_INLINE_VISIBILITY - virtual const string_type* __weeks() const {return this->__weeks_;} - _LIBCPP_INLINE_VISIBILITY - virtual const string_type* __months() const {return this->__months_;} - _LIBCPP_INLINE_VISIBILITY - virtual const string_type* __am_pm() const {return this->__am_pm_;} - _LIBCPP_INLINE_VISIBILITY - virtual const string_type& __c() const {return this->__c_;} - _LIBCPP_INLINE_VISIBILITY - virtual const string_type& __r() const {return this->__r_;} - _LIBCPP_INLINE_VISIBILITY - virtual const string_type& __x() const {return this->__x_;} - _LIBCPP_INLINE_VISIBILITY - virtual const string_type& __X() const {return this->__X_;} -}; - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_get_byname) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_get_byname) - -class _LIBCPP_TYPE_VIS __time_put -{ - locale_t __loc_; -protected: - _LIBCPP_ALWAYS_INLINE __time_put() : __loc_(_LIBCPP_GET_C_LOCALE) {} - __time_put(const char* __nm); - __time_put(const string& __nm); - ~__time_put(); - void __do_put(char* __nb, char*& __ne, const tm* __tm, - char __fmt, char __mod) const; - void __do_put(wchar_t* __wb, wchar_t*& __we, const tm* __tm, - char __fmt, char __mod) const; -}; - -template > -class _LIBCPP_TYPE_VIS_ONLY time_put - : public locale::facet, - private __time_put -{ -public: - typedef _CharT char_type; - typedef _OutputIterator iter_type; - - _LIBCPP_ALWAYS_INLINE - explicit time_put(size_t __refs = 0) - : locale::facet(__refs) {} - - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, const tm* __tm, - const char_type* __pb, const char_type* __pe) const; - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, ios_base& __iob, char_type __fl, - const tm* __tm, char __fmt, char __mod = 0) const - { - return do_put(__s, __iob, __fl, __tm, __fmt, __mod); - } - - static locale::id id; - -protected: - _LIBCPP_ALWAYS_INLINE - ~time_put() {} - virtual iter_type do_put(iter_type __s, ios_base&, char_type, const tm* __tm, - char __fmt, char __mod) const; - - _LIBCPP_ALWAYS_INLINE - explicit time_put(const char* __nm, size_t __refs) - : locale::facet(__refs), - __time_put(__nm) {} - _LIBCPP_ALWAYS_INLINE - explicit time_put(const string& __nm, size_t __refs) - : locale::facet(__refs), - __time_put(__nm) {} -}; - -template -locale::id -time_put<_CharT, _OutputIterator>::id; - -template -_OutputIterator -time_put<_CharT, _OutputIterator>::put(iter_type __s, ios_base& __iob, - char_type __fl, const tm* __tm, - const char_type* __pb, - const char_type* __pe) const -{ - const ctype& __ct = use_facet >(__iob.getloc()); - for (; __pb != __pe; ++__pb) - { - if (__ct.narrow(*__pb, 0) == '%') - { - if (++__pb == __pe) - { - *__s++ = __pb[-1]; - break; - } - char __mod = 0; - char __fmt = __ct.narrow(*__pb, 0); - if (__fmt == 'E' || __fmt == 'O') - { - if (++__pb == __pe) - { - *__s++ = __pb[-2]; - *__s++ = __pb[-1]; - break; - } - __mod = __fmt; - __fmt = __ct.narrow(*__pb, 0); - } - __s = do_put(__s, __iob, __fl, __tm, __fmt, __mod); - } - else - *__s++ = *__pb; - } - return __s; -} - -template -_OutputIterator -time_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base&, - char_type, const tm* __tm, - char __fmt, char __mod) const -{ - char_type __nar[100]; - char_type* __nb = __nar; - char_type* __ne = __nb + 100; - __do_put(__nb, __ne, __tm, __fmt, __mod); - return _VSTD::copy(__nb, __ne, __s); -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_put) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_put) - -template > -class _LIBCPP_TYPE_VIS_ONLY time_put_byname - : public time_put<_CharT, _OutputIterator> -{ -public: - _LIBCPP_ALWAYS_INLINE - explicit time_put_byname(const char* __nm, size_t __refs = 0) - : time_put<_CharT, _OutputIterator>(__nm, __refs) {} - - _LIBCPP_ALWAYS_INLINE - explicit time_put_byname(const string& __nm, size_t __refs = 0) - : time_put<_CharT, _OutputIterator>(__nm, __refs) {} - -protected: - _LIBCPP_ALWAYS_INLINE - ~time_put_byname() {} -}; - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_put_byname) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_put_byname) - -// money_base - -class _LIBCPP_TYPE_VIS money_base -{ -public: - enum part {none, space, symbol, sign, value}; - struct pattern {char field[4];}; - - _LIBCPP_ALWAYS_INLINE money_base() {} -}; - -// moneypunct - -template -class _LIBCPP_TYPE_VIS_ONLY moneypunct - : public locale::facet, - public money_base -{ -public: - typedef _CharT char_type; - typedef basic_string string_type; - - _LIBCPP_ALWAYS_INLINE - explicit moneypunct(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE char_type decimal_point() const {return do_decimal_point();} - _LIBCPP_ALWAYS_INLINE char_type thousands_sep() const {return do_thousands_sep();} - _LIBCPP_ALWAYS_INLINE string grouping() const {return do_grouping();} - _LIBCPP_ALWAYS_INLINE string_type curr_symbol() const {return do_curr_symbol();} - _LIBCPP_ALWAYS_INLINE string_type positive_sign() const {return do_positive_sign();} - _LIBCPP_ALWAYS_INLINE string_type negative_sign() const {return do_negative_sign();} - _LIBCPP_ALWAYS_INLINE int frac_digits() const {return do_frac_digits();} - _LIBCPP_ALWAYS_INLINE pattern pos_format() const {return do_pos_format();} - _LIBCPP_ALWAYS_INLINE pattern neg_format() const {return do_neg_format();} - - static locale::id id; - static const bool intl = _International; - -protected: - _LIBCPP_ALWAYS_INLINE - ~moneypunct() {} - - virtual char_type do_decimal_point() const {return numeric_limits::max();} - virtual char_type do_thousands_sep() const {return numeric_limits::max();} - virtual string do_grouping() const {return string();} - virtual string_type do_curr_symbol() const {return string_type();} - virtual string_type do_positive_sign() const {return string_type();} - virtual string_type do_negative_sign() const {return string_type(1, '-');} - virtual int do_frac_digits() const {return 0;} - virtual pattern do_pos_format() const - {pattern __p = {{symbol, sign, none, value}}; return __p;} - virtual pattern do_neg_format() const - {pattern __p = {{symbol, sign, none, value}}; return __p;} -}; - -template -locale::id -moneypunct<_CharT, _International>::id; - -template -const bool -moneypunct<_CharT, _International>::intl; - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct) - -// moneypunct_byname - -template -class _LIBCPP_TYPE_VIS_ONLY moneypunct_byname - : public moneypunct<_CharT, _International> -{ -public: - typedef money_base::pattern pattern; - typedef _CharT char_type; - typedef basic_string string_type; - - _LIBCPP_ALWAYS_INLINE - explicit moneypunct_byname(const char* __nm, size_t __refs = 0) - : moneypunct<_CharT, _International>(__refs) {init(__nm);} - - _LIBCPP_ALWAYS_INLINE - explicit moneypunct_byname(const string& __nm, size_t __refs = 0) - : moneypunct<_CharT, _International>(__refs) {init(__nm.c_str());} - -protected: - _LIBCPP_ALWAYS_INLINE - ~moneypunct_byname() {} - - virtual char_type do_decimal_point() const {return __decimal_point_;} - virtual char_type do_thousands_sep() const {return __thousands_sep_;} - virtual string do_grouping() const {return __grouping_;} - virtual string_type do_curr_symbol() const {return __curr_symbol_;} - virtual string_type do_positive_sign() const {return __positive_sign_;} - virtual string_type do_negative_sign() const {return __negative_sign_;} - virtual int do_frac_digits() const {return __frac_digits_;} - virtual pattern do_pos_format() const {return __pos_format_;} - virtual pattern do_neg_format() const {return __neg_format_;} - -private: - char_type __decimal_point_; - char_type __thousands_sep_; - string __grouping_; - string_type __curr_symbol_; - string_type __positive_sign_; - string_type __negative_sign_; - int __frac_digits_; - pattern __pos_format_; - pattern __neg_format_; - - void init(const char*); -}; - -template<> void moneypunct_byname::init(const char*); -template<> void moneypunct_byname::init(const char*); -template<> void moneypunct_byname::init(const char*); -template<> void moneypunct_byname::init(const char*); - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct_byname) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct_byname) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct_byname) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct_byname) - -// money_get - -template -class __money_get -{ -protected: - typedef _CharT char_type; - typedef basic_string string_type; - - _LIBCPP_ALWAYS_INLINE __money_get() {} - - static void __gather_info(bool __intl, const locale& __loc, - money_base::pattern& __pat, char_type& __dp, - char_type& __ts, string& __grp, - string_type& __sym, string_type& __psn, - string_type& __nsn, int& __fd); -}; - -template -void -__money_get<_CharT>::__gather_info(bool __intl, const locale& __loc, - money_base::pattern& __pat, char_type& __dp, - char_type& __ts, string& __grp, - string_type& __sym, string_type& __psn, - string_type& __nsn, int& __fd) -{ - if (__intl) - { - const moneypunct& __mp = - use_facet >(__loc); - __pat = __mp.neg_format(); - __nsn = __mp.negative_sign(); - __psn = __mp.positive_sign(); - __dp = __mp.decimal_point(); - __ts = __mp.thousands_sep(); - __grp = __mp.grouping(); - __sym = __mp.curr_symbol(); - __fd = __mp.frac_digits(); - } - else - { - const moneypunct& __mp = - use_facet >(__loc); - __pat = __mp.neg_format(); - __nsn = __mp.negative_sign(); - __psn = __mp.positive_sign(); - __dp = __mp.decimal_point(); - __ts = __mp.thousands_sep(); - __grp = __mp.grouping(); - __sym = __mp.curr_symbol(); - __fd = __mp.frac_digits(); - } -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS __money_get) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS __money_get) - -template > -class _LIBCPP_TYPE_VIS_ONLY money_get - : public locale::facet, - private __money_get<_CharT> -{ -public: - typedef _CharT char_type; - typedef _InputIterator iter_type; - typedef basic_string string_type; - - _LIBCPP_ALWAYS_INLINE - explicit money_get(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, bool __intl, ios_base& __iob, - ios_base::iostate& __err, long double& __v) const - { - return do_get(__b, __e, __intl, __iob, __err, __v); - } - - _LIBCPP_ALWAYS_INLINE - iter_type get(iter_type __b, iter_type __e, bool __intl, ios_base& __iob, - ios_base::iostate& __err, string_type& __v) const - { - return do_get(__b, __e, __intl, __iob, __err, __v); - } - - static locale::id id; - -protected: - - _LIBCPP_ALWAYS_INLINE - ~money_get() {} - - virtual iter_type do_get(iter_type __b, iter_type __e, bool __intl, - ios_base& __iob, ios_base::iostate& __err, - long double& __v) const; - virtual iter_type do_get(iter_type __b, iter_type __e, bool __intl, - ios_base& __iob, ios_base::iostate& __err, - string_type& __v) const; - -private: - static bool __do_get(iter_type& __b, iter_type __e, - bool __intl, const locale& __loc, - ios_base::fmtflags __flags, ios_base::iostate& __err, - bool& __neg, const ctype& __ct, - unique_ptr& __wb, - char_type*& __wn, char_type* __we); -}; - -template -locale::id -money_get<_CharT, _InputIterator>::id; - -_LIBCPP_FUNC_VIS void __do_nothing(void*); - -template -_LIBCPP_HIDDEN -void -__double_or_nothing(unique_ptr<_Tp, void(*)(void*)>& __b, _Tp*& __n, _Tp*& __e) -{ - bool __owns = __b.get_deleter() != __do_nothing; - size_t __cur_cap = static_cast(__e-__b.get()) * sizeof(_Tp); - size_t __new_cap = __cur_cap < numeric_limits::max() / 2 ? - 2 * __cur_cap : numeric_limits::max(); - if (__new_cap == 0) - __new_cap = sizeof(_Tp); - size_t __n_off = static_cast(__n - __b.get()); - _Tp* __t = (_Tp*)realloc(__owns ? __b.get() : 0, __new_cap); - if (__t == 0) - __throw_bad_alloc(); - if (__owns) - __b.release(); - __b = unique_ptr<_Tp, void(*)(void*)>(__t, free); - __new_cap /= sizeof(_Tp); - __n = __b.get() + __n_off; - __e = __b.get() + __new_cap; -} - -// true == success -template -bool -money_get<_CharT, _InputIterator>::__do_get(iter_type& __b, iter_type __e, - bool __intl, const locale& __loc, - ios_base::fmtflags __flags, - ios_base::iostate& __err, - bool& __neg, - const ctype& __ct, - unique_ptr& __wb, - char_type*& __wn, char_type* __we) -{ - const unsigned __bz = 100; - unsigned __gbuf[__bz]; - unique_ptr __gb(__gbuf, __do_nothing); - unsigned* __gn = __gb.get(); - unsigned* __ge = __gn + __bz; - money_base::pattern __pat; - char_type __dp; - char_type __ts; - string __grp; - string_type __sym; - string_type __psn; - string_type __nsn; - // Capture the spaces read into money_base::{space,none} so they - // can be compared to initial spaces in __sym. - string_type __spaces; - int __fd; - __money_get<_CharT>::__gather_info(__intl, __loc, __pat, __dp, __ts, __grp, - __sym, __psn, __nsn, __fd); - const string_type* __trailing_sign = 0; - __wn = __wb.get(); - for (unsigned __p = 0; __p < 4 && __b != __e; ++__p) - { - switch (__pat.field[__p]) - { - case money_base::space: - if (__p != 3) - { - if (__ct.is(ctype_base::space, *__b)) - __spaces.push_back(*__b++); - else - { - __err |= ios_base::failbit; - return false; - } - } - // drop through - case money_base::none: - if (__p != 3) - { - while (__b != __e && __ct.is(ctype_base::space, *__b)) - __spaces.push_back(*__b++); - } - break; - case money_base::sign: - if (__psn.size() + __nsn.size() > 0) - { - if (__psn.size() == 0 || __nsn.size() == 0) - { // sign is optional - if (__psn.size() > 0) - { // __nsn.size() == 0 - if (*__b == __psn[0]) - { - ++__b; - if (__psn.size() > 1) - __trailing_sign = &__psn; - } - else - __neg = true; - } - else if (*__b == __nsn[0]) // __nsn.size() > 0 && __psn.size() == 0 - { - ++__b; - __neg = true; - if (__nsn.size() > 1) - __trailing_sign = &__nsn; - } - } - else // sign is required - { - if (*__b == __psn[0]) - { - ++__b; - if (__psn.size() > 1) - __trailing_sign = &__psn; - } - else if (*__b == __nsn[0]) - { - ++__b; - __neg = true; - if (__nsn.size() > 1) - __trailing_sign = &__nsn; - } - else - { - __err |= ios_base::failbit; - return false; - } - } - } - break; - case money_base::symbol: - { - bool __more_needed = __trailing_sign || - (__p < 2) || - (__p == 2 && __pat.field[3] != static_cast(money_base::none)); - bool __sb = (__flags & ios_base::showbase) != 0; - if (__sb || __more_needed) - { - typename string_type::const_iterator __sym_space_end = __sym.begin(); - if (__p > 0 && (__pat.field[__p - 1] == money_base::none || - __pat.field[__p - 1] == money_base::space)) { - // Match spaces we've already read against spaces at - // the beginning of __sym. - while (__sym_space_end != __sym.end() && - __ct.is(ctype_base::space, *__sym_space_end)) - ++__sym_space_end; - const size_t __num_spaces = __sym_space_end - __sym.begin(); - if (__num_spaces > __spaces.size() || - !equal(__spaces.end() - __num_spaces, __spaces.end(), - __sym.begin())) { - // No match. Put __sym_space_end back at the - // beginning of __sym, which will prevent a - // match in the next loop. - __sym_space_end = __sym.begin(); - } - } - typename string_type::const_iterator __sym_curr_char = __sym_space_end; - while (__sym_curr_char != __sym.end() && __b != __e && - *__b == *__sym_curr_char) { - ++__b; - ++__sym_curr_char; - } - if (__sb && __sym_curr_char != __sym.end()) - { - __err |= ios_base::failbit; - return false; - } - } - } - break; - case money_base::value: - { - unsigned __ng = 0; - for (; __b != __e; ++__b) - { - char_type __c = *__b; - if (__ct.is(ctype_base::digit, __c)) - { - if (__wn == __we) - __double_or_nothing(__wb, __wn, __we); - *__wn++ = __c; - ++__ng; - } - else if (__grp.size() > 0 && __ng > 0 && __c == __ts) - { - if (__gn == __ge) - __double_or_nothing(__gb, __gn, __ge); - *__gn++ = __ng; - __ng = 0; - } - else - break; - } - if (__gb.get() != __gn && __ng > 0) - { - if (__gn == __ge) - __double_or_nothing(__gb, __gn, __ge); - *__gn++ = __ng; - } - if (__fd > 0) - { - if (__b == __e || *__b != __dp) - { - __err |= ios_base::failbit; - return false; - } - for (++__b; __fd > 0; --__fd, ++__b) - { - if (__b == __e || !__ct.is(ctype_base::digit, *__b)) - { - __err |= ios_base::failbit; - return false; - } - if (__wn == __we) - __double_or_nothing(__wb, __wn, __we); - *__wn++ = *__b; - } - } - if (__wn == __wb.get()) - { - __err |= ios_base::failbit; - return false; - } - } - break; - } - } - if (__trailing_sign) - { - for (unsigned __i = 1; __i < __trailing_sign->size(); ++__i, ++__b) - { - if (__b == __e || *__b != (*__trailing_sign)[__i]) - { - __err |= ios_base::failbit; - return false; - } - } - } - if (__gb.get() != __gn) - { - ios_base::iostate __et = ios_base::goodbit; - __check_grouping(__grp, __gb.get(), __gn, __et); - if (__et) - { - __err |= ios_base::failbit; - return false; - } - } - return true; -} - -template -_InputIterator -money_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e, - bool __intl, ios_base& __iob, - ios_base::iostate& __err, - long double& __v) const -{ - const int __bz = 100; - char_type __wbuf[__bz]; - unique_ptr __wb(__wbuf, __do_nothing); - char_type* __wn; - char_type* __we = __wbuf + __bz; - locale __loc = __iob.getloc(); - const ctype& __ct = use_facet >(__loc); - bool __neg = false; - if (__do_get(__b, __e, __intl, __loc, __iob.flags(), __err, __neg, __ct, - __wb, __wn, __we)) - { - const char __src[] = "0123456789"; - char_type __atoms[sizeof(__src)-1]; - __ct.widen(__src, __src + (sizeof(__src)-1), __atoms); - char __nbuf[__bz]; - char* __nc = __nbuf; - unique_ptr __h(0, free); - if (__wn - __wb.get() > __bz-2) - { - __h.reset((char*)malloc(static_cast(__wn - __wb.get() + 2))); - if (__h.get() == 0) - __throw_bad_alloc(); - __nc = __h.get(); - } - if (__neg) - *__nc++ = '-'; - for (const char_type* __w = __wb.get(); __w < __wn; ++__w, ++__nc) - *__nc = __src[find(__atoms, _VSTD::end(__atoms), *__w) - __atoms]; - *__nc = char(); - if (sscanf(__nbuf, "%Lf", &__v) != 1) - __throw_runtime_error("money_get error"); - } - if (__b == __e) - __err |= ios_base::eofbit; - return __b; -} - -template -_InputIterator -money_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e, - bool __intl, ios_base& __iob, - ios_base::iostate& __err, - string_type& __v) const -{ - const int __bz = 100; - char_type __wbuf[__bz]; - unique_ptr __wb(__wbuf, __do_nothing); - char_type* __wn; - char_type* __we = __wbuf + __bz; - locale __loc = __iob.getloc(); - const ctype& __ct = use_facet >(__loc); - bool __neg = false; - if (__do_get(__b, __e, __intl, __loc, __iob.flags(), __err, __neg, __ct, - __wb, __wn, __we)) - { - __v.clear(); - if (__neg) - __v.push_back(__ct.widen('-')); - char_type __z = __ct.widen('0'); - char_type* __w; - for (__w = __wb.get(); __w < __wn-1; ++__w) - if (*__w != __z) - break; - __v.append(__w, __wn); - } - if (__b == __e) - __err |= ios_base::eofbit; - return __b; -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS money_get) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS money_get) - -// money_put - -template -class __money_put -{ -protected: - typedef _CharT char_type; - typedef basic_string string_type; - - _LIBCPP_ALWAYS_INLINE __money_put() {} - - static void __gather_info(bool __intl, bool __neg, const locale& __loc, - money_base::pattern& __pat, char_type& __dp, - char_type& __ts, string& __grp, - string_type& __sym, string_type& __sn, - int& __fd); - static void __format(char_type* __mb, char_type*& __mi, char_type*& __me, - ios_base::fmtflags __flags, - const char_type* __db, const char_type* __de, - const ctype& __ct, bool __neg, - const money_base::pattern& __pat, char_type __dp, - char_type __ts, const string& __grp, - const string_type& __sym, const string_type& __sn, - int __fd); -}; - -template -void -__money_put<_CharT>::__gather_info(bool __intl, bool __neg, const locale& __loc, - money_base::pattern& __pat, char_type& __dp, - char_type& __ts, string& __grp, - string_type& __sym, string_type& __sn, - int& __fd) -{ - if (__intl) - { - const moneypunct& __mp = - use_facet >(__loc); - if (__neg) - { - __pat = __mp.neg_format(); - __sn = __mp.negative_sign(); - } - else - { - __pat = __mp.pos_format(); - __sn = __mp.positive_sign(); - } - __dp = __mp.decimal_point(); - __ts = __mp.thousands_sep(); - __grp = __mp.grouping(); - __sym = __mp.curr_symbol(); - __fd = __mp.frac_digits(); - } - else - { - const moneypunct& __mp = - use_facet >(__loc); - if (__neg) - { - __pat = __mp.neg_format(); - __sn = __mp.negative_sign(); - } - else - { - __pat = __mp.pos_format(); - __sn = __mp.positive_sign(); - } - __dp = __mp.decimal_point(); - __ts = __mp.thousands_sep(); - __grp = __mp.grouping(); - __sym = __mp.curr_symbol(); - __fd = __mp.frac_digits(); - } -} - -template -void -__money_put<_CharT>::__format(char_type* __mb, char_type*& __mi, char_type*& __me, - ios_base::fmtflags __flags, - const char_type* __db, const char_type* __de, - const ctype& __ct, bool __neg, - const money_base::pattern& __pat, char_type __dp, - char_type __ts, const string& __grp, - const string_type& __sym, const string_type& __sn, - int __fd) -{ - __me = __mb; - for (unsigned __p = 0; __p < 4; ++__p) - { - switch (__pat.field[__p]) - { - case money_base::none: - __mi = __me; - break; - case money_base::space: - __mi = __me; - *__me++ = __ct.widen(' '); - break; - case money_base::sign: - if (!__sn.empty()) - *__me++ = __sn[0]; - break; - case money_base::symbol: - if (!__sym.empty() && (__flags & ios_base::showbase)) - __me = _VSTD::copy(__sym.begin(), __sym.end(), __me); - break; - case money_base::value: - { - // remember start of value so we can reverse it - char_type* __t = __me; - // find beginning of digits - if (__neg) - ++__db; - // find end of digits - const char_type* __d; - for (__d = __db; __d < __de; ++__d) - if (!__ct.is(ctype_base::digit, *__d)) - break; - // print fractional part - if (__fd > 0) - { - int __f; - for (__f = __fd; __d > __db && __f > 0; --__f) - *__me++ = *--__d; - char_type __z = __f > 0 ? __ct.widen('0') : char_type(); - for (; __f > 0; --__f) - *__me++ = __z; - *__me++ = __dp; - } - // print units part - if (__d == __db) - { - *__me++ = __ct.widen('0'); - } - else - { - unsigned __ng = 0; - unsigned __ig = 0; - unsigned __gl = __grp.empty() ? numeric_limits::max() - : static_cast(__grp[__ig]); - while (__d != __db) - { - if (__ng == __gl) - { - *__me++ = __ts; - __ng = 0; - if (++__ig < __grp.size()) - __gl = __grp[__ig] == numeric_limits::max() ? - numeric_limits::max() : - static_cast(__grp[__ig]); - } - *__me++ = *--__d; - ++__ng; - } - } - // reverse it - reverse(__t, __me); - } - break; - } - } - // print rest of sign, if any - if (__sn.size() > 1) - __me = _VSTD::copy(__sn.begin()+1, __sn.end(), __me); - // set alignment - if ((__flags & ios_base::adjustfield) == ios_base::left) - __mi = __me; - else if ((__flags & ios_base::adjustfield) != ios_base::internal) - __mi = __mb; -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS __money_put) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS __money_put) - -template > -class _LIBCPP_TYPE_VIS_ONLY money_put - : public locale::facet, - private __money_put<_CharT> -{ -public: - typedef _CharT char_type; - typedef _OutputIterator iter_type; - typedef basic_string string_type; - - _LIBCPP_ALWAYS_INLINE - explicit money_put(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, bool __intl, ios_base& __iob, char_type __fl, - long double __units) const - { - return do_put(__s, __intl, __iob, __fl, __units); - } - - _LIBCPP_ALWAYS_INLINE - iter_type put(iter_type __s, bool __intl, ios_base& __iob, char_type __fl, - const string_type& __digits) const - { - return do_put(__s, __intl, __iob, __fl, __digits); - } - - static locale::id id; - -protected: - _LIBCPP_ALWAYS_INLINE - ~money_put() {} - - virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __iob, - char_type __fl, long double __units) const; - virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __iob, - char_type __fl, const string_type& __digits) const; -}; - -template -locale::id -money_put<_CharT, _OutputIterator>::id; - -template -_OutputIterator -money_put<_CharT, _OutputIterator>::do_put(iter_type __s, bool __intl, - ios_base& __iob, char_type __fl, - long double __units) const -{ - // convert to char - const size_t __bs = 100; - char __buf[__bs]; - char* __bb = __buf; - char_type __digits[__bs]; - char_type* __db = __digits; - size_t __n = static_cast(snprintf(__bb, __bs, "%.0Lf", __units)); - unique_ptr __hn(0, free); - unique_ptr __hd(0, free); - // secure memory for digit storage - if (__n > __bs-1) - { -#ifdef _LIBCPP_LOCALE__L_EXTENSIONS - __n = static_cast(asprintf_l(&__bb, _LIBCPP_GET_C_LOCALE, "%.0Lf", __units)); -#else - __n = __asprintf_l(&__bb, __cloc(), "%.0Lf", __units); -#endif - if (__bb == 0) - __throw_bad_alloc(); - __hn.reset(__bb); - __hd.reset((char_type*)malloc(__n * sizeof(char_type))); - if (__hd == nullptr) - __throw_bad_alloc(); - __db = __hd.get(); - } - // gather info - locale __loc = __iob.getloc(); - const ctype& __ct = use_facet >(__loc); - __ct.widen(__bb, __bb + __n, __db); - bool __neg = __n > 0 && __bb[0] == '-'; - money_base::pattern __pat; - char_type __dp; - char_type __ts; - string __grp; - string_type __sym; - string_type __sn; - int __fd; - this->__gather_info(__intl, __neg, __loc, __pat, __dp, __ts, __grp, __sym, __sn, __fd); - // secure memory for formatting - char_type __mbuf[__bs]; - char_type* __mb = __mbuf; - unique_ptr __hw(0, free); - size_t __exn = static_cast(__n) > __fd ? - (__n - static_cast(__fd)) * 2 + __sn.size() + - __sym.size() + static_cast(__fd) + 1 - : __sn.size() + __sym.size() + static_cast(__fd) + 2; - if (__exn > __bs) - { - __hw.reset((char_type*)malloc(__exn * sizeof(char_type))); - __mb = __hw.get(); - if (__mb == 0) - __throw_bad_alloc(); - } - // format - char_type* __mi; - char_type* __me; - this->__format(__mb, __mi, __me, __iob.flags(), - __db, __db + __n, __ct, - __neg, __pat, __dp, __ts, __grp, __sym, __sn, __fd); - return __pad_and_output(__s, __mb, __mi, __me, __iob, __fl); -} - -template -_OutputIterator -money_put<_CharT, _OutputIterator>::do_put(iter_type __s, bool __intl, - ios_base& __iob, char_type __fl, - const string_type& __digits) const -{ - // gather info - locale __loc = __iob.getloc(); - const ctype& __ct = use_facet >(__loc); - bool __neg = __digits.size() > 0 && __digits[0] == __ct.widen('-'); - money_base::pattern __pat; - char_type __dp; - char_type __ts; - string __grp; - string_type __sym; - string_type __sn; - int __fd; - this->__gather_info(__intl, __neg, __loc, __pat, __dp, __ts, __grp, __sym, __sn, __fd); - // secure memory for formatting - char_type __mbuf[100]; - char_type* __mb = __mbuf; - unique_ptr __h(0, free); - size_t __exn = static_cast(__digits.size()) > __fd ? - (__digits.size() - static_cast(__fd)) * 2 + - __sn.size() + __sym.size() + static_cast(__fd) + 1 - : __sn.size() + __sym.size() + static_cast(__fd) + 2; - if (__exn > 100) - { - __h.reset((char_type*)malloc(__exn * sizeof(char_type))); - __mb = __h.get(); - if (__mb == 0) - __throw_bad_alloc(); - } - // format - char_type* __mi; - char_type* __me; - this->__format(__mb, __mi, __me, __iob.flags(), - __digits.data(), __digits.data() + __digits.size(), __ct, - __neg, __pat, __dp, __ts, __grp, __sym, __sn, __fd); - return __pad_and_output(__s, __mb, __mi, __me, __iob, __fl); -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS money_put) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS money_put) - -// messages - -class _LIBCPP_TYPE_VIS messages_base -{ -public: - typedef ptrdiff_t catalog; - - _LIBCPP_ALWAYS_INLINE messages_base() {} -}; - -template -class _LIBCPP_TYPE_VIS_ONLY messages - : public locale::facet, - public messages_base -{ -public: - typedef _CharT char_type; - typedef basic_string<_CharT> string_type; - - _LIBCPP_ALWAYS_INLINE - explicit messages(size_t __refs = 0) - : locale::facet(__refs) {} - - _LIBCPP_ALWAYS_INLINE - catalog open(const basic_string& __nm, const locale& __loc) const - { - return do_open(__nm, __loc); - } - - _LIBCPP_ALWAYS_INLINE - string_type get(catalog __c, int __set, int __msgid, - const string_type& __dflt) const - { - return do_get(__c, __set, __msgid, __dflt); - } - - _LIBCPP_ALWAYS_INLINE - void close(catalog __c) const - { - do_close(__c); - } - - static locale::id id; - -protected: - _LIBCPP_ALWAYS_INLINE - ~messages() {} - - virtual catalog do_open(const basic_string&, const locale&) const; - virtual string_type do_get(catalog, int __set, int __msgid, - const string_type& __dflt) const; - virtual void do_close(catalog) const; -}; - -template -locale::id -messages<_CharT>::id; - -template -typename messages<_CharT>::catalog -messages<_CharT>::do_open(const basic_string& __nm, const locale&) const -{ -#ifdef _LIBCPP_HAS_CATOPEN - catalog __cat = (catalog)catopen(__nm.c_str(), NL_CAT_LOCALE); - if (__cat != -1) - __cat = static_cast((static_cast(__cat) >> 1)); - return __cat; -#else // !_LIBCPP_HAS_CATOPEN - return -1; -#endif // _LIBCPP_HAS_CATOPEN -} - -template -typename messages<_CharT>::string_type -messages<_CharT>::do_get(catalog __c, int __set, int __msgid, - const string_type& __dflt) const -{ -#ifdef _LIBCPP_HAS_CATOPEN - string __ndflt; - __narrow_to_utf8()(back_inserter(__ndflt), - __dflt.c_str(), - __dflt.c_str() + __dflt.size()); - if (__c != -1) - __c <<= 1; - nl_catd __cat = (nl_catd)__c; - char* __n = catgets(__cat, __set, __msgid, __ndflt.c_str()); - string_type __w; - __widen_from_utf8()(back_inserter(__w), - __n, __n + strlen(__n)); - return __w; -#else // !_LIBCPP_HAS_CATOPEN - return __dflt; -#endif // _LIBCPP_HAS_CATOPEN -} - -template -void -messages<_CharT>::do_close(catalog __c) const -{ -#ifdef _LIBCPP_HAS_CATOPEN - if (__c != -1) - __c <<= 1; - nl_catd __cat = (nl_catd)__c; - catclose(__cat); -#endif // _LIBCPP_HAS_CATOPEN -} - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS messages) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS messages) - -template -class _LIBCPP_TYPE_VIS_ONLY messages_byname - : public messages<_CharT> -{ -public: - typedef messages_base::catalog catalog; - typedef basic_string<_CharT> string_type; - - _LIBCPP_ALWAYS_INLINE - explicit messages_byname(const char*, size_t __refs = 0) - : messages<_CharT>(__refs) {} - - _LIBCPP_ALWAYS_INLINE - explicit messages_byname(const string&, size_t __refs = 0) - : messages<_CharT>(__refs) {} - -protected: - _LIBCPP_ALWAYS_INLINE - ~messages_byname() {} -}; - -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS messages_byname) -_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS messages_byname) - -template, - class _Byte_alloc = allocator > -class _LIBCPP_TYPE_VIS_ONLY wstring_convert -{ -public: - typedef basic_string, _Byte_alloc> byte_string; - typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string; - typedef typename _Codecvt::state_type state_type; - typedef typename wide_string::traits_type::int_type int_type; - -private: - byte_string __byte_err_string_; - wide_string __wide_err_string_; - _Codecvt* __cvtptr_; - state_type __cvtstate_; - size_t __cvtcount_; - - wstring_convert(const wstring_convert& __wc); - wstring_convert& operator=(const wstring_convert& __wc); -public: - _LIBCPP_EXPLICIT_AFTER_CXX11 wstring_convert(_Codecvt* __pcvt = new _Codecvt); - wstring_convert(_Codecvt* __pcvt, state_type __state); - _LIBCPP_EXPLICIT_AFTER_CXX11 wstring_convert(const byte_string& __byte_err, - const wide_string& __wide_err = wide_string()); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - wstring_convert(wstring_convert&& __wc); -#endif - ~wstring_convert(); - - _LIBCPP_ALWAYS_INLINE - wide_string from_bytes(char __byte) - {return from_bytes(&__byte, &__byte+1);} - _LIBCPP_ALWAYS_INLINE - wide_string from_bytes(const char* __ptr) - {return from_bytes(__ptr, __ptr + char_traits::length(__ptr));} - _LIBCPP_ALWAYS_INLINE - wide_string from_bytes(const byte_string& __str) - {return from_bytes(__str.data(), __str.data() + __str.size());} - wide_string from_bytes(const char* __first, const char* __last); - - _LIBCPP_ALWAYS_INLINE - byte_string to_bytes(_Elem __wchar) - {return to_bytes(&__wchar, &__wchar+1);} - _LIBCPP_ALWAYS_INLINE - byte_string to_bytes(const _Elem* __wptr) - {return to_bytes(__wptr, __wptr + char_traits<_Elem>::length(__wptr));} - _LIBCPP_ALWAYS_INLINE - byte_string to_bytes(const wide_string& __wstr) - {return to_bytes(__wstr.data(), __wstr.data() + __wstr.size());} - byte_string to_bytes(const _Elem* __first, const _Elem* __last); - - _LIBCPP_ALWAYS_INLINE - size_t converted() const _NOEXCEPT {return __cvtcount_;} - _LIBCPP_ALWAYS_INLINE - state_type state() const {return __cvtstate_;} -}; - -template -inline _LIBCPP_ALWAYS_INLINE -wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>:: - wstring_convert(_Codecvt* __pcvt) - : __cvtptr_(__pcvt), __cvtstate_(), __cvtcount_(0) -{ -} - -template -inline _LIBCPP_ALWAYS_INLINE -wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>:: - wstring_convert(_Codecvt* __pcvt, state_type __state) - : __cvtptr_(__pcvt), __cvtstate_(__state), __cvtcount_(0) -{ -} - -template -wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>:: - wstring_convert(const byte_string& __byte_err, const wide_string& __wide_err) - : __byte_err_string_(__byte_err), __wide_err_string_(__wide_err), - __cvtstate_(), __cvtcount_(0) -{ - __cvtptr_ = new _Codecvt; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -inline _LIBCPP_ALWAYS_INLINE -wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>:: - wstring_convert(wstring_convert&& __wc) - : __byte_err_string_(_VSTD::move(__wc.__byte_err_string_)), - __wide_err_string_(_VSTD::move(__wc.__wide_err_string_)), - __cvtptr_(__wc.__cvtptr_), - __cvtstate_(__wc.__cvtstate_), __cvtcount_(__wc.__cvtstate_) -{ - __wc.__cvtptr_ = nullptr; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::~wstring_convert() -{ - delete __cvtptr_; -} - -template -typename wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::wide_string -wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>:: - from_bytes(const char* __frm, const char* __frm_end) -{ - __cvtcount_ = 0; - if (__cvtptr_ != nullptr) - { - wide_string __ws(2*(__frm_end - __frm), _Elem()); - if (__frm != __frm_end) - __ws.resize(__ws.capacity()); - codecvt_base::result __r = codecvt_base::ok; - state_type __st = __cvtstate_; - if (__frm != __frm_end) - { - _Elem* __to = &__ws[0]; - _Elem* __to_end = __to + __ws.size(); - const char* __frm_nxt; - do - { - _Elem* __to_nxt; - __r = __cvtptr_->in(__st, __frm, __frm_end, __frm_nxt, - __to, __to_end, __to_nxt); - __cvtcount_ += __frm_nxt - __frm; - if (__frm_nxt == __frm) - { - __r = codecvt_base::error; - } - else if (__r == codecvt_base::noconv) - { - __ws.resize(__to - &__ws[0]); - // This only gets executed if _Elem is char - __ws.append((const _Elem*)__frm, (const _Elem*)__frm_end); - __frm = __frm_nxt; - __r = codecvt_base::ok; - } - else if (__r == codecvt_base::ok) - { - __ws.resize(__to_nxt - &__ws[0]); - __frm = __frm_nxt; - } - else if (__r == codecvt_base::partial) - { - ptrdiff_t __s = __to_nxt - &__ws[0]; - __ws.resize(2 * __s); - __to = &__ws[0] + __s; - __to_end = &__ws[0] + __ws.size(); - __frm = __frm_nxt; - } - } while (__r == codecvt_base::partial && __frm_nxt < __frm_end); - } - if (__r == codecvt_base::ok) - return __ws; - } -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__wide_err_string_.empty()) - throw range_error("wstring_convert: from_bytes error"); -#endif // _LIBCPP_NO_EXCEPTIONS - return __wide_err_string_; -} - -template -typename wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::byte_string -wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>:: - to_bytes(const _Elem* __frm, const _Elem* __frm_end) -{ - __cvtcount_ = 0; - if (__cvtptr_ != nullptr) - { - byte_string __bs(2*(__frm_end - __frm), char()); - if (__frm != __frm_end) - __bs.resize(__bs.capacity()); - codecvt_base::result __r = codecvt_base::ok; - state_type __st = __cvtstate_; - if (__frm != __frm_end) - { - char* __to = &__bs[0]; - char* __to_end = __to + __bs.size(); - const _Elem* __frm_nxt; - do - { - char* __to_nxt; - __r = __cvtptr_->out(__st, __frm, __frm_end, __frm_nxt, - __to, __to_end, __to_nxt); - __cvtcount_ += __frm_nxt - __frm; - if (__frm_nxt == __frm) - { - __r = codecvt_base::error; - } - else if (__r == codecvt_base::noconv) - { - __bs.resize(__to - &__bs[0]); - // This only gets executed if _Elem is char - __bs.append((const char*)__frm, (const char*)__frm_end); - __frm = __frm_nxt; - __r = codecvt_base::ok; - } - else if (__r == codecvt_base::ok) - { - __bs.resize(__to_nxt - &__bs[0]); - __frm = __frm_nxt; - } - else if (__r == codecvt_base::partial) - { - ptrdiff_t __s = __to_nxt - &__bs[0]; - __bs.resize(2 * __s); - __to = &__bs[0] + __s; - __to_end = &__bs[0] + __bs.size(); - __frm = __frm_nxt; - } - } while (__r == codecvt_base::partial && __frm_nxt < __frm_end); - } - if (__r == codecvt_base::ok) - { - size_t __s = __bs.size(); - __bs.resize(__bs.capacity()); - char* __to = &__bs[0] + __s; - char* __to_end = __to + __bs.size(); - do - { - char* __to_nxt; - __r = __cvtptr_->unshift(__st, __to, __to_end, __to_nxt); - if (__r == codecvt_base::noconv) - { - __bs.resize(__to - &__bs[0]); - __r = codecvt_base::ok; - } - else if (__r == codecvt_base::ok) - { - __bs.resize(__to_nxt - &__bs[0]); - } - else if (__r == codecvt_base::partial) - { - ptrdiff_t __sp = __to_nxt - &__bs[0]; - __bs.resize(2 * __sp); - __to = &__bs[0] + __sp; - __to_end = &__bs[0] + __bs.size(); - } - } while (__r == codecvt_base::partial); - if (__r == codecvt_base::ok) - return __bs; - } - } -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__byte_err_string_.empty()) - throw range_error("wstring_convert: to_bytes error"); -#endif // _LIBCPP_NO_EXCEPTIONS - return __byte_err_string_; -} - -template > -class _LIBCPP_TYPE_VIS_ONLY wbuffer_convert - : public basic_streambuf<_Elem, _Tr> -{ -public: - // types: - typedef _Elem char_type; - typedef _Tr traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; - typedef typename _Codecvt::state_type state_type; - -private: - char* __extbuf_; - const char* __extbufnext_; - const char* __extbufend_; - char __extbuf_min_[8]; - size_t __ebs_; - char_type* __intbuf_; - size_t __ibs_; - streambuf* __bufptr_; - _Codecvt* __cv_; - state_type __st_; - ios_base::openmode __cm_; - bool __owns_eb_; - bool __owns_ib_; - bool __always_noconv_; - - wbuffer_convert(const wbuffer_convert&); - wbuffer_convert& operator=(const wbuffer_convert&); -public: - _LIBCPP_EXPLICIT_AFTER_CXX11 wbuffer_convert(streambuf* __bytebuf = 0, - _Codecvt* __pcvt = new _Codecvt, state_type __state = state_type()); - ~wbuffer_convert(); - - _LIBCPP_INLINE_VISIBILITY - streambuf* rdbuf() const {return __bufptr_;} - _LIBCPP_INLINE_VISIBILITY - streambuf* rdbuf(streambuf* __bytebuf) - { - streambuf* __r = __bufptr_; - __bufptr_ = __bytebuf; - return __r; - } - - _LIBCPP_INLINE_VISIBILITY - state_type state() const {return __st_;} - -protected: - virtual int_type underflow(); - virtual int_type pbackfail(int_type __c = traits_type::eof()); - virtual int_type overflow (int_type __c = traits_type::eof()); - virtual basic_streambuf* setbuf(char_type* __s, - streamsize __n); - virtual pos_type seekoff(off_type __off, ios_base::seekdir __way, - ios_base::openmode __wch = ios_base::in | ios_base::out); - virtual pos_type seekpos(pos_type __sp, - ios_base::openmode __wch = ios_base::in | ios_base::out); - virtual int sync(); - -private: - bool __read_mode(); - void __write_mode(); - wbuffer_convert* __close(); -}; - -template -wbuffer_convert<_Codecvt, _Elem, _Tr>:: - wbuffer_convert(streambuf* __bytebuf, _Codecvt* __pcvt, state_type __state) - : __extbuf_(0), - __extbufnext_(0), - __extbufend_(0), - __ebs_(0), - __intbuf_(0), - __ibs_(0), - __bufptr_(__bytebuf), - __cv_(__pcvt), - __st_(__state), - __cm_(0), - __owns_eb_(false), - __owns_ib_(false), - __always_noconv_(__cv_ ? __cv_->always_noconv() : false) -{ - setbuf(0, 4096); -} - -template -wbuffer_convert<_Codecvt, _Elem, _Tr>::~wbuffer_convert() -{ - __close(); - delete __cv_; - if (__owns_eb_) - delete [] __extbuf_; - if (__owns_ib_) - delete [] __intbuf_; -} - -template -typename wbuffer_convert<_Codecvt, _Elem, _Tr>::int_type -wbuffer_convert<_Codecvt, _Elem, _Tr>::underflow() -{ - if (__cv_ == 0 || __bufptr_ == 0) - return traits_type::eof(); - bool __initial = __read_mode(); - char_type __1buf; - if (this->gptr() == 0) - this->setg(&__1buf, &__1buf+1, &__1buf+1); - const size_t __unget_sz = __initial ? 0 : min((this->egptr() - this->eback()) / 2, 4); - int_type __c = traits_type::eof(); - if (this->gptr() == this->egptr()) - { - memmove(this->eback(), this->egptr() - __unget_sz, __unget_sz * sizeof(char_type)); - if (__always_noconv_) - { - streamsize __nmemb = static_cast(this->egptr() - this->eback() - __unget_sz); - __nmemb = __bufptr_->sgetn((char*)this->eback() + __unget_sz, __nmemb); - if (__nmemb != 0) - { - this->setg(this->eback(), - this->eback() + __unget_sz, - this->eback() + __unget_sz + __nmemb); - __c = *this->gptr(); - } - } - else - { - memmove(__extbuf_, __extbufnext_, __extbufend_ - __extbufnext_); - __extbufnext_ = __extbuf_ + (__extbufend_ - __extbufnext_); - __extbufend_ = __extbuf_ + (__extbuf_ == __extbuf_min_ ? sizeof(__extbuf_min_) : __ebs_); - streamsize __nmemb = _VSTD::min(static_cast(this->egptr() - this->eback() - __unget_sz), - static_cast(__extbufend_ - __extbufnext_)); - codecvt_base::result __r; - state_type __svs = __st_; - streamsize __nr = __bufptr_->sgetn(const_cast(__extbufnext_), __nmemb); - if (__nr != 0) - { - __extbufend_ = __extbufnext_ + __nr; - char_type* __inext; - __r = __cv_->in(__st_, __extbuf_, __extbufend_, __extbufnext_, - this->eback() + __unget_sz, - this->egptr(), __inext); - if (__r == codecvt_base::noconv) - { - this->setg((char_type*)__extbuf_, (char_type*)__extbuf_, (char_type*)__extbufend_); - __c = *this->gptr(); - } - else if (__inext != this->eback() + __unget_sz) - { - this->setg(this->eback(), this->eback() + __unget_sz, __inext); - __c = *this->gptr(); - } - } - } - } - else - __c = *this->gptr(); - if (this->eback() == &__1buf) - this->setg(0, 0, 0); - return __c; -} - -template -typename wbuffer_convert<_Codecvt, _Elem, _Tr>::int_type -wbuffer_convert<_Codecvt, _Elem, _Tr>::pbackfail(int_type __c) -{ - if (__cv_ != 0 && __bufptr_ != 0 && this->eback() < this->gptr()) - { - if (traits_type::eq_int_type(__c, traits_type::eof())) - { - this->gbump(-1); - return traits_type::not_eof(__c); - } - if (traits_type::eq(traits_type::to_char_type(__c), this->gptr()[-1])) - { - this->gbump(-1); - *this->gptr() = traits_type::to_char_type(__c); - return __c; - } - } - return traits_type::eof(); -} - -template -typename wbuffer_convert<_Codecvt, _Elem, _Tr>::int_type -wbuffer_convert<_Codecvt, _Elem, _Tr>::overflow(int_type __c) -{ - if (__cv_ == 0 || __bufptr_ == 0) - return traits_type::eof(); - __write_mode(); - char_type __1buf; - char_type* __pb_save = this->pbase(); - char_type* __epb_save = this->epptr(); - if (!traits_type::eq_int_type(__c, traits_type::eof())) - { - if (this->pptr() == 0) - this->setp(&__1buf, &__1buf+1); - *this->pptr() = traits_type::to_char_type(__c); - this->pbump(1); - } - if (this->pptr() != this->pbase()) - { - if (__always_noconv_) - { - streamsize __nmemb = static_cast(this->pptr() - this->pbase()); - if (__bufptr_->sputn((const char*)this->pbase(), __nmemb) != __nmemb) - return traits_type::eof(); - } - else - { - char* __extbe = __extbuf_; - codecvt_base::result __r; - do - { - const char_type* __e; - __r = __cv_->out(__st_, this->pbase(), this->pptr(), __e, - __extbuf_, __extbuf_ + __ebs_, __extbe); - if (__e == this->pbase()) - return traits_type::eof(); - if (__r == codecvt_base::noconv) - { - streamsize __nmemb = static_cast(this->pptr() - this->pbase()); - if (__bufptr_->sputn((const char*)this->pbase(), __nmemb) != __nmemb) - return traits_type::eof(); - } - else if (__r == codecvt_base::ok || __r == codecvt_base::partial) - { - streamsize __nmemb = static_cast(__extbe - __extbuf_); - if (__bufptr_->sputn(__extbuf_, __nmemb) != __nmemb) - return traits_type::eof(); - if (__r == codecvt_base::partial) - { - this->setp((char_type*)__e, this->pptr()); - this->pbump(this->epptr() - this->pbase()); - } - } - else - return traits_type::eof(); - } while (__r == codecvt_base::partial); - } - this->setp(__pb_save, __epb_save); - } - return traits_type::not_eof(__c); -} - -template -basic_streambuf<_Elem, _Tr>* -wbuffer_convert<_Codecvt, _Elem, _Tr>::setbuf(char_type* __s, streamsize __n) -{ - this->setg(0, 0, 0); - this->setp(0, 0); - if (__owns_eb_) - delete [] __extbuf_; - if (__owns_ib_) - delete [] __intbuf_; - __ebs_ = __n; - if (__ebs_ > sizeof(__extbuf_min_)) - { - if (__always_noconv_ && __s) - { - __extbuf_ = (char*)__s; - __owns_eb_ = false; - } - else - { - __extbuf_ = new char[__ebs_]; - __owns_eb_ = true; - } - } - else - { - __extbuf_ = __extbuf_min_; - __ebs_ = sizeof(__extbuf_min_); - __owns_eb_ = false; - } - if (!__always_noconv_) - { - __ibs_ = max(__n, sizeof(__extbuf_min_)); - if (__s && __ibs_ >= sizeof(__extbuf_min_)) - { - __intbuf_ = __s; - __owns_ib_ = false; - } - else - { - __intbuf_ = new char_type[__ibs_]; - __owns_ib_ = true; - } - } - else - { - __ibs_ = 0; - __intbuf_ = 0; - __owns_ib_ = false; - } - return this; -} - -template -typename wbuffer_convert<_Codecvt, _Elem, _Tr>::pos_type -wbuffer_convert<_Codecvt, _Elem, _Tr>::seekoff(off_type __off, ios_base::seekdir __way, - ios_base::openmode __om) -{ - int __width = __cv_->encoding(); - if (__cv_ == 0 || __bufptr_ == 0 || (__width <= 0 && __off != 0) || sync()) - return pos_type(off_type(-1)); - // __width > 0 || __off == 0 - switch (__way) - { - case ios_base::beg: - break; - case ios_base::cur: - break; - case ios_base::end: - break; - default: - return pos_type(off_type(-1)); - } - pos_type __r = __bufptr_->pubseekoff(__width * __off, __way, __om); - __r.state(__st_); - return __r; -} - -template -typename wbuffer_convert<_Codecvt, _Elem, _Tr>::pos_type -wbuffer_convert<_Codecvt, _Elem, _Tr>::seekpos(pos_type __sp, ios_base::openmode __wch) -{ - if (__cv_ == 0 || __bufptr_ == 0 || sync()) - return pos_type(off_type(-1)); - if (__bufptr_->pubseekpos(__sp, __wch) == pos_type(off_type(-1))) - return pos_type(off_type(-1)); - return __sp; -} - -template -int -wbuffer_convert<_Codecvt, _Elem, _Tr>::sync() -{ - if (__cv_ == 0 || __bufptr_ == 0) - return 0; - if (__cm_ & ios_base::out) - { - if (this->pptr() != this->pbase()) - if (overflow() == traits_type::eof()) - return -1; - codecvt_base::result __r; - do - { - char* __extbe; - __r = __cv_->unshift(__st_, __extbuf_, __extbuf_ + __ebs_, __extbe); - streamsize __nmemb = static_cast(__extbe - __extbuf_); - if (__bufptr_->sputn(__extbuf_, __nmemb) != __nmemb) - return -1; - } while (__r == codecvt_base::partial); - if (__r == codecvt_base::error) - return -1; - if (__bufptr_->pubsync()) - return -1; - } - else if (__cm_ & ios_base::in) - { - off_type __c; - if (__always_noconv_) - __c = this->egptr() - this->gptr(); - else - { - int __width = __cv_->encoding(); - __c = __extbufend_ - __extbufnext_; - if (__width > 0) - __c += __width * (this->egptr() - this->gptr()); - else - { - if (this->gptr() != this->egptr()) - { - reverse(this->gptr(), this->egptr()); - codecvt_base::result __r; - const char_type* __e = this->gptr(); - char* __extbe; - do - { - __r = __cv_->out(__st_, __e, this->egptr(), __e, - __extbuf_, __extbuf_ + __ebs_, __extbe); - switch (__r) - { - case codecvt_base::noconv: - __c += this->egptr() - this->gptr(); - break; - case codecvt_base::ok: - case codecvt_base::partial: - __c += __extbe - __extbuf_; - break; - default: - return -1; - } - } while (__r == codecvt_base::partial); - } - } - } - if (__bufptr_->pubseekoff(-__c, ios_base::cur, __cm_) == pos_type(off_type(-1))) - return -1; - this->setg(0, 0, 0); - __cm_ = 0; - } - return 0; -} - -template -bool -wbuffer_convert<_Codecvt, _Elem, _Tr>::__read_mode() -{ - if (!(__cm_ & ios_base::in)) - { - this->setp(0, 0); - if (__always_noconv_) - this->setg((char_type*)__extbuf_, - (char_type*)__extbuf_ + __ebs_, - (char_type*)__extbuf_ + __ebs_); - else - this->setg(__intbuf_, __intbuf_ + __ibs_, __intbuf_ + __ibs_); - __cm_ = ios_base::in; - return true; - } - return false; -} - -template -void -wbuffer_convert<_Codecvt, _Elem, _Tr>::__write_mode() -{ - if (!(__cm_ & ios_base::out)) - { - this->setg(0, 0, 0); - if (__ebs_ > sizeof(__extbuf_min_)) - { - if (__always_noconv_) - this->setp((char_type*)__extbuf_, - (char_type*)__extbuf_ + (__ebs_ - 1)); - else - this->setp(__intbuf_, __intbuf_ + (__ibs_ - 1)); - } - else - this->setp(0, 0); - __cm_ = ios_base::out; - } -} - -template -wbuffer_convert<_Codecvt, _Elem, _Tr>* -wbuffer_convert<_Codecvt, _Elem, _Tr>::__close() -{ - wbuffer_convert* __rt = 0; - if (__cv_ != 0 && __bufptr_ != 0) - { - __rt = this; - if ((__cm_ & ios_base::out) && sync()) - __rt = 0; - } - return __rt; -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_LOCALE diff --git a/libcxx/include/map b/libcxx/include/map deleted file mode 100644 index c8e8fd1f1..000000000 --- a/libcxx/include/map +++ /dev/null @@ -1,2076 +0,0 @@ -// -*- C++ -*- -//===----------------------------- map ------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_MAP -#define _LIBCPP_MAP - -/* - - map synopsis - -namespace std -{ - -template , - class Allocator = allocator>> -class map -{ -public: - // types: - typedef Key key_type; - typedef T mapped_type; - typedef pair value_type; - typedef Compare key_compare; - typedef Allocator allocator_type; - typedef typename allocator_type::reference reference; - typedef typename allocator_type::const_reference const_reference; - typedef typename allocator_type::pointer pointer; - typedef typename allocator_type::const_pointer const_pointer; - typedef typename allocator_type::size_type size_type; - typedef typename allocator_type::difference_type difference_type; - - typedef implementation-defined iterator; - typedef implementation-defined const_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - class value_compare - : public binary_function - { - friend class map; - protected: - key_compare comp; - - value_compare(key_compare c); - public: - bool operator()(const value_type& x, const value_type& y) const; - }; - - // construct/copy/destroy: - map() - noexcept( - is_nothrow_default_constructible::value && - is_nothrow_default_constructible::value && - is_nothrow_copy_constructible::value); - explicit map(const key_compare& comp); - map(const key_compare& comp, const allocator_type& a); - template - map(InputIterator first, InputIterator last, - const key_compare& comp = key_compare()); - template - map(InputIterator first, InputIterator last, - const key_compare& comp, const allocator_type& a); - map(const map& m); - map(map&& m) - noexcept( - is_nothrow_move_constructible::value && - is_nothrow_move_constructible::value); - explicit map(const allocator_type& a); - map(const map& m, const allocator_type& a); - map(map&& m, const allocator_type& a); - map(initializer_list il, const key_compare& comp = key_compare()); - map(initializer_list il, const key_compare& comp, const allocator_type& a); - template - map(InputIterator first, InputIterator last, const allocator_type& a) - : map(first, last, Compare(), a) {} // C++14 - map(initializer_list il, const allocator_type& a) - : map(il, Compare(), a) {} // C++14 - ~map(); - - map& operator=(const map& m); - map& operator=(map&& m) - noexcept( - allocator_type::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value); - map& operator=(initializer_list il); - - // iterators: - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - reverse_iterator rbegin() noexcept; - const_reverse_iterator rbegin() const noexcept; - reverse_iterator rend() noexcept; - const_reverse_iterator rend() const noexcept; - - const_iterator cbegin() const noexcept; - const_iterator cend() const noexcept; - const_reverse_iterator crbegin() const noexcept; - const_reverse_iterator crend() const noexcept; - - // capacity: - bool empty() const noexcept; - size_type size() const noexcept; - size_type max_size() const noexcept; - - // element access: - mapped_type& operator[](const key_type& k); - mapped_type& operator[](key_type&& k); - - mapped_type& at(const key_type& k); - const mapped_type& at(const key_type& k) const; - - // modifiers: - template - pair emplace(Args&&... args); - template - iterator emplace_hint(const_iterator position, Args&&... args); - pair insert(const value_type& v); - template - pair insert(P&& p); - iterator insert(const_iterator position, const value_type& v); - template - iterator insert(const_iterator position, P&& p); - template - void insert(InputIterator first, InputIterator last); - void insert(initializer_list il); - - iterator erase(const_iterator position); - size_type erase(const key_type& k); - iterator erase(const_iterator first, const_iterator last); - void clear() noexcept; - - void swap(map& m) - noexcept( - __is_nothrow_swappable::value && - (!allocator_type::propagate_on_container_swap::value || - __is_nothrow_swappable::value)); - - // observers: - allocator_type get_allocator() const noexcept; - key_compare key_comp() const; - value_compare value_comp() const; - - // map operations: - iterator find(const key_type& k); - const_iterator find(const key_type& k) const; - template - iterator find(const K& x); // C++14 - template - const_iterator find(const K& x) const; // C++14 - template - size_type count(const K& x) const; // C++14 - - size_type count(const key_type& k) const; - iterator lower_bound(const key_type& k); - const_iterator lower_bound(const key_type& k) const; - template - iterator lower_bound(const K& x); // C++14 - template - const_iterator lower_bound(const K& x) const; // C++14 - - iterator upper_bound(const key_type& k); - const_iterator upper_bound(const key_type& k) const; - template - iterator upper_bound(const K& x); // C++14 - template - const_iterator upper_bound(const K& x) const; // C++14 - - pair equal_range(const key_type& k); - pair equal_range(const key_type& k) const; - template - pair equal_range(const K& x); // C++14 - template - pair equal_range(const K& x) const; // C++14 -}; - -template -bool -operator==(const map& x, - const map& y); - -template -bool -operator< (const map& x, - const map& y); - -template -bool -operator!=(const map& x, - const map& y); - -template -bool -operator> (const map& x, - const map& y); - -template -bool -operator>=(const map& x, - const map& y); - -template -bool -operator<=(const map& x, - const map& y); - -// specialized algorithms: -template -void -swap(map& x, map& y) - noexcept(noexcept(x.swap(y))); - -template , - class Allocator = allocator>> -class multimap -{ -public: - // types: - typedef Key key_type; - typedef T mapped_type; - typedef pair value_type; - typedef Compare key_compare; - typedef Allocator allocator_type; - typedef typename allocator_type::reference reference; - typedef typename allocator_type::const_reference const_reference; - typedef typename allocator_type::size_type size_type; - typedef typename allocator_type::difference_type difference_type; - typedef typename allocator_type::pointer pointer; - typedef typename allocator_type::const_pointer const_pointer; - - typedef implementation-defined iterator; - typedef implementation-defined const_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - class value_compare - : public binary_function - { - friend class multimap; - protected: - key_compare comp; - value_compare(key_compare c); - public: - bool operator()(const value_type& x, const value_type& y) const; - }; - - // construct/copy/destroy: - multimap() - noexcept( - is_nothrow_default_constructible::value && - is_nothrow_default_constructible::value && - is_nothrow_copy_constructible::value); - explicit multimap(const key_compare& comp); - multimap(const key_compare& comp, const allocator_type& a); - template - multimap(InputIterator first, InputIterator last, const key_compare& comp); - template - multimap(InputIterator first, InputIterator last, const key_compare& comp, - const allocator_type& a); - multimap(const multimap& m); - multimap(multimap&& m) - noexcept( - is_nothrow_move_constructible::value && - is_nothrow_move_constructible::value); - explicit multimap(const allocator_type& a); - multimap(const multimap& m, const allocator_type& a); - multimap(multimap&& m, const allocator_type& a); - multimap(initializer_list il, const key_compare& comp = key_compare()); - multimap(initializer_list il, const key_compare& comp, - const allocator_type& a); - template - multimap(InputIterator first, InputIterator last, const allocator_type& a) - : multimap(first, last, Compare(), a) {} // C++14 - multimap(initializer_list il, const allocator_type& a) - : multimap(il, Compare(), a) {} // C++14 - ~multimap(); - - multimap& operator=(const multimap& m); - multimap& operator=(multimap&& m) - noexcept( - allocator_type::propagate_on_container_move_assignment::value && - is_nothrow_move_assignable::value && - is_nothrow_move_assignable::value); - multimap& operator=(initializer_list il); - - // iterators: - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - reverse_iterator rbegin() noexcept; - const_reverse_iterator rbegin() const noexcept; - reverse_iterator rend() noexcept; - const_reverse_iterator rend() const noexcept; - - const_iterator cbegin() const noexcept; - const_iterator cend() const noexcept; - const_reverse_iterator crbegin() const noexcept; - const_reverse_iterator crend() const noexcept; - - // capacity: - bool empty() const noexcept; - size_type size() const noexcept; - size_type max_size() const noexcept; - - // modifiers: - template - iterator emplace(Args&&... args); - template - iterator emplace_hint(const_iterator position, Args&&... args); - iterator insert(const value_type& v); - template - iterator insert(P&& p); - iterator insert(const_iterator position, const value_type& v); - template - iterator insert(const_iterator position, P&& p); - template - void insert(InputIterator first, InputIterator last); - void insert(initializer_list il); - - iterator erase(const_iterator position); - size_type erase(const key_type& k); - iterator erase(const_iterator first, const_iterator last); - void clear() noexcept; - - void swap(multimap& m) - noexcept( - __is_nothrow_swappable::value && - (!allocator_type::propagate_on_container_swap::value || - __is_nothrow_swappable::value)); - - // observers: - allocator_type get_allocator() const noexcept; - key_compare key_comp() const; - value_compare value_comp() const; - - // map operations: - iterator find(const key_type& k); - const_iterator find(const key_type& k) const; - template - iterator find(const K& x); // C++14 - template - const_iterator find(const K& x) const; // C++14 - template - size_type count(const K& x) const; // C++14 - - size_type count(const key_type& k) const; - iterator lower_bound(const key_type& k); - const_iterator lower_bound(const key_type& k) const; - template - iterator lower_bound(const K& x); // C++14 - template - const_iterator lower_bound(const K& x) const; // C++14 - - iterator upper_bound(const key_type& k); - const_iterator upper_bound(const key_type& k) const; - template - iterator upper_bound(const K& x); // C++14 - template - const_iterator upper_bound(const K& x) const; // C++14 - - pair equal_range(const key_type& k); - pair equal_range(const key_type& k) const; - template - pair equal_range(const K& x); // C++14 - template - pair equal_range(const K& x) const; // C++14 -}; - -template -bool -operator==(const multimap& x, - const multimap& y); - -template -bool -operator< (const multimap& x, - const multimap& y); - -template -bool -operator!=(const multimap& x, - const multimap& y); - -template -bool -operator> (const multimap& x, - const multimap& y); - -template -bool -operator>=(const multimap& x, - const multimap& y); - -template -bool -operator<=(const multimap& x, - const multimap& y); - -// specialized algorithms: -template -void -swap(multimap& x, - multimap& y) - noexcept(noexcept(x.swap(y))); - -} // std - -*/ - -#include <__config> -#include <__tree> -#include -#include -#include -#include -#include - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template ::value -#if __has_feature(is_final) - && !__is_final(_Compare) -#endif - > -class __map_value_compare - : private _Compare -{ -public: - _LIBCPP_INLINE_VISIBILITY - __map_value_compare() - _NOEXCEPT_(is_nothrow_default_constructible<_Compare>::value) - : _Compare() {} - _LIBCPP_INLINE_VISIBILITY - __map_value_compare(_Compare c) - _NOEXCEPT_(is_nothrow_copy_constructible<_Compare>::value) - : _Compare(c) {} - _LIBCPP_INLINE_VISIBILITY - const _Compare& key_comp() const _NOEXCEPT {return *this;} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _CP& __x, const _CP& __y) const - {return static_cast(*this)(__x.__cc.first, __y.__cc.first);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _CP& __x, const _Key& __y) const - {return static_cast(*this)(__x.__cc.first, __y);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Key& __x, const _CP& __y) const - {return static_cast(*this)(__x, __y.__cc.first);} - -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type - operator () ( const _K2& __x, const _CP& __y ) const - {return static_cast(*this) (__x, __y.__cc.first);} - - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type - operator () (const _CP& __x, const _K2& __y) const - {return static_cast(*this) (__x.__cc.first, __y);} -#endif -}; - -template -class __map_value_compare<_Key, _CP, _Compare, false> -{ - _Compare comp; - -public: - _LIBCPP_INLINE_VISIBILITY - __map_value_compare() - _NOEXCEPT_(is_nothrow_default_constructible<_Compare>::value) - : comp() {} - _LIBCPP_INLINE_VISIBILITY - __map_value_compare(_Compare c) - _NOEXCEPT_(is_nothrow_copy_constructible<_Compare>::value) - : comp(c) {} - _LIBCPP_INLINE_VISIBILITY - const _Compare& key_comp() const _NOEXCEPT {return comp;} - - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _CP& __x, const _CP& __y) const - {return comp(__x.__cc.first, __y.__cc.first);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _CP& __x, const _Key& __y) const - {return comp(__x.__cc.first, __y);} - _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Key& __x, const _CP& __y) const - {return comp(__x, __y.__cc.first);} - -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type - operator () ( const _K2& __x, const _CP& __y ) const - {return comp (__x, __y.__cc.first);} - - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value, bool>::type - operator () (const _CP& __x, const _K2& __y) const - {return comp (__x.__cc.first, __y);} -#endif -}; - -template -class __map_node_destructor -{ - typedef _Allocator allocator_type; - typedef allocator_traits __alloc_traits; - typedef typename __alloc_traits::value_type::value_type value_type; -public: - typedef typename __alloc_traits::pointer pointer; -private: - typedef typename value_type::value_type::first_type first_type; - typedef typename value_type::value_type::second_type second_type; - - allocator_type& __na_; - - __map_node_destructor& operator=(const __map_node_destructor&); - -public: - bool __first_constructed; - bool __second_constructed; - - _LIBCPP_INLINE_VISIBILITY - explicit __map_node_destructor(allocator_type& __na) _NOEXCEPT - : __na_(__na), - __first_constructed(false), - __second_constructed(false) - {} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - _LIBCPP_INLINE_VISIBILITY - __map_node_destructor(__tree_node_destructor&& __x) _NOEXCEPT - : __na_(__x.__na_), - __first_constructed(__x.__value_constructed), - __second_constructed(__x.__value_constructed) - { - __x.__value_constructed = false; - } -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - _LIBCPP_INLINE_VISIBILITY - void operator()(pointer __p) _NOEXCEPT - { - if (__second_constructed) - __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_.__cc.second)); - if (__first_constructed) - __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_.__cc.first)); - if (__p) - __alloc_traits::deallocate(__na_, __p, 1); - } -}; - -template - class map; -template - class multimap; -template class __map_const_iterator; - -#if __cplusplus >= 201103L - -template -union __value_type -{ - typedef _Key key_type; - typedef _Tp mapped_type; - typedef pair value_type; - typedef pair __nc_value_type; - - value_type __cc; - __nc_value_type __nc; - - template - _LIBCPP_INLINE_VISIBILITY - __value_type(_Args&& ...__args) - : __cc(std::forward<_Args>(__args)...) {} - - _LIBCPP_INLINE_VISIBILITY - __value_type(const __value_type& __v) - : __cc(__v.__cc) {} - - _LIBCPP_INLINE_VISIBILITY - __value_type(__value_type& __v) - : __cc(__v.__cc) {} - - _LIBCPP_INLINE_VISIBILITY - __value_type(__value_type&& __v) - : __nc(std::move(__v.__nc)) {} - - _LIBCPP_INLINE_VISIBILITY - __value_type& operator=(const __value_type& __v) - {__nc = __v.__cc; return *this;} - - _LIBCPP_INLINE_VISIBILITY - __value_type& operator=(__value_type&& __v) - {__nc = std::move(__v.__nc); return *this;} - - _LIBCPP_INLINE_VISIBILITY - ~__value_type() {__cc.~value_type();} -}; - -#else - -template -struct __value_type -{ - typedef _Key key_type; - typedef _Tp mapped_type; - typedef pair value_type; - - value_type __cc; - - _LIBCPP_INLINE_VISIBILITY - __value_type() {} - - template - _LIBCPP_INLINE_VISIBILITY - __value_type(const _A0& __a0) - : __cc(__a0) {} - - template - _LIBCPP_INLINE_VISIBILITY - __value_type(const _A0& __a0, const _A1& __a1) - : __cc(__a0, __a1) {} -}; - -#endif - -template -struct __extract_key_value_types; - -template -struct __extract_key_value_types<__value_type<_Key, _Tp> > -{ - typedef _Key const __key_type; - typedef _Tp __mapped_type; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __map_iterator -{ - _TreeIterator __i_; - - typedef typename _TreeIterator::__pointer_traits __pointer_traits; - typedef typename _TreeIterator::value_type __value_type; - typedef typename __extract_key_value_types<__value_type>::__key_type __key_type; - typedef typename __extract_key_value_types<__value_type>::__mapped_type __mapped_type; -public: - typedef bidirectional_iterator_tag iterator_category; - typedef pair<__key_type, __mapped_type> value_type; - typedef typename _TreeIterator::difference_type difference_type; - typedef value_type& reference; - typedef typename __pointer_traits::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY - __map_iterator() _NOEXCEPT {} - - _LIBCPP_INLINE_VISIBILITY - __map_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {} - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const {return __i_->__cc;} - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const {return pointer_traits::pointer_to(__i_->__cc);} - - _LIBCPP_INLINE_VISIBILITY - __map_iterator& operator++() {++__i_; return *this;} - _LIBCPP_INLINE_VISIBILITY - __map_iterator operator++(int) - { - __map_iterator __t(*this); - ++(*this); - return __t; - } - - _LIBCPP_INLINE_VISIBILITY - __map_iterator& operator--() {--__i_; return *this;} - _LIBCPP_INLINE_VISIBILITY - __map_iterator operator--(int) - { - __map_iterator __t(*this); - --(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __map_iterator& __x, const __map_iterator& __y) - {return __x.__i_ == __y.__i_;} - friend - _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __map_iterator& __x, const __map_iterator& __y) - {return __x.__i_ != __y.__i_;} - - template friend class _LIBCPP_TYPE_VIS_ONLY map; - template friend class _LIBCPP_TYPE_VIS_ONLY multimap; - template friend class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator; -}; - -template -class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator -{ - _TreeIterator __i_; - - typedef typename _TreeIterator::__pointer_traits __pointer_traits; - typedef typename _TreeIterator::value_type __value_type; - typedef typename __extract_key_value_types<__value_type>::__key_type __key_type; - typedef typename __extract_key_value_types<__value_type>::__mapped_type __mapped_type; -public: - typedef bidirectional_iterator_tag iterator_category; - typedef pair<__key_type, __mapped_type> value_type; - typedef typename _TreeIterator::difference_type difference_type; - typedef const value_type& reference; - typedef typename __pointer_traits::template -#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES - rebind -#else - rebind::other -#endif - pointer; - - _LIBCPP_INLINE_VISIBILITY - __map_const_iterator() _NOEXCEPT {} - - _LIBCPP_INLINE_VISIBILITY - __map_const_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {} - _LIBCPP_INLINE_VISIBILITY - __map_const_iterator(__map_iterator< - typename _TreeIterator::__non_const_iterator> __i) _NOEXCEPT - : __i_(__i.__i_) {} - - _LIBCPP_INLINE_VISIBILITY - reference operator*() const {return __i_->__cc;} - _LIBCPP_INLINE_VISIBILITY - pointer operator->() const {return pointer_traits::pointer_to(__i_->__cc);} - - _LIBCPP_INLINE_VISIBILITY - __map_const_iterator& operator++() {++__i_; return *this;} - _LIBCPP_INLINE_VISIBILITY - __map_const_iterator operator++(int) - { - __map_const_iterator __t(*this); - ++(*this); - return __t; - } - - _LIBCPP_INLINE_VISIBILITY - __map_const_iterator& operator--() {--__i_; return *this;} - _LIBCPP_INLINE_VISIBILITY - __map_const_iterator operator--(int) - { - __map_const_iterator __t(*this); - --(*this); - return __t; - } - - friend _LIBCPP_INLINE_VISIBILITY - bool operator==(const __map_const_iterator& __x, const __map_const_iterator& __y) - {return __x.__i_ == __y.__i_;} - friend _LIBCPP_INLINE_VISIBILITY - bool operator!=(const __map_const_iterator& __x, const __map_const_iterator& __y) - {return __x.__i_ != __y.__i_;} - - template friend class _LIBCPP_TYPE_VIS_ONLY map; - template friend class _LIBCPP_TYPE_VIS_ONLY multimap; - template friend class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator; -}; - -template , - class _Allocator = allocator > > -class _LIBCPP_TYPE_VIS_ONLY map -{ -public: - // types: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef pair value_type; - typedef pair __nc_value_type; - typedef _Compare key_compare; - typedef _Allocator allocator_type; - typedef value_type& reference; - typedef const value_type& const_reference; - - class _LIBCPP_TYPE_VIS_ONLY value_compare - : public binary_function - { - friend class map; - protected: - key_compare comp; - - _LIBCPP_INLINE_VISIBILITY value_compare(key_compare c) : comp(c) {} - public: - _LIBCPP_INLINE_VISIBILITY - bool operator()(const value_type& __x, const value_type& __y) const - {return comp(__x.first, __y.first);} - }; - -private: - - typedef _VSTD::__value_type __value_type; - typedef __map_value_compare __vc; - typedef typename __rebind_alloc_helper, - __value_type>::type __allocator_type; - typedef __tree<__value_type, __vc, __allocator_type> __base; - typedef typename __base::__node_traits __node_traits; - typedef allocator_traits __alloc_traits; - - __base __tree_; - -public: - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; - typedef typename __alloc_traits::size_type size_type; - typedef typename __alloc_traits::difference_type difference_type; - typedef __map_iterator iterator; - typedef __map_const_iterator const_iterator; - typedef _VSTD::reverse_iterator reverse_iterator; - typedef _VSTD::reverse_iterator const_reverse_iterator; - - _LIBCPP_INLINE_VISIBILITY - map() - _NOEXCEPT_( - is_nothrow_default_constructible::value && - is_nothrow_default_constructible::value && - is_nothrow_copy_constructible::value) - : __tree_(__vc(key_compare())) {} - - _LIBCPP_INLINE_VISIBILITY - explicit map(const key_compare& __comp) - _NOEXCEPT_( - is_nothrow_default_constructible::value && - is_nothrow_copy_constructible::value) - : __tree_(__vc(__comp)) {} - - _LIBCPP_INLINE_VISIBILITY - explicit map(const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) {} - - template - _LIBCPP_INLINE_VISIBILITY - map(_InputIterator __f, _InputIterator __l, - const key_compare& __comp = key_compare()) - : __tree_(__vc(__comp)) - { - insert(__f, __l); - } - - template - _LIBCPP_INLINE_VISIBILITY - map(_InputIterator __f, _InputIterator __l, - const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) - { - insert(__f, __l); - } - -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - map(_InputIterator __f, _InputIterator __l, const allocator_type& __a) - : map(__f, __l, key_compare(), __a) {} -#endif - - _LIBCPP_INLINE_VISIBILITY - map(const map& __m) - : __tree_(__m.__tree_) - { - insert(__m.begin(), __m.end()); - } - - _LIBCPP_INLINE_VISIBILITY - map& operator=(const map& __m) - { -#if __cplusplus >= 201103L - __tree_ = __m.__tree_; -#else - if (this != &__m) { - __tree_.clear(); - __tree_.value_comp() = __m.__tree_.value_comp(); - __tree_.__copy_assign_alloc(__m.__tree_); - insert(__m.begin(), __m.end()); - } -#endif - return *this; - } - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - _LIBCPP_INLINE_VISIBILITY - map(map&& __m) - _NOEXCEPT_(is_nothrow_move_constructible<__base>::value) - : __tree_(_VSTD::move(__m.__tree_)) - { - } - - map(map&& __m, const allocator_type& __a); - - _LIBCPP_INLINE_VISIBILITY - map& operator=(map&& __m) - _NOEXCEPT_(is_nothrow_move_assignable<__base>::value) - { - __tree_ = _VSTD::move(__m.__tree_); - return *this; - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - map(initializer_list __il, const key_compare& __comp = key_compare()) - : __tree_(__vc(__comp)) - { - insert(__il.begin(), __il.end()); - } - - _LIBCPP_INLINE_VISIBILITY - map(initializer_list __il, const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) - { - insert(__il.begin(), __il.end()); - } - -#if _LIBCPP_STD_VER > 11 - _LIBCPP_INLINE_VISIBILITY - map(initializer_list __il, const allocator_type& __a) - : map(__il, key_compare(), __a) {} -#endif - - _LIBCPP_INLINE_VISIBILITY - map& operator=(initializer_list __il) - { - __tree_.__assign_unique(__il.begin(), __il.end()); - return *this; - } - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - explicit map(const allocator_type& __a) - : __tree_(__a) - { - } - - _LIBCPP_INLINE_VISIBILITY - map(const map& __m, const allocator_type& __a) - : __tree_(__m.__tree_.value_comp(), __a) - { - insert(__m.begin(), __m.end()); - } - - _LIBCPP_INLINE_VISIBILITY - iterator begin() _NOEXCEPT {return __tree_.begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT {return __tree_.begin();} - _LIBCPP_INLINE_VISIBILITY - iterator end() _NOEXCEPT {return __tree_.end();} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT {return __tree_.end();} - - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rbegin() _NOEXCEPT {return reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rbegin() const _NOEXCEPT - {return const_reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rend() _NOEXCEPT - {return reverse_iterator(begin());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rend() const _NOEXCEPT - {return const_reverse_iterator(begin());} - - _LIBCPP_INLINE_VISIBILITY - const_iterator cbegin() const _NOEXCEPT {return begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator cend() const _NOEXCEPT {return end();} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crbegin() const _NOEXCEPT {return rbegin();} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crend() const _NOEXCEPT {return rend();} - - _LIBCPP_INLINE_VISIBILITY - bool empty() const _NOEXCEPT {return __tree_.size() == 0;} - _LIBCPP_INLINE_VISIBILITY - size_type size() const _NOEXCEPT {return __tree_.size();} - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const _NOEXCEPT {return __tree_.max_size();} - - mapped_type& operator[](const key_type& __k); -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - mapped_type& operator[](key_type&& __k); -#endif - - mapped_type& at(const key_type& __k); - const mapped_type& at(const key_type& __k) const; - - _LIBCPP_INLINE_VISIBILITY - allocator_type get_allocator() const _NOEXCEPT {return __tree_.__alloc();} - _LIBCPP_INLINE_VISIBILITY - key_compare key_comp() const {return __tree_.value_comp().key_comp();} - _LIBCPP_INLINE_VISIBILITY - value_compare value_comp() const {return value_compare(__tree_.value_comp().key_comp());} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - - template - pair - emplace(_Args&& ...__args); - - template - iterator - emplace_hint(const_iterator __p, _Args&& ...__args); - -#endif // _LIBCPP_HAS_NO_VARIADICS - - template ::value>::type> - _LIBCPP_INLINE_VISIBILITY - pair insert(_Pp&& __p) - {return __tree_.__insert_unique(_VSTD::forward<_Pp>(__p));} - - template ::value>::type> - _LIBCPP_INLINE_VISIBILITY - iterator insert(const_iterator __pos, _Pp&& __p) - {return __tree_.__insert_unique(__pos.__i_, _VSTD::forward<_Pp>(__p));} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - _LIBCPP_INLINE_VISIBILITY - pair - insert(const value_type& __v) {return __tree_.__insert_unique(__v);} - - _LIBCPP_INLINE_VISIBILITY - iterator - insert(const_iterator __p, const value_type& __v) - {return __tree_.__insert_unique(__p.__i_, __v);} - - template - _LIBCPP_INLINE_VISIBILITY - void insert(_InputIterator __f, _InputIterator __l) - { - for (const_iterator __e = cend(); __f != __l; ++__f) - insert(__e.__i_, *__f); - } - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - void insert(initializer_list __il) - {insert(__il.begin(), __il.end());} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - iterator erase(const_iterator __p) {return __tree_.erase(__p.__i_);} - _LIBCPP_INLINE_VISIBILITY - size_type erase(const key_type& __k) - {return __tree_.__erase_unique(__k);} - _LIBCPP_INLINE_VISIBILITY - iterator erase(const_iterator __f, const_iterator __l) - {return __tree_.erase(__f.__i_, __l.__i_);} - _LIBCPP_INLINE_VISIBILITY - void clear() _NOEXCEPT {__tree_.clear();} - - _LIBCPP_INLINE_VISIBILITY - void swap(map& __m) - _NOEXCEPT_(__is_nothrow_swappable<__base>::value) - {__tree_.swap(__m.__tree_);} - - _LIBCPP_INLINE_VISIBILITY - iterator find(const key_type& __k) {return __tree_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator find(const key_type& __k) const {return __tree_.find(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type - find(const _K2& __k) {return __tree_.find(__k);} - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type - find(const _K2& __k) const {return __tree_.find(__k);} -#endif - - _LIBCPP_INLINE_VISIBILITY - size_type count(const key_type& __k) const - {return __tree_.__count_unique(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,size_type>::type - count(const _K2& __k) {return __tree_.__count_unique(__k);} -#endif - _LIBCPP_INLINE_VISIBILITY - iterator lower_bound(const key_type& __k) - {return __tree_.lower_bound(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator lower_bound(const key_type& __k) const - {return __tree_.lower_bound(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type - lower_bound(const _K2& __k) {return __tree_.lower_bound(__k);} - - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type - lower_bound(const _K2& __k) const {return __tree_.lower_bound(__k);} -#endif - - _LIBCPP_INLINE_VISIBILITY - iterator upper_bound(const key_type& __k) - {return __tree_.upper_bound(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator upper_bound(const key_type& __k) const - {return __tree_.upper_bound(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type - upper_bound(const _K2& __k) {return __tree_.upper_bound(__k);} - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type - upper_bound(const _K2& __k) const {return __tree_.upper_bound(__k);} -#endif - - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) - {return __tree_.__equal_range_unique(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) const - {return __tree_.__equal_range_unique(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,pair>::type - equal_range(const _K2& __k) {return __tree_.__equal_range_unique(__k);} - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,pair>::type - equal_range(const _K2& __k) const {return __tree_.__equal_range_unique(__k);} -#endif - -private: - typedef typename __base::__node __node; - typedef typename __base::__node_allocator __node_allocator; - typedef typename __base::__node_pointer __node_pointer; - typedef typename __base::__node_const_pointer __node_const_pointer; - typedef typename __base::__node_base_pointer __node_base_pointer; - typedef typename __base::__node_base_const_pointer __node_base_const_pointer; - typedef __map_node_destructor<__node_allocator> _Dp; - typedef unique_ptr<__node, _Dp> __node_holder; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - __node_holder __construct_node(); - template - __node_holder __construct_node(_A0&& __a0); - __node_holder __construct_node_with_key(key_type&& __k); -#ifndef _LIBCPP_HAS_NO_VARIADICS - template - __node_holder __construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args); -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif - __node_holder __construct_node_with_key(const key_type& __k); - - __node_base_pointer& - __find_equal_key(__node_base_pointer& __parent, const key_type& __k); - __node_base_const_pointer - __find_equal_key(__node_base_const_pointer& __parent, const key_type& __k) const; -}; - -// Find place to insert if __k doesn't exist -// Set __parent to parent of null leaf -// Return reference to null leaf -// If __k exists, set parent to node of __k and return reference to node of __k -template -typename map<_Key, _Tp, _Compare, _Allocator>::__node_base_pointer& -map<_Key, _Tp, _Compare, _Allocator>::__find_equal_key(__node_base_pointer& __parent, - const key_type& __k) -{ - __node_pointer __nd = __tree_.__root(); - if (__nd != nullptr) - { - while (true) - { - if (__tree_.value_comp().key_comp()(__k, __nd->__value_.__cc.first)) - { - if (__nd->__left_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__left_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent->__left_; - } - } - else if (__tree_.value_comp().key_comp()(__nd->__value_.__cc.first, __k)) - { - if (__nd->__right_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__right_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent->__right_; - } - } - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent; - } - } - } - __parent = static_cast<__node_base_pointer>(__tree_.__end_node()); - return __parent->__left_; -} - -// Find __k -// Set __parent to parent of null leaf and -// return reference to null leaf iv __k does not exist. -// If __k exists, set parent to node of __k and return reference to node of __k -template -typename map<_Key, _Tp, _Compare, _Allocator>::__node_base_const_pointer -map<_Key, _Tp, _Compare, _Allocator>::__find_equal_key(__node_base_const_pointer& __parent, - const key_type& __k) const -{ - __node_const_pointer __nd = __tree_.__root(); - if (__nd != nullptr) - { - while (true) - { - if (__tree_.value_comp().key_comp()(__k, __nd->__value_.__cc.first)) - { - if (__nd->__left_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__left_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return const_cast(__parent->__left_); - } - } - else if (__tree_.value_comp().key_comp()(__nd->__value_.__cc.first, __k)) - { - if (__nd->__right_ != nullptr) - __nd = static_cast<__node_pointer>(__nd->__right_); - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return const_cast(__parent->__right_); - } - } - else - { - __parent = static_cast<__node_base_pointer>(__nd); - return __parent; - } - } - } - __parent = static_cast<__node_base_pointer>(__tree_.__end_node()); - return const_cast(__parent->__left_); -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -map<_Key, _Tp, _Compare, _Allocator>::map(map&& __m, const allocator_type& __a) - : __tree_(_VSTD::move(__m.__tree_), __a) -{ - if (__a != __m.get_allocator()) - { - const_iterator __e = cend(); - while (!__m.empty()) - __tree_.__insert_unique(__e.__i_, - _VSTD::move(__m.__tree_.remove(__m.begin().__i_)->__value_)); - } -} - -template -typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder -map<_Key, _Tp, _Compare, _Allocator>::__construct_node() -{ - __node_allocator& __na = __tree_.__node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.first)); - __h.get_deleter().__first_constructed = true; - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.second)); - __h.get_deleter().__second_constructed = true; - return __h; -} - -template -template -typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder -map<_Key, _Tp, _Compare, _Allocator>::__construct_node(_A0&& __a0) -{ - __node_allocator& __na = __tree_.__node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), _VSTD::forward<_A0>(__a0)); - __h.get_deleter().__first_constructed = true; - __h.get_deleter().__second_constructed = true; - return __h; -} - -template -typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder -map<_Key, _Tp, _Compare, _Allocator>::__construct_node_with_key(key_type&& __k) -{ - __node_allocator& __na = __tree_.__node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.first), _VSTD::move(__k)); - __h.get_deleter().__first_constructed = true; - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.second)); - __h.get_deleter().__second_constructed = true; - return __h; -} - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder -map<_Key, _Tp, _Compare, _Allocator>::__construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args) -{ - __node_allocator& __na = __tree_.__node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), - _VSTD::forward<_A0>(__a0), _VSTD::forward<_A1>(__a1), - _VSTD::forward<_Args>(__args)...); - __h.get_deleter().__first_constructed = true; - __h.get_deleter().__second_constructed = true; - return __h; -} - -#endif // _LIBCPP_HAS_NO_VARIADICS - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -typename map<_Key, _Tp, _Compare, _Allocator>::__node_holder -map<_Key, _Tp, _Compare, _Allocator>::__construct_node_with_key(const key_type& __k) -{ - __node_allocator& __na = __tree_.__node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.first), __k); - __h.get_deleter().__first_constructed = true; - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.second)); - __h.get_deleter().__second_constructed = true; - return _VSTD::move(__h); // explicitly moved for C++03 -} - -template -_Tp& -map<_Key, _Tp, _Compare, _Allocator>::operator[](const key_type& __k) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_equal_key(__parent, __k); - __node_pointer __r = static_cast<__node_pointer>(__child); - if (__child == nullptr) - { - __node_holder __h = __construct_node_with_key(__k); - __tree_.__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - __r = __h.release(); - } - return __r->__value_.__cc.second; -} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -_Tp& -map<_Key, _Tp, _Compare, _Allocator>::operator[](key_type&& __k) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_equal_key(__parent, __k); - __node_pointer __r = static_cast<__node_pointer>(__child); - if (__child == nullptr) - { - __node_holder __h = __construct_node_with_key(_VSTD::move(__k)); - __tree_.__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); - __r = __h.release(); - } - return __r->__value_.__cc.second; -} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -_Tp& -map<_Key, _Tp, _Compare, _Allocator>::at(const key_type& __k) -{ - __node_base_pointer __parent; - __node_base_pointer& __child = __find_equal_key(__parent, __k); -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__child == nullptr) - throw out_of_range("map::at: key not found"); -#endif // _LIBCPP_NO_EXCEPTIONS - return static_cast<__node_pointer>(__child)->__value_.__cc.second; -} - -template -const _Tp& -map<_Key, _Tp, _Compare, _Allocator>::at(const key_type& __k) const -{ - __node_base_const_pointer __parent; - __node_base_const_pointer __child = __find_equal_key(__parent, __k); -#ifndef _LIBCPP_NO_EXCEPTIONS - if (__child == nullptr) - throw out_of_range("map::at: key not found"); -#endif // _LIBCPP_NO_EXCEPTIONS - return static_cast<__node_const_pointer>(__child)->__value_.__cc.second; -} - -#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - -template -template -pair::iterator, bool> -map<_Key, _Tp, _Compare, _Allocator>::emplace(_Args&& ...__args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - pair __r = __tree_.__node_insert_unique(__h.get()); - if (__r.second) - __h.release(); - return __r; -} - -template -template -typename map<_Key, _Tp, _Compare, _Allocator>::iterator -map<_Key, _Tp, _Compare, _Allocator>::emplace_hint(const_iterator __p, - _Args&& ...__args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - iterator __r = __tree_.__node_insert_unique(__p.__i_, __h.get()); - if (__r.__i_.__ptr_ == __h.get()) - __h.release(); - return __r; -} - -#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const map<_Key, _Tp, _Compare, _Allocator>& __x, - const map<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return __x.size() == __y.size() && _VSTD::equal(__x.begin(), __x.end(), __y.begin()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator< (const map<_Key, _Tp, _Compare, _Allocator>& __x, - const map<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return _VSTD::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __x, - const map<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator> (const map<_Key, _Tp, _Compare, _Allocator>& __x, - const map<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __x, - const map<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return !(__x < __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __x, - const map<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(map<_Key, _Tp, _Compare, _Allocator>& __x, - map<_Key, _Tp, _Compare, _Allocator>& __y) - _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) -{ - __x.swap(__y); -} - -template , - class _Allocator = allocator > > -class _LIBCPP_TYPE_VIS_ONLY multimap -{ -public: - // types: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef pair value_type; - typedef pair __nc_value_type; - typedef _Compare key_compare; - typedef _Allocator allocator_type; - typedef value_type& reference; - typedef const value_type& const_reference; - - class _LIBCPP_TYPE_VIS_ONLY value_compare - : public binary_function - { - friend class multimap; - protected: - key_compare comp; - - _LIBCPP_INLINE_VISIBILITY - value_compare(key_compare c) : comp(c) {} - public: - _LIBCPP_INLINE_VISIBILITY - bool operator()(const value_type& __x, const value_type& __y) const - {return comp(__x.first, __y.first);} - }; - -private: - - typedef _VSTD::__value_type __value_type; - typedef __map_value_compare __vc; - typedef typename __rebind_alloc_helper, - __value_type>::type __allocator_type; - typedef __tree<__value_type, __vc, __allocator_type> __base; - typedef typename __base::__node_traits __node_traits; - typedef allocator_traits __alloc_traits; - - __base __tree_; - -public: - typedef typename __alloc_traits::pointer pointer; - typedef typename __alloc_traits::const_pointer const_pointer; - typedef typename __alloc_traits::size_type size_type; - typedef typename __alloc_traits::difference_type difference_type; - typedef __map_iterator iterator; - typedef __map_const_iterator const_iterator; - typedef _VSTD::reverse_iterator reverse_iterator; - typedef _VSTD::reverse_iterator const_reverse_iterator; - - _LIBCPP_INLINE_VISIBILITY - multimap() - _NOEXCEPT_( - is_nothrow_default_constructible::value && - is_nothrow_default_constructible::value && - is_nothrow_copy_constructible::value) - : __tree_(__vc(key_compare())) {} - - _LIBCPP_INLINE_VISIBILITY - explicit multimap(const key_compare& __comp) - _NOEXCEPT_( - is_nothrow_default_constructible::value && - is_nothrow_copy_constructible::value) - : __tree_(__vc(__comp)) {} - - _LIBCPP_INLINE_VISIBILITY - explicit multimap(const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) {} - - template - _LIBCPP_INLINE_VISIBILITY - multimap(_InputIterator __f, _InputIterator __l, - const key_compare& __comp = key_compare()) - : __tree_(__vc(__comp)) - { - insert(__f, __l); - } - - template - _LIBCPP_INLINE_VISIBILITY - multimap(_InputIterator __f, _InputIterator __l, - const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) - { - insert(__f, __l); - } - -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - multimap(_InputIterator __f, _InputIterator __l, const allocator_type& __a) - : multimap(__f, __l, key_compare(), __a) {} -#endif - - _LIBCPP_INLINE_VISIBILITY - multimap(const multimap& __m) - : __tree_(__m.__tree_.value_comp(), - __alloc_traits::select_on_container_copy_construction(__m.__tree_.__alloc())) - { - insert(__m.begin(), __m.end()); - } - - _LIBCPP_INLINE_VISIBILITY - multimap& operator=(const multimap& __m) - { -#if __cplusplus >= 201103L - __tree_ = __m.__tree_; -#else - if (this != &__m) { - __tree_.clear(); - __tree_.value_comp() = __m.__tree_.value_comp(); - __tree_.__copy_assign_alloc(__m.__tree_); - insert(__m.begin(), __m.end()); - } -#endif - return *this; - } - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - - _LIBCPP_INLINE_VISIBILITY - multimap(multimap&& __m) - _NOEXCEPT_(is_nothrow_move_constructible<__base>::value) - : __tree_(_VSTD::move(__m.__tree_)) - { - } - - multimap(multimap&& __m, const allocator_type& __a); - - _LIBCPP_INLINE_VISIBILITY - multimap& operator=(multimap&& __m) - _NOEXCEPT_(is_nothrow_move_assignable<__base>::value) - { - __tree_ = _VSTD::move(__m.__tree_); - return *this; - } - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - multimap(initializer_list __il, const key_compare& __comp = key_compare()) - : __tree_(__vc(__comp)) - { - insert(__il.begin(), __il.end()); - } - - _LIBCPP_INLINE_VISIBILITY - multimap(initializer_list __il, const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) - { - insert(__il.begin(), __il.end()); - } - -#if _LIBCPP_STD_VER > 11 - _LIBCPP_INLINE_VISIBILITY - multimap(initializer_list __il, const allocator_type& __a) - : multimap(__il, key_compare(), __a) {} -#endif - - _LIBCPP_INLINE_VISIBILITY - multimap& operator=(initializer_list __il) - { - __tree_.__assign_multi(__il.begin(), __il.end()); - return *this; - } - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - explicit multimap(const allocator_type& __a) - : __tree_(__a) - { - } - - _LIBCPP_INLINE_VISIBILITY - multimap(const multimap& __m, const allocator_type& __a) - : __tree_(__m.__tree_.value_comp(), __a) - { - insert(__m.begin(), __m.end()); - } - - _LIBCPP_INLINE_VISIBILITY - iterator begin() _NOEXCEPT {return __tree_.begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator begin() const _NOEXCEPT {return __tree_.begin();} - _LIBCPP_INLINE_VISIBILITY - iterator end() _NOEXCEPT {return __tree_.end();} - _LIBCPP_INLINE_VISIBILITY - const_iterator end() const _NOEXCEPT {return __tree_.end();} - - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rbegin() _NOEXCEPT {return reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rbegin() const _NOEXCEPT - {return const_reverse_iterator(end());} - _LIBCPP_INLINE_VISIBILITY - reverse_iterator rend() _NOEXCEPT {return reverse_iterator(begin());} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator rend() const _NOEXCEPT - {return const_reverse_iterator(begin());} - - _LIBCPP_INLINE_VISIBILITY - const_iterator cbegin() const _NOEXCEPT {return begin();} - _LIBCPP_INLINE_VISIBILITY - const_iterator cend() const _NOEXCEPT {return end();} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crbegin() const _NOEXCEPT {return rbegin();} - _LIBCPP_INLINE_VISIBILITY - const_reverse_iterator crend() const _NOEXCEPT {return rend();} - - _LIBCPP_INLINE_VISIBILITY - bool empty() const _NOEXCEPT {return __tree_.size() == 0;} - _LIBCPP_INLINE_VISIBILITY - size_type size() const _NOEXCEPT {return __tree_.size();} - _LIBCPP_INLINE_VISIBILITY - size_type max_size() const _NOEXCEPT {return __tree_.max_size();} - - _LIBCPP_INLINE_VISIBILITY - allocator_type get_allocator() const _NOEXCEPT {return __tree_.__alloc();} - _LIBCPP_INLINE_VISIBILITY - key_compare key_comp() const {return __tree_.value_comp().key_comp();} - _LIBCPP_INLINE_VISIBILITY - value_compare value_comp() const - {return value_compare(__tree_.value_comp().key_comp());} - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES -#ifndef _LIBCPP_HAS_NO_VARIADICS - - template - iterator - emplace(_Args&& ...__args); - - template - iterator - emplace_hint(const_iterator __p, _Args&& ...__args); - -#endif // _LIBCPP_HAS_NO_VARIADICS - - template ::value>::type> - _LIBCPP_INLINE_VISIBILITY - iterator insert(_Pp&& __p) - {return __tree_.__insert_multi(_VSTD::forward<_Pp>(__p));} - - template ::value>::type> - _LIBCPP_INLINE_VISIBILITY - iterator insert(const_iterator __pos, _Pp&& __p) - {return __tree_.__insert_multi(__pos.__i_, _VSTD::forward<_Pp>(__p));} - -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - - _LIBCPP_INLINE_VISIBILITY - iterator insert(const value_type& __v) {return __tree_.__insert_multi(__v);} - - _LIBCPP_INLINE_VISIBILITY - iterator insert(const_iterator __p, const value_type& __v) - {return __tree_.__insert_multi(__p.__i_, __v);} - - template - _LIBCPP_INLINE_VISIBILITY - void insert(_InputIterator __f, _InputIterator __l) - { - for (const_iterator __e = cend(); __f != __l; ++__f) - __tree_.__insert_multi(__e.__i_, *__f); - } - -#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - void insert(initializer_list __il) - {insert(__il.begin(), __il.end());} - -#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS - - _LIBCPP_INLINE_VISIBILITY - iterator erase(const_iterator __p) {return __tree_.erase(__p.__i_);} - _LIBCPP_INLINE_VISIBILITY - size_type erase(const key_type& __k) {return __tree_.__erase_multi(__k);} - _LIBCPP_INLINE_VISIBILITY - iterator erase(const_iterator __f, const_iterator __l) - {return __tree_.erase(__f.__i_, __l.__i_);} - _LIBCPP_INLINE_VISIBILITY - void clear() {__tree_.clear();} - - _LIBCPP_INLINE_VISIBILITY - void swap(multimap& __m) - _NOEXCEPT_(__is_nothrow_swappable<__base>::value) - {__tree_.swap(__m.__tree_);} - - _LIBCPP_INLINE_VISIBILITY - iterator find(const key_type& __k) {return __tree_.find(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator find(const key_type& __k) const {return __tree_.find(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type - find(const _K2& __k) {return __tree_.find(__k);} - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type - find(const _K2& __k) const {return __tree_.find(__k);} -#endif - - _LIBCPP_INLINE_VISIBILITY - size_type count(const key_type& __k) const - {return __tree_.__count_multi(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,size_type>::type - count(const _K2& __k) {return __tree_.__count_multi(__k);} -#endif - _LIBCPP_INLINE_VISIBILITY - iterator lower_bound(const key_type& __k) - {return __tree_.lower_bound(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator lower_bound(const key_type& __k) const - {return __tree_.lower_bound(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type - lower_bound(const _K2& __k) {return __tree_.lower_bound(__k);} - - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type - lower_bound(const _K2& __k) const {return __tree_.lower_bound(__k);} -#endif - - _LIBCPP_INLINE_VISIBILITY - iterator upper_bound(const key_type& __k) - {return __tree_.upper_bound(__k);} - _LIBCPP_INLINE_VISIBILITY - const_iterator upper_bound(const key_type& __k) const - {return __tree_.upper_bound(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type - upper_bound(const _K2& __k) {return __tree_.upper_bound(__k);} - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type - upper_bound(const _K2& __k) const {return __tree_.upper_bound(__k);} -#endif - - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) - {return __tree_.__equal_range_multi(__k);} - _LIBCPP_INLINE_VISIBILITY - pair equal_range(const key_type& __k) const - {return __tree_.__equal_range_multi(__k);} -#if _LIBCPP_STD_VER > 11 - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,pair>::type - equal_range(const _K2& __k) {return __tree_.__equal_range_multi(__k);} - template - _LIBCPP_INLINE_VISIBILITY - typename enable_if<__is_transparent<_Compare, _K2>::value,pair>::type - equal_range(const _K2& __k) const {return __tree_.__equal_range_multi(__k);} -#endif - -private: - typedef typename __base::__node __node; - typedef typename __base::__node_allocator __node_allocator; - typedef typename __base::__node_pointer __node_pointer; - typedef typename __base::__node_const_pointer __node_const_pointer; - typedef __map_node_destructor<__node_allocator> _Dp; - typedef unique_ptr<__node, _Dp> __node_holder; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - __node_holder __construct_node(); - template - __node_holder - __construct_node(_A0&& __a0); -#ifndef _LIBCPP_HAS_NO_VARIADICS - template - __node_holder __construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args); -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES -}; - -#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES - -template -multimap<_Key, _Tp, _Compare, _Allocator>::multimap(multimap&& __m, const allocator_type& __a) - : __tree_(_VSTD::move(__m.__tree_), __a) -{ - if (__a != __m.get_allocator()) - { - const_iterator __e = cend(); - while (!__m.empty()) - __tree_.__insert_multi(__e.__i_, - _VSTD::move(__m.__tree_.remove(__m.begin().__i_)->__value_)); - } -} - -template -typename multimap<_Key, _Tp, _Compare, _Allocator>::__node_holder -multimap<_Key, _Tp, _Compare, _Allocator>::__construct_node() -{ - __node_allocator& __na = __tree_.__node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.first)); - __h.get_deleter().__first_constructed = true; - __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.second)); - __h.get_deleter().__second_constructed = true; - return __h; -} - -template -template -typename multimap<_Key, _Tp, _Compare, _Allocator>::__node_holder -multimap<_Key, _Tp, _Compare, _Allocator>::__construct_node(_A0&& __a0) -{ - __node_allocator& __na = __tree_.__node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), _VSTD::forward<_A0>(__a0)); - __h.get_deleter().__first_constructed = true; - __h.get_deleter().__second_constructed = true; - return __h; -} - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template -template -typename multimap<_Key, _Tp, _Compare, _Allocator>::__node_holder -multimap<_Key, _Tp, _Compare, _Allocator>::__construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args) -{ - __node_allocator& __na = __tree_.__node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _VSTD::addressof(__h->__value_), - _VSTD::forward<_A0>(__a0), _VSTD::forward<_A1>(__a1), - _VSTD::forward<_Args>(__args)...); - __h.get_deleter().__first_constructed = true; - __h.get_deleter().__second_constructed = true; - return __h; -} - -#endif // _LIBCPP_HAS_NO_VARIADICS -#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES - -#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - -template -template -typename multimap<_Key, _Tp, _Compare, _Allocator>::iterator -multimap<_Key, _Tp, _Compare, _Allocator>::emplace(_Args&& ...__args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - iterator __r = __tree_.__node_insert_multi(__h.get()); - __h.release(); - return __r; -} - -template -template -typename multimap<_Key, _Tp, _Compare, _Allocator>::iterator -multimap<_Key, _Tp, _Compare, _Allocator>::emplace_hint(const_iterator __p, - _Args&& ...__args) -{ - __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); - iterator __r = __tree_.__node_insert_multi(__p.__i_, __h.get()); - __h.release(); - return __r; -} - -#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS) - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __x, - const multimap<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return __x.size() == __y.size() && _VSTD::equal(__x.begin(), __x.end(), __y.begin()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator< (const multimap<_Key, _Tp, _Compare, _Allocator>& __x, - const multimap<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return _VSTD::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x, - const multimap<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator> (const multimap<_Key, _Tp, _Compare, _Allocator>& __x, - const multimap<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x, - const multimap<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return !(__x < __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -bool -operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x, - const multimap<_Key, _Tp, _Compare, _Allocator>& __y) -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(multimap<_Key, _Tp, _Compare, _Allocator>& __x, - multimap<_Key, _Tp, _Compare, _Allocator>& __y) - _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) -{ - __x.swap(__y); -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_MAP diff --git a/libcxx/include/memory b/libcxx/include/memory deleted file mode 100644 index 93e8f6737..000000000 --- a/libcxx/include/memory +++ /dev/null @@ -1,5482 +0,0 @@ -// -*- C++ -*- -//===-------------------------- memory ------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_MEMORY -#define _LIBCPP_MEMORY - -/* - memory synopsis - -namespace std -{ - -struct allocator_arg_t { }; -constexpr allocator_arg_t allocator_arg = allocator_arg_t(); - -template struct uses_allocator; - -template -struct pointer_traits -{ - typedef Ptr pointer; - typedef
element_type; - typedef
difference_type; - - template using rebind =
; - - static pointer pointer_to(
); -}; - -template -struct pointer_traits -{ - typedef T* pointer; - typedef T element_type; - typedef ptrdiff_t difference_type; - - template using rebind = U*; - - static pointer pointer_to(
) noexcept; -}; - -template -struct allocator_traits -{ - typedef Alloc allocator_type; - typedef typename allocator_type::value_type - value_type; - - typedef Alloc::pointer | value_type* pointer; - typedef Alloc::const_pointer - | pointer_traits::rebind - const_pointer; - typedef Alloc::void_pointer - | pointer_traits::rebind - void_pointer; - typedef Alloc::const_void_pointer - | pointer_traits::rebind - const_void_pointer; - typedef Alloc::difference_type - | pointer_traits::difference_type - difference_type; - typedef Alloc::size_type - | make_unsigned::type - size_type; - typedef Alloc::propagate_on_container_copy_assignment - | false_type propagate_on_container_copy_assignment; - typedef Alloc::propagate_on_container_move_assignment - | false_type propagate_on_container_move_assignment; - typedef Alloc::propagate_on_container_swap - | false_type propagate_on_container_swap; - - template using rebind_alloc = Alloc::rebind::other | Alloc; - template using rebind_traits = allocator_traits>; - - static pointer allocate(allocator_type& a, size_type n); - static pointer allocate(allocator_type& a, size_type n, const_void_pointer hint); - - static void deallocate(allocator_type& a, pointer p, size_type n) noexcept; - - template - static void construct(allocator_type& a, T* p, Args&&... args); - - template - static void destroy(allocator_type& a, T* p); - - static size_type max_size(const allocator_type& a); // noexcept in C++14 - - static allocator_type - select_on_container_copy_construction(const allocator_type& a); -}; - -template <> -class allocator -{ -public: - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template struct rebind {typedef allocator<_Up> other;}; -}; - -template -class allocator -{ -public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef T* pointer; - typedef const T* const_pointer; - typedef typename add_lvalue_reference::type reference; - typedef typename add_lvalue_reference::type const_reference; - typedef T value_type; - - template struct rebind {typedef allocator other;}; - - allocator() noexcept; - allocator(const allocator&) noexcept; - template allocator(const allocator&) noexcept; - ~allocator(); - pointer address(reference x) const noexcept; - const_pointer address(const_reference x) const noexcept; - pointer allocate(size_type, allocator::const_pointer hint = 0); - void deallocate(pointer p, size_type n) noexcept; - size_type max_size() const noexcept; - template - void construct(U* p, Args&&... args); - template - void destroy(U* p); -}; - -template -bool operator==(const allocator&, const allocator&) noexcept; - -template -bool operator!=(const allocator&, const allocator&) noexcept; - -template -class raw_storage_iterator - : public iterator // purposefully not C++03 -{ -public: - explicit raw_storage_iterator(OutputIterator x); - raw_storage_iterator& operator*(); - raw_storage_iterator& operator=(const T& element); - raw_storage_iterator& operator++(); - raw_storage_iterator operator++(int); -}; - -template pair get_temporary_buffer(ptrdiff_t n) noexcept; -template void return_temporary_buffer(T* p) noexcept; - -template T* addressof(T& r) noexcept; - -template -ForwardIterator -uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator result); - -template -ForwardIterator -uninitialized_copy_n(InputIterator first, Size n, ForwardIterator result); - -template -void uninitialized_fill(ForwardIterator first, ForwardIterator last, const T& x); - -template -ForwardIterator -uninitialized_fill_n(ForwardIterator first, Size n, const T& x); - -template struct auto_ptr_ref {}; - -template -class auto_ptr -{ -public: - typedef X element_type; - - explicit auto_ptr(X* p =0) throw(); - auto_ptr(auto_ptr&) throw(); - template auto_ptr(auto_ptr&) throw(); - auto_ptr& operator=(auto_ptr&) throw(); - template auto_ptr& operator=(auto_ptr&) throw(); - auto_ptr& operator=(auto_ptr_ref r) throw(); - ~auto_ptr() throw(); - - typename add_lvalue_reference::type operator*() const throw(); - X* operator->() const throw(); - X* get() const throw(); - X* release() throw(); - void reset(X* p =0) throw(); - - auto_ptr(auto_ptr_ref) throw(); - template operator auto_ptr_ref() throw(); - template operator auto_ptr() throw(); -}; - -template -struct default_delete -{ - constexpr default_delete() noexcept = default; - template default_delete(const default_delete&) noexcept; - - void operator()(T*) const noexcept; -}; - -template -struct default_delete -{ - constexpr default_delete() noexcept = default; - void operator()(T*) const noexcept; - template void operator()(U*) const = delete; -}; - -template > -class unique_ptr -{ -public: - typedef see below pointer; - typedef T element_type; - typedef D deleter_type; - - // constructors - constexpr unique_ptr() noexcept; - explicit unique_ptr(pointer p) noexcept; - unique_ptr(pointer p, see below d1) noexcept; - unique_ptr(pointer p, see below d2) noexcept; - unique_ptr(unique_ptr&& u) noexcept; - unique_ptr(nullptr_t) noexcept : unique_ptr() { } - template - unique_ptr(unique_ptr&& u) noexcept; - template - unique_ptr(auto_ptr&& u) noexcept; - - // destructor - ~unique_ptr(); - - // assignment - unique_ptr& operator=(unique_ptr&& u) noexcept; - template unique_ptr& operator=(unique_ptr&& u) noexcept; - unique_ptr& operator=(nullptr_t) noexcept; - - // observers - typename add_lvalue_reference::type operator*() const; - pointer operator->() const noexcept; - pointer get() const noexcept; - deleter_type& get_deleter() noexcept; - const deleter_type& get_deleter() const noexcept; - explicit operator bool() const noexcept; - - // modifiers - pointer release() noexcept; - void reset(pointer p = pointer()) noexcept; - void swap(unique_ptr& u) noexcept; -}; - -template -class unique_ptr -{ -public: - typedef implementation-defined pointer; - typedef T element_type; - typedef D deleter_type; - - // constructors - constexpr unique_ptr() noexcept; - explicit unique_ptr(pointer p) noexcept; - unique_ptr(pointer p, see below d) noexcept; - unique_ptr(pointer p, see below d) noexcept; - unique_ptr(unique_ptr&& u) noexcept; - unique_ptr(nullptr_t) noexcept : unique_ptr() { } - - // destructor - ~unique_ptr(); - - // assignment - unique_ptr& operator=(unique_ptr&& u) noexcept; - unique_ptr& operator=(nullptr_t) noexcept; - - // observers - T& operator[](size_t i) const; - pointer get() const noexcept; - deleter_type& get_deleter() noexcept; - const deleter_type& get_deleter() const noexcept; - explicit operator bool() const noexcept; - - // modifiers - pointer release() noexcept; - void reset(pointer p = pointer()) noexcept; - void reset(nullptr_t) noexcept; - template void reset(U) = delete; - void swap(unique_ptr& u) noexcept; -}; - -template - void swap(unique_ptr& x, unique_ptr& y) noexcept; - -template - bool operator==(const unique_ptr& x, const unique_ptr& y); -template - bool operator!=(const unique_ptr& x, const unique_ptr& y); -template - bool operator<(const unique_ptr& x, const unique_ptr& y); -template - bool operator<=(const unique_ptr& x, const unique_ptr& y); -template - bool operator>(const unique_ptr& x, const unique_ptr& y); -template - bool operator>=(const unique_ptr& x, const unique_ptr& y); - -template - bool operator==(const unique_ptr& x, nullptr_t) noexcept; -template - bool operator==(nullptr_t, const unique_ptr& y) noexcept; -template - bool operator!=(const unique_ptr& x, nullptr_t) noexcept; -template - bool operator!=(nullptr_t, const unique_ptr& y) noexcept; - -template - bool operator<(const unique_ptr& x, nullptr_t); -template - bool operator<(nullptr_t, const unique_ptr& y); -template - bool operator<=(const unique_ptr& x, nullptr_t); -template - bool operator<=(nullptr_t, const unique_ptr& y); -template - bool operator>(const unique_ptr& x, nullptr_t); -template - bool operator>(nullptr_t, const unique_ptr& y); -template - bool operator>=(const unique_ptr& x, nullptr_t); -template - bool operator>=(nullptr_t, const unique_ptr& y); - -class bad_weak_ptr - : public std::exception -{ - bad_weak_ptr() noexcept; -}; - -template unique_ptr make_unique(Args&&... args); // C++14 -template unique_ptr make_unique(size_t n); // C++14 -template unspecified make_unique(Args&&...) = delete; // C++14, T == U[N] - -template -class shared_ptr -{ -public: - typedef T element_type; - - // constructors: - constexpr shared_ptr() noexcept; - template explicit shared_ptr(Y* p); - template shared_ptr(Y* p, D d); - template shared_ptr(Y* p, D d, A a); - template shared_ptr(nullptr_t p, D d); - template shared_ptr(nullptr_t p, D d, A a); - template shared_ptr(const shared_ptr& r, T *p) noexcept; - shared_ptr(const shared_ptr& r) noexcept; - template shared_ptr(const shared_ptr& r) noexcept; - shared_ptr(shared_ptr&& r) noexcept; - template shared_ptr(shared_ptr&& r) noexcept; - template explicit shared_ptr(const weak_ptr& r); - template shared_ptr(auto_ptr&& r); - template shared_ptr(unique_ptr&& r); - shared_ptr(nullptr_t) : shared_ptr() { } - - // destructor: - ~shared_ptr(); - - // assignment: - shared_ptr& operator=(const shared_ptr& r) noexcept; - template shared_ptr& operator=(const shared_ptr& r) noexcept; - shared_ptr& operator=(shared_ptr&& r) noexcept; - template shared_ptr& operator=(shared_ptr&& r); - template shared_ptr& operator=(auto_ptr&& r); - template shared_ptr& operator=(unique_ptr&& r); - - // modifiers: - void swap(shared_ptr& r) noexcept; - void reset() noexcept; - template void reset(Y* p); - template void reset(Y* p, D d); - template void reset(Y* p, D d, A a); - - // observers: - T* get() const noexcept; - T& operator*() const noexcept; - T* operator->() const noexcept; - long use_count() const noexcept; - bool unique() const noexcept; - explicit operator bool() const noexcept; - template bool owner_before(shared_ptr const& b) const; - template bool owner_before(weak_ptr const& b) const; -}; - -// shared_ptr comparisons: -template - bool operator==(shared_ptr const& a, shared_ptr const& b) noexcept; -template - bool operator!=(shared_ptr const& a, shared_ptr const& b) noexcept; -template - bool operator<(shared_ptr const& a, shared_ptr const& b) noexcept; -template - bool operator>(shared_ptr const& a, shared_ptr const& b) noexcept; -template - bool operator<=(shared_ptr const& a, shared_ptr const& b) noexcept; -template - bool operator>=(shared_ptr const& a, shared_ptr const& b) noexcept; - -template - bool operator==(const shared_ptr& x, nullptr_t) noexcept; -template - bool operator==(nullptr_t, const shared_ptr& y) noexcept; -template - bool operator!=(const shared_ptr& x, nullptr_t) noexcept; -template - bool operator!=(nullptr_t, const shared_ptr& y) noexcept; -template - bool operator<(const shared_ptr& x, nullptr_t) noexcept; -template -bool operator<(nullptr_t, const shared_ptr& y) noexcept; -template - bool operator<=(const shared_ptr& x, nullptr_t) noexcept; -template - bool operator<=(nullptr_t, const shared_ptr& y) noexcept; -template - bool operator>(const shared_ptr& x, nullptr_t) noexcept; -template - bool operator>(nullptr_t, const shared_ptr& y) noexcept; -template - bool operator>=(const shared_ptr& x, nullptr_t) noexcept; -template - bool operator>=(nullptr_t, const shared_ptr& y) noexcept; - -// shared_ptr specialized algorithms: -template void swap(shared_ptr& a, shared_ptr& b) noexcept; - -// shared_ptr casts: -template - shared_ptr static_pointer_cast(shared_ptr const& r) noexcept; -template - shared_ptr dynamic_pointer_cast(shared_ptr const& r) noexcept; -template - shared_ptr const_pointer_cast(shared_ptr const& r) noexcept; - -// shared_ptr I/O: -template - basic_ostream& operator<< (basic_ostream& os, shared_ptr const& p); - -// shared_ptr get_deleter: -template D* get_deleter(shared_ptr const& p) noexcept; - -template - shared_ptr make_shared(Args&&... args); -template - shared_ptr allocate_shared(const A& a, Args&&... args); - -template -class weak_ptr -{ -public: - typedef T element_type; - - // constructors - constexpr weak_ptr() noexcept; - template weak_ptr(shared_ptr const& r) noexcept; - weak_ptr(weak_ptr const& r) noexcept; - template weak_ptr(weak_ptr const& r) noexcept; - weak_ptr(weak_ptr&& r) noexcept; // C++14 - template weak_ptr(weak_ptr&& r) noexcept; // C++14 - - // destructor - ~weak_ptr(); - - // assignment - weak_ptr& operator=(weak_ptr const& r) noexcept; - template weak_ptr& operator=(weak_ptr const& r) noexcept; - template weak_ptr& operator=(shared_ptr const& r) noexcept; - weak_ptr& operator=(weak_ptr&& r) noexcept; // C++14 - template weak_ptr& operator=(weak_ptr&& r) noexcept; // C++14 - - // modifiers - void swap(weak_ptr& r) noexcept; - void reset() noexcept; - - // observers - long use_count() const noexcept; - bool expired() const noexcept; - shared_ptr lock() const noexcept; - template bool owner_before(shared_ptr const& b) const; - template bool owner_before(weak_ptr const& b) const; -}; - -// weak_ptr specialized algorithms: -template void swap(weak_ptr& a, weak_ptr& b) noexcept; - -// class owner_less: -template struct owner_less; - -template -struct owner_less> - : binary_function, shared_ptr, bool> -{ - typedef bool result_type; - bool operator()(shared_ptr const&, shared_ptr const&) const; - bool operator()(shared_ptr const&, weak_ptr const&) const; - bool operator()(weak_ptr const&, shared_ptr const&) const; -}; - -template -struct owner_less> - : binary_function, weak_ptr, bool> -{ - typedef bool result_type; - bool operator()(weak_ptr const&, weak_ptr const&) const; - bool operator()(shared_ptr const&, weak_ptr const&) const; - bool operator()(weak_ptr const&, shared_ptr const&) const; -}; - -template -class enable_shared_from_this -{ -protected: - constexpr enable_shared_from_this() noexcept; - enable_shared_from_this(enable_shared_from_this const&) noexcept; - enable_shared_from_this& operator=(enable_shared_from_this const&) noexcept; - ~enable_shared_from_this(); -public: - shared_ptr shared_from_this(); - shared_ptr shared_from_this() const; -}; - -template - bool atomic_is_lock_free(const shared_ptr* p); -template - shared_ptr atomic_load(const shared_ptr* p); -template - shared_ptr atomic_load_explicit(const shared_ptr* p, memory_order mo); -template - void atomic_store(shared_ptr* p, shared_ptr r); -template - void atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo); -template - shared_ptr atomic_exchange(shared_ptr* p, shared_ptr r); -template - shared_ptr - atomic_exchange_explicit(shared_ptr* p, shared_ptr r, memory_order mo); -template - bool - atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, shared_ptr w); -template - bool - atomic_compare_exchange_strong( shared_ptr* p, shared_ptr* v, shared_ptr w); -template - bool - atomic_compare_exchange_weak_explicit(shared_ptr* p, shared_ptr* v, - shared_ptr w, memory_order success, - memory_order failure); -template - bool - atomic_compare_exchange_strong_explicit(shared_ptr* p, shared_ptr* v, - shared_ptr w, memory_order success, - memory_order failure); -// Hash support -template struct hash; -template struct hash >; -template struct hash >; - -// Pointer safety -enum class pointer_safety { relaxed, preferred, strict }; -void declare_reachable(void *p); -template T *undeclare_reachable(T *p); -void declare_no_pointers(char *p, size_t n); -void undeclare_no_pointers(char *p, size_t n); -pointer_safety get_pointer_safety() noexcept; - -void* align(size_t alignment, size_t size, void*& ptr, size_t& space); - -} // std - -*/ - -#include <__config> -#include -#include -#include -#include -#include -#include -#include -#include -#include <__functional_base> -#include -#include -#include -#if defined(_LIBCPP_NO_EXCEPTIONS) - #include -#endif - -#if __has_feature(cxx_atomic) && !defined(_LIBCPP_HAS_NO_THREADS) -# include -#endif - -#include <__undef_min_max> -#include <__undef___deallocate> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -// addressof moved to <__functional_base> - -template class allocator; - -template <> -class _LIBCPP_TYPE_VIS_ONLY allocator -{ -public: - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template struct rebind {typedef allocator<_Up> other;}; -}; - -template <> -class _LIBCPP_TYPE_VIS_ONLY allocator -{ -public: - typedef const void* pointer; - typedef const void* const_pointer; - typedef const void value_type; - - template struct rebind {typedef allocator<_Up> other;}; -}; - -// pointer_traits - -template -struct __has_element_type -{ -private: - struct __two {char __lx; char __lxx;}; - template static __two __test(...); - template static char __test(typename _Up::element_type* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - -template ::value> -struct __pointer_traits_element_type; - -template -struct __pointer_traits_element_type<_Ptr, true> -{ - typedef typename _Ptr::element_type type; -}; - -#ifndef _LIBCPP_HAS_NO_VARIADICS - -template